- /* MasterMind version 2.0 par TANGUY MORET */
- /* Code source sous license GPL */
-
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
-
- using namespace std;
-
- int combinaison[4], combinaison_joueur[4];
- bool gagne, end;
- int count, count_combinaison[6], count_total, chiffres_bien_places, nombredechiffres[6];
-
- /* Variables : combinaison[4] : enregistre la combinaison calculé,
- combinaison_joueur[4] : enregistre la combinaison du joueur,
- gagne : 1=OUI 0=NON, end : à t-on finis? 1=OUI 0=NON,
- count : nombre d'essais, count_combinaison[6] : nombre de chaque chiffres
- dans la combinaison du joueur, count_total : nombre de chiffres bon (bien ou mal
- placés, chiffres_bien_places : nombre de chiffres bien placés,
- nombredechiffres[6] : nombre de chaque chiffres dans la combinaison de l'ordi. */
-
- void creation_combinaison(void) {
- srand((unsigned) time(NULL)); /* initialise srand avec le nombre de secondes depuis 1970 */
- for(int i=0;i<4;i++) { combinaison[i]=(rand()%6)+1;
- switch(combinaison[i]) {
- case 1: nombredechiffres[0]++;
- break;
- case 2: nombredechiffres[1]++;
- break;
- case 3: nombredechiffres[2]++;
- break;
- case 4: nombredechiffres[3]++;
- break;
- case 5: nombredechiffres[4]++;
- break;
- case 6: nombredechiffres[5]++;
- };
- }
- }
-
- void tester_combinaison(void) {
- for(int i=0;i<4;i++) {
- if(combinaison_joueur[i]==combinaison[i]) chiffres_bien_places++;
- if(combinaison_joueur[i]==combinaison[0] || combinaison_joueur[i]==combinaison[1] || combinaison_joueur[i]==combinaison[2] || combinaison_joueur[i]==combinaison[3]){
- count_combinaison[(combinaison_joueur[i])-1]++;}
- }
- for(int i=0;i<6;i++) { /* On veut empecher que plusieurs chiffres identiques correspondant
- à un chiffre de la combinaison soit considérés comme plusieurs "bons" chiffres */
- if(count_combinaison[i]>nombredechiffres[i])
- count_combinaison[i]=nombredechiffres[i];}
- }
-
- void dire_bon_chiffres(void) {
- for(int i=0;i<6;i++) count_total+=count_combinaison[i];
- cout << "\n\n " << count_total << " chiffres bons\n";
- cout << " dont " << chiffres_bien_places << " chiffres bien placés\n";
- }
-
- void _gagne(void) {
- char reponse;
- if(chiffres_bien_places==4) {
- cout << "Vous avez gagne!\n";
- gagne=1;}
- }
-
- void reset_1(void) {
- for(int i=0;i<4;i++) {
- combinaison[i]=chiffres_bien_places=combinaison_joueur[i]=0;}
- for(int i=0;i<6;i++) nombredechiffres[i]=0;
- gagne=end=count=count_total=0;
- }
-
- void reset_2(void) {
- chiffres_bien_places=count_total=0; // On reinitialise les résultats
- for(int i=0;i<6;i++) count_combinaison[i]=0;
- }
-
- bool rejouer(void) {
- char reponse;
- cout << "\n\nVoulez-vous rejouer? (o/n) ";
- cin >> reponse;
- cin.ignore();
- switch(reponse) {
- case 'o': end=0;
- break;
- case 'n': end=1;
- break;
- default: break;};
- }
-
- void jouer(void) {
- reset_1(); // On reinitialise tout
- cout << "\033[2J";
- cout << "\n\t\t\tMasterMind\n\n";
- creation_combinaison();
- while(!gagne&&count!=10) {
- count++;
- reset_2(); // On reinitialise les donnés du joueur
- cout << "Entrez une combinaison de 4 chiffres compris entre 1 et 6 (123 pour sortir) : \n";
- for(int i=0;i<4;i++) {
- cin >> combinaison_joueur[i];
- switch(combinaison_joueur[i]) {
- case 123: exit(1);
- default: break;};
- }
- tester_combinaison();
- dire_bon_chiffres();
- _gagne();}
- if(count==10) cout << "\n10 essais!\n";
- }
-
-
- int main()
- {
- do {
- jouer();
- rejouer(); // Encore une fois?
- }while(!end); // Sinon on arrête le programme
- }
-
-
/* MasterMind version 2.0 par TANGUY MORET */
/* Code source sous license GPL */
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int combinaison[4], combinaison_joueur[4];
bool gagne, end;
int count, count_combinaison[6], count_total, chiffres_bien_places, nombredechiffres[6];
/* Variables : combinaison[4] : enregistre la combinaison calculé,
combinaison_joueur[4] : enregistre la combinaison du joueur,
gagne : 1=OUI 0=NON, end : à t-on finis? 1=OUI 0=NON,
count : nombre d'essais, count_combinaison[6] : nombre de chaque chiffres
dans la combinaison du joueur, count_total : nombre de chiffres bon (bien ou mal
placés, chiffres_bien_places : nombre de chiffres bien placés,
nombredechiffres[6] : nombre de chaque chiffres dans la combinaison de l'ordi. */
void creation_combinaison(void) {
srand((unsigned) time(NULL)); /* initialise srand avec le nombre de secondes depuis 1970 */
for(int i=0;i<4;i++) { combinaison[i]=(rand()%6)+1;
switch(combinaison[i]) {
case 1: nombredechiffres[0]++;
break;
case 2: nombredechiffres[1]++;
break;
case 3: nombredechiffres[2]++;
break;
case 4: nombredechiffres[3]++;
break;
case 5: nombredechiffres[4]++;
break;
case 6: nombredechiffres[5]++;
};
}
}
void tester_combinaison(void) {
for(int i=0;i<4;i++) {
if(combinaison_joueur[i]==combinaison[i]) chiffres_bien_places++;
if(combinaison_joueur[i]==combinaison[0] || combinaison_joueur[i]==combinaison[1] || combinaison_joueur[i]==combinaison[2] || combinaison_joueur[i]==combinaison[3]){
count_combinaison[(combinaison_joueur[i])-1]++;}
}
for(int i=0;i<6;i++) { /* On veut empecher que plusieurs chiffres identiques correspondant
à un chiffre de la combinaison soit considérés comme plusieurs "bons" chiffres */
if(count_combinaison[i]>nombredechiffres[i])
count_combinaison[i]=nombredechiffres[i];}
}
void dire_bon_chiffres(void) {
for(int i=0;i<6;i++) count_total+=count_combinaison[i];
cout << "\n\n " << count_total << " chiffres bons\n";
cout << " dont " << chiffres_bien_places << " chiffres bien placés\n";
}
void _gagne(void) {
char reponse;
if(chiffres_bien_places==4) {
cout << "Vous avez gagne!\n";
gagne=1;}
}
void reset_1(void) {
for(int i=0;i<4;i++) {
combinaison[i]=chiffres_bien_places=combinaison_joueur[i]=0;}
for(int i=0;i<6;i++) nombredechiffres[i]=0;
gagne=end=count=count_total=0;
}
void reset_2(void) {
chiffres_bien_places=count_total=0; // On reinitialise les résultats
for(int i=0;i<6;i++) count_combinaison[i]=0;
}
bool rejouer(void) {
char reponse;
cout << "\n\nVoulez-vous rejouer? (o/n) ";
cin >> reponse;
cin.ignore();
switch(reponse) {
case 'o': end=0;
break;
case 'n': end=1;
break;
default: break;};
}
void jouer(void) {
reset_1(); // On reinitialise tout
cout << "\033[2J";
cout << "\n\t\t\tMasterMind\n\n";
creation_combinaison();
while(!gagne&&count!=10) {
count++;
reset_2(); // On reinitialise les donnés du joueur
cout << "Entrez une combinaison de 4 chiffres compris entre 1 et 6 (123 pour sortir) : \n";
for(int i=0;i<4;i++) {
cin >> combinaison_joueur[i];
switch(combinaison_joueur[i]) {
case 123: exit(1);
default: break;};
}
tester_combinaison();
dire_bon_chiffres();
_gagne();}
if(count==10) cout << "\n10 essais!\n";
}
int main()
{
do {
jouer();
rejouer(); // Encore une fois?
}while(!end); // Sinon on arrête le programme
}