begin process at 2012 02 13 02:21:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > MASTERMIND NUMERIQUE [VERSION 2][TOUT COMPILATEUR]

MASTERMIND NUMERIQUE [VERSION 2][TOUT COMPILATEUR]


 Information sur la source

Note :
Aucune note
Catégorie :Jeux Niveau :Initié Date de création :18/05/2002 Date de mise à jour :21/05/2002 21:50:37 Vu :7 611

Auteur : guguy

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Ceci est un jeux de MasterMind utilisant les chiffres de 1 à 6 pour remplacer les 6 couleurs.  

Source

  • /* 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
}



 Conclusion

Le code peut paraître un peu "flou" par endroit, j'en suis désolé cependant il est difficile de faire beaucoup mieux tout en respectant les règles du MasterMind...


 Sources du même auteur

CALCULE DU NOMBRE DE DIAGONALES D'UN POLYGONE EN FONCTION DU...
NOMBRE DE LIGNE DANS UN FICHIER [VERSION C++]
Source avec Zip PROGRAMME DE CALCULE DE LA DISTANCE ENTRE DEUX POINTS SUR UN...
TUTORIAL SUR L'UTILISATION DU TYPE VA_LIST
CRYPTAGE/DECRYPTAGE DE FICHIERS [VERSION 2, TOUT COMPILATEUR...

 Sources de la même categorie

Source avec Zip Source avec une capture JEUX SERPENT par antho974
Source avec Zip Source avec une capture PENDU EN SDL par Damsou91
Source avec Zip STATE MACHINE MODIFICATION MATH BUCKHAM par billybones79
Source avec Zip AUTRE GRILLE DE SUDOKU par Eneur
Source avec Zip Source avec une capture SOKOBAN EN C POUR DÉBUTANT (VERSION AMÉLIORÉE BASÉE SUR LE T... par eustatika

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales