Se connecter / S'enregistrer
Votre question

Jeu pendu en "C" demande d aide

Tags :
  • Programmation
Dernière réponse : dans Programmation
7 Janvier 2012 19:55:18

Bonjour, voila j'aimerai demander un coup de main pour corriger certaine faute si cela serait possible dans mon code, je ne comprend pas pourquoi certaine erreur persiste, 2probleme majeur : la potence du pendu ne change pas, et apres avoir entree une lettre, des symbole bizare appairaisse deriere, je suis debutant en C je précise.
merci beaucoup d'avance pour l aide apporter



  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6.  
  7. int Menu ();
  8. int Regles ();
  9. int Jeu();
  10. char Affichage_Mot_Deviner(char Mot_Chercher[20], int longueur);
  11. char Demander_Lettre(char lettre);
  12. int Verifier_Lettre(char Lettre, char Lettre_Proposee[50], int place);
  13. char Affichage_Pendu_Dessin(int nbre_erreur);
  14.  
  15.  
  16.  
  17.  
  18. int main()
  19. {
  20. printf(" --------------------------------------\n Programme realise par Prevost Laurine\n Section : 1IRT Groupe : 3\n Annee academique : 2009-2010\n Nom de l'enseignant : Mr. Tricarico\n Projet : Jeu du Pendu\n --------------------------------------\n\n");
  21. Menu (); //appel la fonction Menu
  22.  
  23. }
  24.  
  25. int Menu () //fonction Menu
  26. {
  27. int choix;
  28. printf(" =================================== MENU ===================================\n\n");
  29. printf("\t(1) : Jouer\n \t(2) : Regles du jeu\n \t(3) : Quitter\n\n");
  30. printf(" ============================================================================\n\n");
  31. do
  32. {
  33. printf("\tQue voulez-vous faire ? ");
  34. scanf("%d",&choix);
  35. if ((choix>0)&&(choix<4))
  36. {
  37.  
  38. switch(choix)
  39. {
  40. case 1: Jeu(); // appel la fonction Jeu
  41. Menu(); // appel la fonction Menu
  42. break;
  43. case 2: Regles(); // appel la fonction Regles
  44. Menu(); // appel la fonction Menu
  45. break;
  46. case 3: printf("\tMerci d'avoir jouer avec nous ...\n");
  47. break;
  48. }
  49. }
  50. else
  51. {
  52. printf("\tChoix incorrecte !\n");
  53. }
  54. }
  55. while ((choix<1 || choix>3));
  56. }
  57.  
  58.  
  59. int Regles () // fonction Regles
  60. {
  61. printf("\n\n================================ Regles du jeu ================================\n\n");
  62. printf("Le pendu est un jeu consistant a trouver un mot en devinant quelles sont les\nlettres qui le composent. Le jeu se joue traditionnellement a deux, avec un\ncrayon et une feuille.\n\nDans ce cas-ci, l'un des joueurs est l'ordinateur. Celui-ci choisit donc un\nmot au hasard qui doit etre devine par l'utilisateur en un minimum d'essais.\nCe dernier propose des lettres de l'alphabet. Si la lettre figure dans le mot\na trouver, elle s'affiche. Si elle n'y figure pas, le nombre de mauvaises\nreponses augmente de 1 et la silhouette du personnage Le Pendu evolue.\n\nAu bout de six mauvaises reponses, la partie est perdue.\n\n");
  63. printf("===============================================================================\n\n");
  64. }
  65.  
  66.  
  67. int Jeu() // fonction Jeu
  68. {
  69. int longueur, i, nbre_essai, rep_erreur=0, rep_correcte=0, place=0, choixaleatoire, verification;
  70. char Dico_Hasard[20], Lettre, Lettre_Proposee[50];
  71. char Tab_Mot_Dico[13][10]={"clavier","souris","disque","unite","memoire","maison","cahier","fonction","chaine","variable","logique","programme","pointeur"};
  72.  
  73. srand(time(NULL)); // permet de choisir aléatoirement un mot
  74. choixaleatoire=rand()%10;
  75.  
  76. strcpy(Dico_Hasard,Tab_Mot_Dico[choixaleatoire]);
  77.  
  78. longueur=strlen(Dico_Hasard);
  79.  
  80. char Mot_Devinette[longueur];
  81.  
  82. for (i=0;i<longueur;i++)
  83. {
  84. Mot_Devinette[i]='*';
  85. }
  86.  
  87. printf("\n\n%s\n\n", Mot_Devinette);
  88.  
  89. do
  90. {
  91. nbre_essai=longueur;
  92.  
  93. Affichage_Pendu_Dessin(rep_erreur);
  94.  
  95. Lettre=Demander_Lettre(Lettre);
  96.  
  97. verification=Verifier_Lettre(Lettre, Lettre_Proposee, place);
  98.  
  99. if (verification==0)
  100. {
  101. place++;
  102.  
  103. for(i=0;i<longueur;i++)
  104. {
  105. if (Dico_Hasard[i]==Lettre)
  106. {
  107. Mot_Devinette[i]=Lettre;
  108. nbre_essai=nbre_essai-1;
  109. rep_correcte++;
  110. }
  111. }
  112.  
  113. if (nbre_essai==longueur)
  114. {
  115. rep_erreur++;
  116. }
  117. }
  118.  
  119. printf("\n\n%s\n\n", Mot_Devinette);
  120. }
  121.  
  122. while(rep_erreur!=7 && longueur!=rep_correcte);
  123.  
  124. if (rep_erreur==7)
  125. {
  126. Affichage_Pendu_Dessin(rep_erreur);
  127. printf("Vous avez 7 erreurs .. Vous avez donc perdu ...\n");
  128. printf("Le mot a trouve etait %s\n\n", Dico_Hasard);
  129. }
  130.  
  131. else
  132. {
  133. printf("Felicitations !! Vous avez gagne ...\n");
  134. printf("Le mot a trouve etait %s\n\n", Dico_Hasard);
  135. }
  136.  
  137. return 0;
  138. }
  139.  
  140. char Demander_Lettre(char lettre) // fonction demander une lettre
  141. {
  142. char Lettre;
  143.  
  144. do
  145. {
  146. printf("Choisissez une lettre : ", Lettre);
  147. scanf("%s", &Lettre);
  148. }
  149.  
  150. while (Lettre<97 && Lettre>122);
  151.  
  152. return Lettre;
  153. }
  154.  
  155.  
  156. int Verifier_Lettre(char Lettre, char Lettre_Proposee[50], int place) // fonction Vérifier la lettre
  157. {
  158. int i,j, lettre_deja_proposee;
  159. lettre_deja_proposee=0;
  160.  
  161. if (place==0)
  162. {
  163. Lettre_Proposee[0]=Lettre;
  164. }
  165.  
  166. else
  167. {
  168. for (i=0; i<place;i++)
  169. {
  170. if (Lettre_Proposee[i]==Lettre)
  171. {
  172. printf ("\a") ;
  173. lettre_deja_proposee=1;
  174. printf ("\nVous avez deja propose cette lettre.\n");
  175. }
  176.  
  177. else if (lettre_deja_proposee==0)
  178. {
  179. Lettre_Proposee[place]=Lettre;
  180. }
  181. }
  182. }
  183.  
  184. printf ("\nLes lettres deja proposees sont: ");
  185. printf ("%s", Lettre_Proposee);
  186.  
  187. return Lettre_Proposee[50];
  188. }
  189.  
  190.  
  191. char Affichage_Pendu_Dessin(int rep_erreur) // fonction Afficher le Pendu
  192. {
  193. char tete;
  194. tete = 1;
  195.  
  196. if (rep_erreur==0)
  197. {
  198. printf(" _____________\n");
  199. printf(" |\n");
  200. printf(" |\n");
  201. printf(" |\n");
  202. printf(" |\n");
  203. printf(" |\n");
  204. printf(" _|___________\n\n");
  205. }
  206.  
  207. if(rep_erreur==1)
  208. {
  209. printf(" ___________\n");
  210. printf(" |\t|\n");
  211. printf(" |\n");
  212. printf(" |\n");
  213. printf(" |\n");
  214. printf(" |\n");
  215. printf(" _|_________\n\n");
  216. }
  217.  
  218. if(rep_erreur==2)
  219. {
  220. printf(" ___________\n");
  221. printf(" |\t|\n");
  222. printf(" |\t");
  223. printf("%c",tete);
  224. printf("\n |\n");
  225. printf(" |\n");
  226. printf(" |\n");
  227. printf(" _|_________\n\n");
  228. }
  229.  
  230. if(rep_erreur==3)
  231. {
  232. printf(" ___________\n");
  233. printf(" |\t|\n");
  234. printf(" |\t");
  235. printf("%c",tete);
  236. printf("\n |\t|\n");
  237. printf(" |\n");
  238. printf(" |\n");
  239. printf(" _|_________\n\n");
  240. }
  241.  
  242. if(rep_erreur==4)
  243. {
  244. printf(" ___________\n");
  245. printf(" |\t|\n");
  246. printf(" |\t");
  247. printf("%c",tete);
  248. printf("\n | -|\n");
  249. printf(" |\n");
  250. printf(" |\n");
  251. printf(" _|_________\n\n");
  252. }
  253.  
  254. if(rep_erreur==5)
  255. {
  256. printf(" ___________\n");
  257. printf(" |\t|\n");
  258. printf(" |\t");
  259. printf("%c",tete);
  260. printf("\n | -|-\n");
  261. printf(" |\n");
  262. printf(" |\n");
  263. printf(" _|_________\n\n");
  264. }
  265.  
  266. if(rep_erreur==6)
  267. {
  268. printf(" ___________\n");
  269. printf(" |\t|\n");
  270. printf(" |\t");
  271. printf("%c",tete);
  272. printf("\n | -|-\n");
  273. printf(" | /\n");
  274. printf(" |\n");
  275. printf(" _|_________\n\n");
  276. }
  277.  
  278. if(rep_erreur==7)
  279. {
  280. printf(" ___________\n");
  281. printf(" |\t|\n");
  282. printf(" |\t");
  283. printf("%c",tete);
  284. printf("\n | -|-\n");
  285. printf(" | / \\\n");
  286. printf(" |\n");
  287. printf(" _|_________\n\n");
  288. }
  289. }


Autres pages sur : jeu pendu demande aide

9 Janvier 2012 00:56:52

Vers la ligne 146 tu as ça :
  1. do
  2. {
  3. printf("Choisissez une lettre : ", Lettre);
  4. scanf("%s", &Lettre);
  5. }

Sachant que la variable "Lettre" est un caractère, tu dois utiliser %c dans ton scanf, et pas %s qui signifie lui, "string".

Ensuite, pour ton problème de potence, je ne sais pas trop, c'est assez moche quand même, coder en dur comme ça.
Essaye de remplacer tes if par des else if (à partir du deuxième if) dans ta fonction "Affichage_Pendu_Dessin".

Sinon, utilise un affichage de debug (des printf par exemple), pour savoir si ta variable rep_erreur est bien modifiée comme tu le veux.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS