Guest User

Untitled

a guest
Jan 19th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.67 KB | None | 0 0
  1. /*
  2. NAIRI Anwar & PAUL Océane
  3. TP 1-E
  4. C++
  5. Mini projet 1 : Mastermind
  6. Ce programme est une simulation simplifié du célèbre jeu "Mastermind" */
  7.  
  8.  
  9. #include <iostream> // Bibliothèque de gestion des flux d'entrée/sortie
  10. #include <stdlib.h> // Bibliothèque de gestion des fonctions aléatoires
  11. #include <time.h> // Bibliothèque de gestion des horaires système
  12.  
  13.  
  14. using namespace std;
  15.  
  16. const int NB_MIN = 5; // Nombre d'essais minimum
  17. const int NB_MAX = 20; // Nombre d'essais maximum
  18.  
  19. int main()
  20. {
  21. cout << "Mini Projet 1 : Mastermind\n" << endl;
  22.  
  23. int nb_essais; // Nombre d'essais choisit par l'utilsateur
  24. int pion1, pion2, pion3, pion4;//la séquence des pions a deviner en chiffres
  25. int nb_pionsValides;// nombre de pions valides de la séquence saisie par le joueur
  26. int cptEssais = 0;//nombre d'essais faits par l'utilisateur initialisé a 0 pour le début du programme
  27.  
  28. char couleur_pion1, couleur_pion2, couleur_pion3, couleur_pion4;//séquence des pions a deviner avec les initiales de leurs couleurs
  29. char choixCouleur1, choixCouleur2, choixCouleur3, choixCouleur4;//séquence des pions saisis par le joueur avec les initiales de leurs couleurs
  30.  
  31. bool courant_valide;//booléen permettant de valider chaque élément de la séquence de pions saisi par le joueur
  32.  
  33. //boucle répéter tant que l'utilisateur souhaite recommencer une partie du jeu
  34. do
  35. {
  36.  
  37. // 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
  38. do
  39. {
  40. cout << "\n Entrez le nombre d'essais que vous souhaitez." << endl;
  41. cout << " Nombre d'essais compris entre 5 et 20." << endl;
  42. cout << "\n Nombre d'essais : ";
  43. cin >> nb_essais;
  44.  
  45. }while (nb_essais < NB_MIN || nb_essais > NB_MAX);
  46.  
  47. //Séquence des 4 pions en chiffres choisis aléatoirement par l'ordinateur
  48. srand(time(NULL));
  49.  
  50. pion1 = ( rand() % 6 ) + 1;
  51. pion2 = ( rand() % 6 ) + 1;
  52. pion3 = ( rand() % 6 ) + 1;
  53. pion4 = ( rand() % 6 ) + 1;
  54.  
  55. cout << "\n " << pion1 << " " << pion2 << " " << pion3 << " " << pion4 << endl;
  56.  
  57. //association du chiffre pion1 par un caractere couleur_pion1 en fonction du chiffre choisi par l'ordinateur
  58. switch (pion1)
  59. {
  60. case 1 : couleur_pion1 = 'R'; break;
  61.  
  62. case 2 : couleur_pion1 = 'V'; break;
  63.  
  64. case 3 : couleur_pion1 = 'J'; break;
  65.  
  66. case 4 : couleur_pion1 = 'M'; break;
  67.  
  68. case 5 : couleur_pion1 = 'B'; break;
  69.  
  70. case 6 : couleur_pion1 = 'C'; break;
  71. }
  72.  
  73. //association du chiffre pion2 par un caractere couleur_pion2 en fonction du chiffre choisi par l'ordinateur
  74. switch (pion2)
  75. {
  76. case 1 : couleur_pion2 = 'R'; break;
  77.  
  78. case 2 : couleur_pion2 = 'V'; break;
  79.  
  80. case 3 : couleur_pion2 = 'J'; break;
  81.  
  82. case 4 : couleur_pion2 = 'M'; break;
  83.  
  84. case 5 : couleur_pion2 = 'B'; break;
  85.  
  86. case 6 : couleur_pion2 = 'C'; break;
  87. }
  88.  
  89. //association du chiffre pion3 par un caractere couleur_pion3 en fonction du chiffre choisi par l'ordinateur
  90. switch (pion3)
  91. {
  92. case 1 : couleur_pion3 = 'R'; break;
  93.  
  94. case 2 : couleur_pion3 = 'V'; break;
  95.  
  96. case 3 : couleur_pion3 = 'J'; break;
  97.  
  98. case 4 : couleur_pion3 = 'M'; break;
  99.  
  100. case 5 : couleur_pion3 = 'B'; break;
  101.  
  102. case 6 : couleur_pion3 = 'C'; break;
  103. }
  104.  
  105. //association du chiffre pion4 par un caractere couleur_pion4 en fonction du chiffre choisi par l'ordinateur
  106. switch (pion4)
  107. {
  108. case 1 : couleur_pion4 = 'R'; break;
  109.  
  110. case 2 : couleur_pion4 = 'V'; break;
  111.  
  112. case 3 : couleur_pion4 = 'J'; break;
  113.  
  114. case 4 : couleur_pion4 = 'M'; break;
  115.  
  116. case 5 : couleur_pion4 = 'B'; break;
  117.  
  118. case 6 : couleur_pion4 = 'C'; break;
  119. }
  120.  
  121. cout << "\n " << couleur_pion1 << " " << couleur_pion2 << " " << couleur_pion3 << " " << couleur_pion4<<endl;
  122.  
  123. //affichage de rappel des couleurs disponibles pour les différents pions
  124. cout << " Entrez une suite de 4 couleurs parmi les couleurs suivantes :" << endl;
  125. cout << " R - Rouge\n";
  126. cout << " V - Vert\n";
  127. cout << " J - Jaune\n";
  128. cout << " M - Magenta\n";
  129. cout << " B - Bleu\n";
  130. cout << " C - Cyan\n";
  131.  
  132.  
  133. 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
  134. {
  135. cptEssais++;
  136.  
  137. nb_pionsValides = 0;//initialisation du nombre de pions valides a chaque fois que l'utilisateur commence a saisir une nouvelle séquence
  138.  
  139. do//boucle se répéte tant que l'utilisateur n'a pas saisi une séquence valide
  140. {
  141. cout << " Saisissez l'intiale de la premiere couleur en majuscule : ";
  142. cin >> choixCouleur1;
  143.  
  144. //test du premier élément saisi par l'utilisateur : si l'élément saisi n'est aucune initiale des couleurs proposées, alors invalidité
  145. if (choixCouleur1 != 'R' && choixCouleur1 != 'V' && choixCouleur1 != 'J' && choixCouleur1 != 'M' && choixCouleur1 != 'B' && choixCouleur1 != 'C')
  146. courant_valide = false;
  147. //sinon on continue a tester le deuxième élement
  148. else
  149. {
  150. cout << " Saisissez l'intiale de la deuxieme couleur : ";
  151. cin >> choixCouleur2;
  152.  
  153. if (choixCouleur2 != 'R' && choixCouleur2 != 'V' && choixCouleur2 != 'J' && choixCouleur2 != 'M' && choixCouleur2 != 'B' && choixCouleur2 != 'C')
  154. courant_valide = false;
  155. else
  156. {
  157. cout << " Saisissez l'intiale de la troisieme couleur : ";
  158. cin >> choixCouleur3;
  159.  
  160. if (choixCouleur3 != 'R' && choixCouleur3 != 'V' && choixCouleur3 != 'J' && choixCouleur3 != 'M' && choixCouleur3 != 'B' && choixCouleur3 != 'C')
  161. courant_valide = false;
  162. else
  163. {
  164. cout << " Saisissez l'intiale de la quatrieme couleur : ";
  165. cin >> choixCouleur4;
  166.  
  167. if (choixCouleur4 != 'R' && choixCouleur4 != 'V' && choixCouleur4 != 'J' && choixCouleur4 != 'M' && choixCouleur4 != 'B' && choixCouleur4 != 'C')
  168. courant_valide = false;
  169. else
  170. courant_valide = true;
  171. }
  172. }
  173. }
  174.  
  175. if (!courant_valide)//si un ou plusieurs éléments saisis par l'utilisateur n'est pas valide
  176. {
  177. cout << " Votre suite de couleur est fausse.\n" << endl;
  178. cout << " Entrez une suite de 4 couleurs parmi les couleurs suivantes :" << endl;
  179. cout << " R - Rouge\n";
  180. cout << " V - Vert\n";
  181. cout << " J - Jaune\n";
  182. cout << " M - Magenta\n";
  183. cout << " B - Bleu\n";
  184. cout << " C - Cyan\n";
  185. }
  186.  
  187. }while (!courant_valide);
  188.  
  189. cout << " Les couleurs sont bonnes " << endl;
  190.  
  191. if(couleur_pion1==choixCouleur1)
  192. nb_pionsValides++;
  193.  
  194. if(couleur_pion2==choixCouleur2)
  195. nb_pionsValides++;
  196.  
  197. if(couleur_pion3==choixCouleur3)
  198. nb_pionsValides++;
  199.  
  200. if(couleur_pion4==choixCouleur4)
  201. nb_pionsValides++;
  202.  
  203. cout << " Votre sequence saisie est " << choixCouleur1 << choixCouleur2 << choixCouleur3 << choixCouleur4 << endl;
  204. cout << " Vous avez " << nb_pionsValides << " pion(s) valide(s)." << endl;
  205.  
  206. if (nb_pionsValides<4)
  207. cout << " Essayez encore ! (nombre d'essais restants : " << ( nb_essais - cptEssais ) << ").\n" << endl;
  208. }
  209. while(nb_pionsValides < 4 && cptEssais < nb_essais);
  210.  
  211.  
  212. //Affichage du résultat final de la partie
  213. if (nb_pionsValides == 4)//si le joueur a deviné les 4 pions
  214. cout << " Gagne !! Champion :-) !" << endl;
  215. else//si le joueur est arrivé au nombre maxi d'essais et qu'il n'a pas deviné la séquence des pions
  216. cout << " Perdu... !" << endl;
  217.  
  218. cout << " La sequence a deviner etait : " << couleur_pion1 << " " << couleur_pion2 << " " << couleur_pion3 << " " << couleur_pion4<<endl;
  219.  
  220.  
  221. //relance de la partie
  222. cout << " Voulez-vous recommencer une partie ? ";
  223. cout << " Repondre par \"o\" pour oui et \"n\" pour non : ";
  224. cin >> reponse;
  225. }
  226. while(reponse=='o');//condition de la relance si l'utilisateur repond par 'o' : on recommence la boucle
  227.  
  228. return 0;
  229. }
Add Comment
Please, Sign In to add comment