Bonjour,
Le probleme est le suivant :
Je lance pendu.exe je rentre les lettres pour marron, on me demande une
nouvelle Partie je met oui la partie redemarre, jusque la pas de probleme.
Je rerentre une lettre pour trouver le mot mystere et celle ci n'est pas
prise en compte (exemple si je tape la lettre m pour marron mon coups va
diminuer comme si m ne se trouver pas dans marron)
Et si je rerentre m une seconde fois la mon coups ne diminue pas et la lettre m
s'affiche dans le mot mystere crypte.
Voici mon code :
Main.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include <stdio.h> #include <stdlib.h> #include "jeux.h" int main() { int nouvellePartie = 0, a = 1; do { char motMystere[] = "MARRON", motMystereCrypte[7] = {0}; char lettreEntre = 0; long coups = 10; int sortieBoucle = 1; cryptageMotMystere (motMystere, motMystereCrypte); printf("\nBienvenue dans le jeux du pendu !\n\n\n"); do { printf ("\nIl vous reste %ld coups a jouer\n", coups); printf ("Quel est le mot secret ? %s\n", motMystereCrypte); printf ("Proposez une lettre : "); lettreEntre = lireCaractere(); verificationLettreEntre (motMystere, motMystereCrypte, lettreEntre, &coups); gagne (motMystere, motMystereCrypte, coups, &nouvellePartie, &sortieBoucle); }while (sortieBoucle); }while (nouvellePartie); return 0; }
Jeux.c :
Jeux.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 #include <stdio.h> #include <stdlib.h> #include <ctype.h> char lireCaractere() { char caractere = 0; caractere = getchar(); // On lit le premier caractère caractere = toupper(caractere); // On met la lettre en majuscule si elle ne l'est pas déjà // On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer) while (getchar() != '\n') ; return caractere; // On retourne le premier caractère qu'on a lu } void cryptageMotMystere (char motMystere[], char motMystereCrypte[]) { long nombreDeLettreMotMystere = 0, i; nombreDeLettreMotMystere = strlen(motMystere); for (i = 0; i < nombreDeLettreMotMystere; i++) { motMystereCrypte[i] = '*'; } } void verificationLettreEntre (char motMystere[], char motMystereCrypte[], char lettreEntre, long *coups) { long nombreDeLettreMotMystere = 0, i; char copieMotMystereCrypte[7] = {0}; strcpy (copieMotMystereCrypte, motMystereCrypte); nombreDeLettreMotMystere = strlen(motMystere); for (i = 0; i < nombreDeLettreMotMystere; i++) { if (lettreEntre == motMystere[i]) { motMystereCrypte[i] = lettreEntre; } } if (strcmp (copieMotMystereCrypte, motMystereCrypte) == 0) { *coups-= 1; } } void gagne (char motMystere[], char motMystereCrypte[], long coups, int *nouvellePartie, int *sortieBoucle) { if (coups == 0) { *sortieBoucle = 0; printf ("\nPerdu, le mot mystere etait : %s\n\n", motMystere); printf ("Une nouvellePartie ?\n\n"); printf ("1. Oui\n"); printf ("2. Non\n\n"); scanf ("%ld", nouvellePartie); } else if (strcmp (motMystere, motMystereCrypte) == 0) { *sortieBoucle = 0; printf ("\nGagne ! Le mot mystere etait bien : %s\n\n", motMystere); printf ("Une nouvellePartie ?\n\n"); printf ("1. Oui\n"); printf ("2. Non\n\n"); scanf ("%ld", nouvellePartie); } if (*nouvellePartie != 1) { *nouvellePartie = 0; } }
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 void cryptageMotMystere (char motMystere[], char motMystereCrypte[]); char lireCaractere(); void verificationLettreEntre (char motMystere[], char motMystereCrypte[], char lettreEntre, long *coups); void gagne (char motMystere[], char motMystereCrypte[], long coups, int *nouvellePartie, int *sortieBoucle);
Partager