Advertisement
Guest User

Untitled

a guest
Aug 12th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <ctime>
  3. #include <cstdlib>
  4. #include <fstream>
  5. using namespace std;
  6.  
  7.  
  8. void penduMenu(); //Menu pendu
  9. int playPendu(); //Jeu du pendu
  10. int playPendu2(); //jeu du pendu a 2
  11. void penduRule(); //Regle du jeu du pendu
  12.  
  13. void dichotomieMenu();//Menu de la recherche dichotomique
  14. void playDichotomie();//Jeu de la recherche dichotomique
  15. void dichotomieRule();//Regle du jeu de la recherche dichotomique
  16.  
  17. int lettersCounting(char[255]);
  18. void asciiArtPendu(int);
  19. void asciiArtMenu(int);//Interface ascii du menu de chaque jeu
  20. void about(); //Nos sources
  21.  
  22. int main()
  23. {
  24. system("cls");
  25. srand(time(NULL));
  26. int game_choice;
  27. asciiArtMenu(5);
  28. cout <<" Votre choix : ";
  29. cin >>game_choice;
  30. while (game_choice>3 or game_choice<1)
  31. {
  32. system("cls");
  33. asciiArtMenu(5);
  34. cout<<endl<<" Erreur dans le choix du jeu!"<<endl<<" Veuillez recommencer : ";
  35. cin >>game_choice;
  36. }
  37. if (game_choice==1) penduMenu();
  38. if (game_choice==2) dichotomieMenu();
  39. if (game_choice==3) about();
  40. }
  41.  
  42. void penduMenu()
  43. {
  44. int penduMenuChoice;
  45. asciiArtMenu(2);
  46. asciiArtMenu(3);
  47. cout <<" Votre choix : ";
  48. cin >>penduMenuChoice;
  49. while (penduMenuChoice >4)
  50. {
  51. asciiArtMenu(2);
  52. asciiArtMenu(3);
  53. cout << endl << " Erreur dans le choix, veuillez recommencer: ";
  54. cin >> penduMenuChoice;
  55. system("cls");
  56. }
  57. if (penduMenuChoice==1) penduRule();
  58. if (penduMenuChoice==2) playPendu();
  59. if (penduMenuChoice==3) playPendu2();
  60. if (penduMenuChoice==4) main();
  61. }
  62.  
  63. void penduRule()
  64. {
  65. system("cls");
  66. int penduMenuChoice;
  67. asciiArtMenu(2);
  68. cout <<"* Les regles : *"<<endl;
  69. cout << "1) Le but du jeu est de trouver le mot choisi par l'ordinateur en proposant des lettres." << endl << "2) Si la lettre proposee se trouve dans le mot, celle-ci s'affiche."<< endl;
  70. cout << "3) Si la lettre proposee ne se trouve pas dans le mot, une partie du pendu apparaitra." << endl << "4) Si vous avez trouve le mot avant que le pendu soit entierement reconstitue: vous avez gagne." << endl;
  71. cout << "5) Si le pendu est entièrement reconstitue alors que le mot n'est pas decouvert: vous avez perdu" << endl << "6) ATTENTION!!! Toutes les lettres proposees devront etre ecrites en majuscule!" << endl << endl;
  72. asciiArtMenu(4);
  73. cout <<" Votre choix : ";
  74. cin >>penduMenuChoice;
  75. while (penduMenuChoice<1 or penduMenuChoice>2)
  76. {
  77. system("cls");
  78. asciiArtMenu(2);
  79. cout <<"* Les regles : *"<<endl;
  80. cout << "1) Le but du jeu est de trouver le mot choisi par l'ordinateur en proposant des lettres." << endl << "2) Si la lettre proposee se trouve dans le mot, celle-ci s'affiche."<< endl;
  81. cout << "3) Si la lettre proposee ne se trouve pas dans le mot, une partie du pendu apparaitra." << endl << "4) Si vous avez trouve le mot avant que le pendu soit entierement reconstitue: vous avez gagne." << endl;
  82. cout << "5) Si le pendu est entièrement reconstitue alors que le mot n'est pas decouvert: vous avez perdu" << endl << "6) ATTENTION!!! Toutes les lettres proposees devront etre ecrites en majuscule!" << endl << endl;
  83. asciiArtMenu(4);
  84. cout << endl << " Erreur dans le choix, veuillez recommencer: ";
  85. cin >>penduMenuChoice;
  86. }
  87. if (penduMenuChoice==1) playPendu();
  88. if (penduMenuChoice==2) main();
  89.  
  90. }
  91.  
  92. int playPendu()
  93. {
  94. system("cls");
  95. asciiArtMenu(2);
  96. char Letter;
  97. char chaine[255];
  98. int random,lettersNumber,numberTrue(0), numberError(0);
  99. ifstream entree("dico.txt"); //ouvre le fichier test.txt en lecture ce fichier se trouve dans le meme dossier que le programme
  100.  
  101. random = ((rand()*rand())%361076); // un nombre entre 0 et 361076. 361076 est le nombre de mot dans le .txt
  102. entree >> chaine;
  103. for(int i(0); i!=random ; i++) //tant que le fichier n'est pas terminé ou que nombre est différent de random
  104. {
  105. entree >> chaine; //copie une portion dans le vecteur chaine (chaque portion est séparé par un espace ,une tabulation ou un retour à la ligne)
  106. }
  107. entree.close(); //ferme le fichier
  108.  
  109. cout <<chaine<<endl<<endl;
  110.  
  111. lettersNumber = lettersCounting(chaine);
  112. char mot [lettersNumber];
  113. cout << "Le mot que vous devez trouver contient " << lettersNumber << " lettres." << endl;
  114.  
  115. for ( int i(0); i< lettersNumber; i++) // créé mot qui devra etre egal a chaine
  116. {
  117. mot[i]= '_';
  118. cout << mot[i] << " ";
  119. }
  120. for ( int i(0); i< lettersNumber; i++)
  121. {
  122. while ( mot[i] != chaine[i])
  123. {
  124. cout << endl << endl << "Proposez une lettre: ";
  125. cin >> Letter;
  126. for (int i(0); i<lettersNumber; i++)
  127. {
  128. chaine[i];
  129. if(Letter == chaine [i])
  130. {
  131. numberTrue++; // ajoute 1 si la lettre proposee est dans le chaine
  132. mot[i] = Letter; // remplace le _ par la lettre dans le mot
  133. }
  134. }
  135. system("cls");
  136. asciiArtMenu(2);
  137. if (numberTrue == 0)
  138. {
  139. cout << endl << "Desole, cette lettre ne figure pas dans le mot" << endl << endl;
  140. numberError++; //compte le nombre d'erreur
  141. }
  142. else
  143. {
  144. cout << endl << "Bravo, votre lettre est dans le mot!" << endl << endl;
  145. }
  146. asciiArtPendu(numberError);
  147. cout << endl;
  148. if (numberError==9)
  149. {
  150. cout <<"Le mot etait " << chaine << endl;
  151. return 0;
  152. }
  153. for(int i(0);i<lettersNumber;i++)
  154. {
  155. cout << mot[i] << " ";
  156. }
  157. cout << endl;
  158. numberTrue = 0; // remet le compteur du nombre de lettres bonnes à 0
  159. }
  160. }
  161. cout << endl << "Felicitation! Vous avez reussi a trouver le mot avant que le pendu soit totalement reconstitue. Vous avez gagne!" << endl;
  162. }
  163.  
  164. int playPendu2()
  165. {
  166. system("cls");
  167. asciiArtMenu(2);
  168. char Letter;
  169. char chaine[255];
  170. int random,lettersNumber,numberTrue(0), numberError(0), player1, player2, player3;
  171. ifstream entree("dico.txt"); //ouvre le fichier test.txt en lecture ce fichier se trouve dans le meme dossier que le programme
  172. player1 = 1;
  173. player2 = 2;
  174. random = ((rand()*rand())%361076); // un nombre entre 0 et 361076. 361076 est le nombre de mot dans le .txt
  175. entree >> chaine;
  176. for(int i(0); i!=random ; i++) //tant que le fichier n'est pas terminé ou que nombre est différent de random
  177. {
  178. entree >> chaine; //copie une portion dans le vecteur chaine (chaque portion est séparé par un espace ,une tabulation ou un retour à la ligne)
  179. }
  180. entree.close(); //ferme le fichier
  181.  
  182. cout <<chaine<<endl<<endl;
  183.  
  184. lettersNumber = lettersCounting(chaine);
  185. char mot [lettersNumber];
  186. cout << "Le mot que vous devez trouver contient " << lettersNumber << " lettres." << endl;
  187.  
  188. for ( int i(0); i< lettersNumber; i++) // créé mot qui devra etre egal a chaine
  189. {
  190. mot[i]= '_';
  191. cout << mot[i] << " ";
  192. }
  193. for ( int i(0); i< lettersNumber; i++)
  194. {
  195. while ( mot[i] != chaine[i])
  196. {
  197. cout << endl << endl << "joueur "<< player1<<", Proposez une lettre: ";
  198. cin >> Letter;
  199. for (int i(0); i<lettersNumber; i++)
  200. {
  201. chaine[i];
  202. if(Letter == chaine [i])
  203. {
  204. numberTrue++; // ajoute 1 si la lettre proposee est dans le chaine
  205. mot[i] = Letter; // remplace le _ par la lettre dans le mot
  206. }
  207. }
  208. system("cls");
  209. asciiArtMenu(2);
  210. if (numberTrue == 0)
  211. {
  212. cout << endl << "Desole, cette lettre ne figure pas dans le mot" << endl << endl;
  213. numberError++; //compte le nombre d'erreur
  214. player3 = player1;
  215. player1 = player2;
  216. player2 = player3;//donne la valeur 2 a player1 et la valeur 1 a player2 pour changer le joueur.
  217. }
  218. else
  219. {
  220.  
  221. cout << endl << "Bravo, votre lettre est dans le mot!" << endl << endl;
  222. }
  223. asciiArtPendu(numberError);
  224. cout << endl;
  225. if (numberError==9)
  226. {
  227. cout <<"Le mot etait " << chaine << endl;
  228. return 0;
  229. }
  230. for(int i(0);i<lettersNumber;i++)
  231. {
  232. cout << mot[i] << " ";
  233. }
  234. cout << endl;
  235. numberTrue = 0; // remet le compteur du nombre de lettres bonnes à 0
  236. }
  237. }
  238. cout << endl << "Felicitation! Vous avez reussi a trouver le mot avant que le pendu soit totalement reconstitue. Joueur " << player1 << " ,vous avez gagne!" << endl;
  239. }
  240.  
  241. void dichotomieMenu()
  242. {
  243. int dichotomieMenuChoice;
  244. asciiArtMenu(1);
  245. asciiArtMenu(3);
  246. cout <<" Votre choix : ";
  247. cin >>dichotomieMenuChoice;
  248. if (dichotomieMenuChoice==1) dichotomieRule();
  249. if (dichotomieMenuChoice==2) playDichotomie();
  250. if (dichotomieMenuChoice==4) main();
  251. }
  252.  
  253. void dichotomieRule()
  254. {
  255. int dichotomieRuleChoice;
  256. system("cls");
  257. asciiArtMenu(1);
  258. cout <<" * Les regles : *"<<endl;
  259. cout <<" * Le principe du jeu est simple ,un mot est genere aleatoirement. *"<<endl;
  260. cout <<" * Votre but est de le retrouver, mais comment faire ? *"<<endl;
  261. cout <<" * Ecrivez un mot , l'ordinateur vous dira si votre mot *"<<endl;
  262. cout <<" * est plus bas ou plus haut selon l'ordre alphabetique *"<<endl;
  263. cout <<" * Par la methode de dichotomie , vous trouverez le bon mot *"<<endl;
  264. cout <<" * Bon jeu! *"<<endl;
  265. asciiArtMenu(4);
  266. cout <<" Votre choix : ";
  267. cin >>dichotomieRuleChoice;
  268. if (dichotomieRuleChoice==1) playDichotomie();
  269. if (dichotomieRuleChoice==2) main();
  270. }
  271.  
  272. void playDichotomie()
  273. {
  274. asciiArtMenu(1);
  275. char chaine[255] ,playerWord[255];
  276. int random,lettersNumber,goodLetter,tryNumber(1);
  277. bool win(false);
  278.  
  279. ifstream entree("dico.txt"); //ouvre le fichier test.txt en lecture ce fichier se trouve dans le meme dossier que le programme
  280.  
  281. random=((rand()*rand())%361076); // un chiffre entre 0 1 2 3 4
  282. entree >> chaine;
  283. for(int i(0); i!=random ; i++) //tant que le fichier n'est pas terminé ou que nombre est différent de random
  284. {
  285. entree >> chaine; //copie une portion dans le vecteur chaine (chaque portion est séparé par un espace ,une tabulation ou un retour à la ligne)
  286. }
  287. entree.close(); //ferme le fichier
  288.  
  289. lettersNumber=lettersCounting(chaine);
  290. cout <<" Le mot aleatoire a correctement ete genere!"<<endl;
  291. cout <<chaine;
  292.  
  293. while(win!=true)
  294. {
  295. int i(0);
  296. cout <<endl<<"Proposez un mot : ";
  297. cin >>playerWord;
  298. for(i;i!=lettersNumber; i++)
  299. {
  300. if(playerWord[i]==chaine[i]) goodLetter=i+1;
  301.  
  302. if(playerWord[i]>chaine[i])
  303. {
  304. cout <<"Le mot mystere se trouve en dessous de votre mot !"<<endl;
  305. tryNumber++;
  306. break;
  307. }
  308. if(playerWord[i]<chaine[i])
  309. {
  310. cout <<"Le mot mystere se trouve au dessus de votre mot !"<<endl;
  311. tryNumber++;
  312. break;
  313. }
  314. if(goodLetter==lettersNumber)
  315. {
  316. win=true;
  317. cout <<"Bravo , tu as reussi a trouver le mot ! et cela en "<<tryNumber<<" essais";
  318. }
  319. }
  320. }
  321. }
  322.  
  323. int lettersCounting(char chaine[])
  324. {
  325. int lettersNumber(-1);
  326. for (int i(0);i<255;i++)
  327. {
  328. lettersNumber++;
  329. if (chaine[i]!='A'&&chaine[i]!='B'&&chaine[i]!='C'&&chaine[i]!='D'&&chaine[i]!='E'&&chaine[i]!='F'&&chaine[i]!='G'&&chaine[i]!='H'&&chaine[i]!='I'&&chaine[i]!='J'&&chaine[i]!='K'&&chaine[i]!='L'&&chaine[i]!='M'&&chaine[i]!='N'&&chaine[i]!='O'&&chaine[i]!='P'&&chaine[i]!='Q'&&chaine[i]!='R'&&chaine[i]!='S'&&chaine[i]!='T'&&chaine[i]!='U'&&chaine[i]!='V'&&chaine[i]!='W'&&chaine[i]!='X'&&chaine[i]!='Y'&&chaine[i]!='Z')
  330. {
  331. i=255;
  332. }
  333. }
  334. return lettersNumber;
  335. }
  336.  
  337. void asciiArtPendu(int numberError)
  338. {
  339. if (numberError == 0)
  340. {
  341.  
  342. }
  343. if (numberError == 1)
  344. {
  345. cout<<" "<<endl;
  346. cout<<" || / "<<endl;
  347. cout<<" || / "<<endl;
  348. cout<<" ||/ "<<endl;
  349. cout<<" || "<<endl;
  350. cout<<" || "<<endl;
  351. cout<<" || "<<endl;
  352. cout<<" /|| "<<endl;
  353. cout<<" //|| "<<endl;
  354. cout<<"============ "<<endl;
  355. }
  356. if (numberError == 2)
  357. {
  358. cout<<" ,==========Y=== "<<endl;
  359. cout<<" || / "<<endl;
  360. cout<<" || / "<<endl;
  361. cout<<" ||/ "<<endl;
  362. cout<<" || "<<endl;
  363. cout<<" || "<<endl;
  364. cout<<" || "<<endl;
  365. cout<<" /|| "<<endl;
  366. cout<<" //|| "<<endl;
  367. cout<<"============ "<<endl;
  368. }
  369. if (numberError == 3)
  370. {
  371. cout<<" ,==========Y=== "<<endl;
  372. cout<<" || / | "<<endl;
  373. cout<<" || / | "<<endl;
  374. cout<<" ||/ "<<endl;
  375. cout<<" || "<<endl;
  376. cout<<" || "<<endl;
  377. cout<<" || "<<endl;
  378. cout<<" /|| "<<endl;
  379. cout<<" //|| "<<endl;
  380. cout<<"============ "<<endl;
  381. }
  382. if (numberError == 4)
  383. {
  384. cout<<" ,==========Y=== "<<endl;
  385. cout<<" || / | "<<endl;
  386. cout<<" || / | "<<endl;
  387. cout<<" ||/ O "<<endl;
  388. cout<<" || "<<endl;
  389. cout<<" || "<<endl;
  390. cout<<" || "<<endl;
  391. cout<<" /|| "<<endl;
  392. cout<<" //|| "<<endl;
  393. cout<<"============ "<<endl;
  394. }
  395. if (numberError == 5)
  396. {
  397. cout<<" ,==========Y=== "<<endl;
  398. cout<<" || / | "<<endl;
  399. cout<<" || / | "<<endl;
  400. cout<<" ||/ O "<<endl;
  401. cout<<" || | "<<endl;
  402. cout<<" || "<<endl;
  403. cout<<" || "<<endl;
  404. cout<<" /|| "<<endl;
  405. cout<<" //|| "<<endl;
  406. cout<<"============ "<<endl;
  407. }
  408. if (numberError == 6)
  409. {
  410. cout<<" ,==========Y=== "<<endl;
  411. cout<<" || / | "<<endl;
  412. cout<<" || / | "<<endl;
  413. cout<<" ||/ O "<<endl;
  414. cout<<" || /| "<<endl;
  415. cout<<" || "<<endl;
  416. cout<<" || "<<endl;
  417. cout<<" /|| "<<endl;
  418. cout<<" //|| "<<endl;
  419. cout<<"============ "<<endl;
  420. }
  421. if (numberError == 7)
  422. {
  423. cout<<" ,==========Y=== "<<endl;
  424. cout<<" || / | "<<endl;
  425. cout<<" || / | "<<endl;
  426. cout<<" ||/ O "<<endl;
  427. cout<<" || /|\\ "<<endl;
  428. cout<<" || "<<endl;
  429. cout<<" || "<<endl;
  430. cout<<" /|| "<<endl;
  431. cout<<" //|| "<<endl;
  432. cout<<"============ "<<endl;
  433. }
  434. if (numberError == 8)
  435. {
  436. cout<<" ,==========Y=== "<<endl;
  437. cout<<" || / | "<<endl;
  438. cout<<" || / | "<<endl;
  439. cout<<" ||/ O "<<endl;
  440. cout<<" || /|\\ Attention! Vous n'avez plus le droit a l'erreur."<<endl;
  441. cout<<" || / "<<endl;
  442. cout<<" || "<<endl;
  443. cout<<" /|| "<<endl;
  444. cout<<" //|| "<<endl;
  445. cout<<"============ "<<endl;
  446. }
  447. if (numberError == 9)
  448. {
  449. cout<<" ,==========Y=== "<<endl;
  450. cout<<" || / | "<<endl;
  451. cout<<" || / | "<<endl;
  452. cout<<" ||/ O "<<endl;
  453. cout<<" || /|\\ Le jeu est fini, vous avez perdu"<<endl;
  454. cout<<" || / \\ "<<endl;
  455. cout<<" || "<<endl;
  456. cout<<" /|| "<<endl;
  457. cout<<" //|| "<<endl;
  458. cout<<"============ "<<endl;
  459. }
  460. }
  461.  
  462. void asciiArtMenu(int game)
  463. {
  464. if (game<=2)
  465. {
  466. system("cls");
  467. cout <<"*******************************************************************************"<<endl;
  468. cout <<"* *"<<endl;
  469. cout <<"* ";
  470. if (game==1)cout <<"Jeu de la recherche dichotomique";
  471. if (game==2)cout <<" Jeu du pendu ";
  472. cout <<" *"<<endl;
  473. cout <<"* *"<<endl;
  474. cout <<"*-----------------------------------------------------------------------------*"<<endl;
  475. }
  476. if (game==3)
  477. {
  478. cout <<" * Consulter les regles : tappez 1 *"<<endl;
  479. cout <<" * Commencer a jouer en mode solo : tappez 2 *"<<endl;
  480. cout <<" * Commencer a jouer en mode 2 joueur : tappez 3 *"<<endl;
  481. cout <<" * Retour au menu : tappez 4 *"<<endl;
  482. cout <<" ***********************************************************************"<<endl<<endl;
  483. }
  484. if(game==4)
  485. {
  486. cout <<" *---------------------------------------------------------------------*"<<endl;
  487. cout <<" * Commencer a jouer : tappez 1 *"<<endl;
  488. cout <<" * Retour au menu : tappez 2 *"<<endl;
  489. cout <<" ***********************************************************************"<<endl;
  490. }
  491. if(game==5)
  492. {
  493. cout <<" .-------------------------------------------------------------------------."<<endl;
  494. cout <<" / .-. .-. "<< "\\" <<""<<endl;
  495. cout <<"| / "<< "\\" <<" Bienvenue cher joueur, fais un choix! / "<< "\\" <<" |"<<endl;
  496. cout <<"| |"<< "\\" <<"_. | | _/| |"<<endl;
  497. cout <<"|"<< "\\" <<"| | /| Le jeu du pendu : tappe 1 |"<< "\\" <<" | |/|"<<endl;
  498. cout <<"| `---' | La recherche dichotomique : tappe 2 | `---' |"<<endl;
  499. cout <<"| | Tableau des scores : tappez (4?) | |"<<endl;
  500. cout <<"| | A propos... : tappez 3 | |"<<endl;
  501. cout <<""<< "\\" <<" | | /"<<endl;
  502. cout <<" "<< "\\" <<" /---------------------------------------------------------------"<< "\\" <<" /"<<endl;
  503. cout <<" `---' `---'"<<endl;
  504. }
  505. if(game==6)
  506. {
  507. cout<<" ____________________________________________________"<<endl; //Nous privilégions la lisibilité
  508. cout<<" / "<<"\\"<<endl; //du code , c'est pour cela
  509. cout<<" | _____________________________________________ |"<<endl; //que l'art ascii y est repris
  510. cout<<" | | | |"<<endl; //ligne par ligne et non dans une seule
  511. cout<<" | | Programme developpe par : | |"<<endl; //instruction cout
  512. cout<<" | | Kevin Rolland & Laurent Tobaly | |"<<endl;
  513. cout<<" | | | |"<<endl;
  514. cout<<" | | | |"<<endl;
  515. cout<<" | | L'art ascii provient du site chris.com | |"<<endl;
  516. cout<<" | | ainsi que de ascii-fr.com | |"<<endl;
  517. cout<<" | | | |"<<endl;
  518. cout<<" | | Les regles : Wikipedia.org | |"<<endl;
  519. cout<<" | | | |"<<endl;
  520. cout<<" | | Pour retourner au menu tappez : 0 | |"<<endl;
  521. cout<<" | | | |"<<endl;
  522. cout<<" | |_____________________________________________| |"<<endl;
  523. cout<<" | |"<<endl;
  524. cout<<" "<< "\\"<<"_____________________________________________________/"<<endl;
  525. cout<<" ___________________________________________________________"<<endl;
  526. cout<<" _-'.-.-.-. .---.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-`__`. .-.-.-.`-_"<<endl;
  527. cout<<" _-'.-.-.-.-. .-----.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-----. .-.-.-.-.`-_"<<endl;
  528. cout<<" _-'.-.-.-.-.-. .---.-. .-----------------------------. .-.---. .---.-.-.-.`-_"<<endl;
  529. cout<<":-----------------------------------------------------------------------------:"<<endl;
  530. cout<<"`---._.-----------------------------------------------------------------._.---'"<<endl;
  531. }
  532. }
  533.  
  534. void about()
  535. {
  536. system("cls");
  537. int comeBack;
  538. asciiArtMenu(6);
  539. cout <<" Votre choix : ";
  540. cin>>comeBack;
  541. while (comeBack !=0)
  542. {
  543. system("cls");
  544. asciiArtMenu(6);
  545. cout << endl << " Erreur dans le choix, veuillez recommencer: ";
  546. cin>>comeBack;
  547. }
  548. main();
  549. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement