Mastermind 2


Etwas komplizierter wird es hier: Es können im Vektor auch selbst zusammengeschriebene Strukturen stehen.

struct bezeichner
{
  string wort;
  char plusminus;
};

 

bezeichner b[10];//Dies ist der Vektor

 

b[0].wort = "AlleMenschen";

b[0].plusminus = '+';


Noch etwas komplizierter wird es hier: Es können im Vektor auch selbst zusammengeschriebene Objekte stehen! Ein objektorientiertes Beispiel folgt hier:

Bitte achte hier auf die beiden Konstruktoren und deren Aufrufe.

//mindcl.cpp Stand: 9. 1. 2016 mit einer Klasse
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

const int RATEREIHE=4;
const int MAX=6;

class Mind
{
    private:
        int mi;
    public:
        Mind(){    }//Konstruktor 1
        Mind(int mind){ mi=mind; }//Konstruktor 2
        void print() { cout << mi; }
        void get() { cin >> mi; }
        bool isEqual(Mind m2)
         {
             return (mi==m2.mi)?true:false;
         }
}; //class

int main()
{
   Mind geraten[RATEREIHE];//Konstruktor 1 wird aufgerufen
   Mind geheim[MAX] = {1,2,3,4,5,6};//Konstruktor 2 wird aufgerufen
   cout << "Mastermind   4 von 6:  1 bis 6:  Die 9 beendet das Spiel." << endl;
   cout << "Blau=1, gelb=2, gruen=3, rot=4, braun=5, orange=6." << endl;
   cout << "---------------------------------------------------------" << endl;
   cout << "Bitte je 4 Ziffern eingeben: 1 Leertaste 2 Leertaste 5 Leertaste 6." << endl;
   cout << endl;
   system("pause");
   srand(time(NULL));
   //Mischen:
   for (int k=0; k<MAX; k++)
   {
        int zufall = rand()%MAX;
     Mind temp = geheim[k];
        geheim[k] = geheim[zufall];
        geheim[zufall] = temp;
   }

   //Tipps:
   for (int z=1; /* Auslassung */ ; z++)
   {
        int schwarz=0;
        cout << " Dein " << z << ". Tipp, bitte: ";
        for (int y=0; y<RATEREIHE; y++)
        { geraten[y].get();
        if (geraten[0].isEqual(9))//Konstruktor 2 wird aufgerufen
        {
        for (int v=0; v<RATEREIHE; v++) geheim[v].print();
        cout << endl;
        system("pause");
        exit(0);
        }
   
        if (geraten[y].isEqual(geheim[y]))
       schwarz++;
    
   }//for y
   cout << "                               " << schwarz << " Schwarze";
   if (schwarz==1) cout << "r";
   if (schwarz==4)
     {
         cout << endl << "Du hast es geschafft ..." << endl;
         system("pause");
        exit(0);
     }
   int weiss=0;
   for (int x=0; x<3; x++)
    { if (geraten[x].isEqual(geheim[x+1])) weiss++;
     if (geraten[x+1].isEqual(geheim[x])) weiss++;
 }//for x
 
   for (int w=0; w<2; w++)
    {
    if (geraten[w].isEqual(geheim[w+2])) weiss++;
    if (geraten[w+2].isEqual(geheim[w])) weiss++;
    }//for w
   if (geraten[0].isEqual(geheim[3])) weiss++;
   if (geraten[3].isEqual(geheim[0])) weiss++;
   cout << ", " << weiss << " Weisse";
   if (weiss==1) cout << "r";
   cout << endl;
   }//for z
  
}//main


Hier im nächsten Programm sind es Objekte und Funktionen, die diese Objekte in Variablen hineinschreiben.

 //bibleclass.cpp ist fuer Dev-C++ geschrieben.
//Es mischt auch. (Verbesserte Fassung: 24.10.2013, 20.11.2013)

#include <iostream> //std::cout, cout
#include <cstdlib> //srand(time(NULL)),
#include <ctime> //rand
#include <conio.h> //getche(), getch()

using namespace std;

const int MAX=3; //int
 
//boolean
int gut;
int merker[MAX];

class bezeichner
{
private:
string worte;
string stelle;
char posneg;
public:
bezeichner() {}
void invers(string inputwert)
{
worte = inputwert;
}
void instelle(string inputst)
{
stelle=inputst;
}
void input(char in)
{ posneg=in; }
void zeigworte()
{
cout << worte;
}
void zeigstelle()
{
cout << " " << stelle;
}
int vergleich(int in)
{
return (in==posneg)?true:false;
}
};//class Ende

int main()
{
cout << "Bible-Quiz";
cout <<endl<< "----++----";
bezeichner b[MAX];
char ein;
//Zufall initialisieren:
srand(time(NULL));
b[0].invers("Wenn jemand nicht im Wort..");
b[0].instelle("Jak.1,3");
b[0].input('-');
b[1].invers("Das Wort ist wie ein zweischneidiges");
b[1].instelle("Hebr.4,12");
b[1].input('+');
b[2].invers("So sehr hat Gott die Welt geliebt");
b[2].instelle("Joh.3,16");
b[2].input('+');
 
//Mischen:
for (int i=0; i<MAX; i++)
{
int k=rand() % MAX;
bezeichner temp = b[i]; //Objekt b[i] speichern
b[i] = b[k]; //Tausch
b[k] = temp; //Tausch
}//for zum Mischen

//Entscheidung abfragen:
for (int j=0; j<MAX; j++)
{
do {
cout <<endl<< "Tippen Sie entweder PLUS oder MINUS + -!";
cout <<endl<< "Wie wuerden Sie entscheiden? > ",
b[j].zeigworte();
b[j].zeigstelle();
//Eingabe:
ein = getche();
if (b[j].vergleich(ein) == true) //(ein==b[j].posneg)
{
cout << " Richtig!";
merker[j] = true;
}//if richtig

else
{
cout << " Falsch, leider";
merker[j] = false;
}//else
} while ( ein !='+' && ein !='-' );
}//for j

//Zaehle die richtigen:
int zus=0;
for (int L=0; L<MAX; L++)
{
zus += merker[L];
}//for L
cout <<endl;
if (zus >2) cout <<endl<< "Exzellent ";
if (zus >1) cout << " gut geraten!";
else cout <<endl<< "Wertung eher nicht so gut.";
cout <<endl<< "-> Eine beliebige Taste druecken, bitte!";
getch();
return 0;
} //main()


Hier geht es weiter zu Beispiel >>