Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- NAIRI Anwar & PAUL Océane
- TP 1-E
- C++
- Mini projet 1 : Mastermind
- Ce programme est une simulation simplifié du célèbre jeu "Mastermind" */
- #include <iostream> // Bibliothèque de gestion des flux d'entrée/sortie
- #include <stdlib.h> // Bibliothèque de gestion des fonctions aléatoires
- #include <time.h> // Bibliothèque de gestion des horaires système
- using namespace std;
- const int NB_MIN = 5; // Nombre d'essais minimum
- const int NB_MAX = 20; // Nombre d'essais maximum
- int main()
- {
- cout << "Mini Projet 1 : Mastermind\n" << endl;
- int nb_essais; // Nombre d'essais choisit par l'utilsateur
- int pion1, pion2, pion3, pion4;//la séquence des pions a deviner en chiffres
- int nb_pionsValides;// nombre de pions valides de la séquence saisie par le joueur
- int cptEssais = 0;//nombre d'essais faits par l'utilisateur initialisé a 0 pour le début du programme
- char couleur_pion1, couleur_pion2, couleur_pion3, couleur_pion4;//séquence des pions a deviner avec les initiales de leurs couleurs
- char choixCouleur1, choixCouleur2, choixCouleur3, choixCouleur4;//séquence des pions saisis par le joueur avec les initiales de leurs couleurs
- bool courant_valide;//booléen permettant de valider chaque élément de la séquence de pions saisi par le joueur
- //boucle répéter tant que l'utilisateur souhaite recommencer une partie du jeu
- do
- {
- // boucle se repéte tant que la valeur saisie est plus petite que le nombre d'essais mini et plus grand que le nombre d'essais maxi
- do
- {
- cout << "\n Entrez le nombre d'essais que vous souhaitez." << endl;
- cout << " Nombre d'essais compris entre 5 et 20." << endl;
- cout << "\n Nombre d'essais : ";
- cin >> nb_essais;
- }while (nb_essais < NB_MIN || nb_essais > NB_MAX);
- //Séquence des 4 pions en chiffres choisis aléatoirement par l'ordinateur
- srand(time(NULL));
- pion1 = ( rand() % 6 ) + 1;
- pion2 = ( rand() % 6 ) + 1;
- pion3 = ( rand() % 6 ) + 1;
- pion4 = ( rand() % 6 ) + 1;
- cout << "\n " << pion1 << " " << pion2 << " " << pion3 << " " << pion4 << endl;
- //association du chiffre pion1 par un caractere couleur_pion1 en fonction du chiffre choisi par l'ordinateur
- switch (pion1)
- {
- case 1 : couleur_pion1 = 'R'; break;
- case 2 : couleur_pion1 = 'V'; break;
- case 3 : couleur_pion1 = 'J'; break;
- case 4 : couleur_pion1 = 'M'; break;
- case 5 : couleur_pion1 = 'B'; break;
- case 6 : couleur_pion1 = 'C'; break;
- }
- //association du chiffre pion2 par un caractere couleur_pion2 en fonction du chiffre choisi par l'ordinateur
- switch (pion2)
- {
- case 1 : couleur_pion2 = 'R'; break;
- case 2 : couleur_pion2 = 'V'; break;
- case 3 : couleur_pion2 = 'J'; break;
- case 4 : couleur_pion2 = 'M'; break;
- case 5 : couleur_pion2 = 'B'; break;
- case 6 : couleur_pion2 = 'C'; break;
- }
- //association du chiffre pion3 par un caractere couleur_pion3 en fonction du chiffre choisi par l'ordinateur
- switch (pion3)
- {
- case 1 : couleur_pion3 = 'R'; break;
- case 2 : couleur_pion3 = 'V'; break;
- case 3 : couleur_pion3 = 'J'; break;
- case 4 : couleur_pion3 = 'M'; break;
- case 5 : couleur_pion3 = 'B'; break;
- case 6 : couleur_pion3 = 'C'; break;
- }
- //association du chiffre pion4 par un caractere couleur_pion4 en fonction du chiffre choisi par l'ordinateur
- switch (pion4)
- {
- case 1 : couleur_pion4 = 'R'; break;
- case 2 : couleur_pion4 = 'V'; break;
- case 3 : couleur_pion4 = 'J'; break;
- case 4 : couleur_pion4 = 'M'; break;
- case 5 : couleur_pion4 = 'B'; break;
- case 6 : couleur_pion4 = 'C'; break;
- }
- cout << "\n " << couleur_pion1 << " " << couleur_pion2 << " " << couleur_pion3 << " " << couleur_pion4<<endl;
- //affichage de rappel des couleurs disponibles pour les différents pions
- cout << " Entrez une suite de 4 couleurs parmi les couleurs suivantes :" << endl;
- cout << " R - Rouge\n";
- cout << " V - Vert\n";
- cout << " J - Jaune\n";
- cout << " M - Magenta\n";
- cout << " B - Bleu\n";
- cout << " C - Cyan\n";
- do//boucle se répéte tant que le joueur n'a pas deviné la séquence des 4 pions de l'ordinateur et qu'il n'a pas atteint le nombre d'essais qu'il a saisit
- {
- cptEssais++;
- nb_pionsValides = 0;//initialisation du nombre de pions valides a chaque fois que l'utilisateur commence a saisir une nouvelle séquence
- do//boucle se répéte tant que l'utilisateur n'a pas saisi une séquence valide
- {
- cout << " Saisissez l'intiale de la premiere couleur en majuscule : ";
- cin >> choixCouleur1;
- //test du premier élément saisi par l'utilisateur : si l'élément saisi n'est aucune initiale des couleurs proposées, alors invalidité
- if (choixCouleur1 != 'R' && choixCouleur1 != 'V' && choixCouleur1 != 'J' && choixCouleur1 != 'M' && choixCouleur1 != 'B' && choixCouleur1 != 'C')
- courant_valide = false;
- //sinon on continue a tester le deuxième élement
- else
- {
- cout << " Saisissez l'intiale de la deuxieme couleur : ";
- cin >> choixCouleur2;
- if (choixCouleur2 != 'R' && choixCouleur2 != 'V' && choixCouleur2 != 'J' && choixCouleur2 != 'M' && choixCouleur2 != 'B' && choixCouleur2 != 'C')
- courant_valide = false;
- else
- {
- cout << " Saisissez l'intiale de la troisieme couleur : ";
- cin >> choixCouleur3;
- if (choixCouleur3 != 'R' && choixCouleur3 != 'V' && choixCouleur3 != 'J' && choixCouleur3 != 'M' && choixCouleur3 != 'B' && choixCouleur3 != 'C')
- courant_valide = false;
- else
- {
- cout << " Saisissez l'intiale de la quatrieme couleur : ";
- cin >> choixCouleur4;
- if (choixCouleur4 != 'R' && choixCouleur4 != 'V' && choixCouleur4 != 'J' && choixCouleur4 != 'M' && choixCouleur4 != 'B' && choixCouleur4 != 'C')
- courant_valide = false;
- else
- courant_valide = true;
- }
- }
- }
- if (!courant_valide)//si un ou plusieurs éléments saisis par l'utilisateur n'est pas valide
- {
- cout << " Votre suite de couleur est fausse.\n" << endl;
- cout << " Entrez une suite de 4 couleurs parmi les couleurs suivantes :" << endl;
- cout << " R - Rouge\n";
- cout << " V - Vert\n";
- cout << " J - Jaune\n";
- cout << " M - Magenta\n";
- cout << " B - Bleu\n";
- cout << " C - Cyan\n";
- }
- }while (!courant_valide);
- cout << " Les couleurs sont bonnes " << endl;
- if(couleur_pion1==choixCouleur1)
- nb_pionsValides++;
- if(couleur_pion2==choixCouleur2)
- nb_pionsValides++;
- if(couleur_pion3==choixCouleur3)
- nb_pionsValides++;
- if(couleur_pion4==choixCouleur4)
- nb_pionsValides++;
- cout << " Votre sequence saisie est " << choixCouleur1 << choixCouleur2 << choixCouleur3 << choixCouleur4 << endl;
- cout << " Vous avez " << nb_pionsValides << " pion(s) valide(s)." << endl;
- if (nb_pionsValides<4)
- cout << " Essayez encore ! (nombre d'essais restants : " << ( nb_essais - cptEssais ) << ").\n" << endl;
- }
- while(nb_pionsValides < 4 && cptEssais < nb_essais);
- //Affichage du résultat final de la partie
- if (nb_pionsValides == 4)//si le joueur a deviné les 4 pions
- cout << " Gagne !! Champion :-) !" << endl;
- else//si le joueur est arrivé au nombre maxi d'essais et qu'il n'a pas deviné la séquence des pions
- cout << " Perdu... !" << endl;
- cout << " La sequence a deviner etait : " << couleur_pion1 << " " << couleur_pion2 << " " << couleur_pion3 << " " << couleur_pion4<<endl;
- //relance de la partie
- cout << " Voulez-vous recommencer une partie ? ";
- cout << " Repondre par \"o\" pour oui et \"n\" pour non : ";
- cin >> reponse;
- }
- while(reponse=='o');//condition de la relance si l'utilisateur repond par 'o' : on recommence la boucle
- return 0;
- }
Add Comment
Please, Sign In to add comment