Jeu de pendu

jiyda Messages postés 1 Statut Membre -  
Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut a tout, :)

j'ai un probleme avec la realisation du jeu de pendu, voila mon code source

Main.c

Code : C

#include <stdio.h>
#include <stdlib.h>
#include "pendule.h"
#include <ctype.h>

int main(int argc, char *argv[])
{
long i, coups=10;
char motSecret[]="MOTSECRET", motCache[]="*********";
char lettreEntree;
printf("Jeu de pendu \n");
while(gagne(motSecret, motCache)!=0 && coups>0)// tant que le joueur n'a pas gagner et qu'il lui reste encore des coups
{
printf("Entrer une lettre:\n");
lettreEntree=lireCaractere(); //on demande au joueur d'entrer une lettre a l'aide de la fonction lireCaractere qui est situee dans pendule.c

for(i=0; motSecret[i] != '\0'; i++)
{

if(lettreEntree==motSecret[i]) // on compare la lettre entree avec les lettre du mot secret
{
motCache[i]=lettreEntree; // si elle est identique a l'une des lettre on la revele
}

}
printf("%s", motCache); //on affiche le mot cache
coups--;
printf("Il vous reste %ld coups.\n ", coups );

}
system("PAUSE");
return 0;
}

pendule.h

Code : C

char lireCaractere();
int gagne (char*, char*);

pendule.c

Code : C

char lireCaractere()
{
char caractere=0;

caractere = getchar();
caractere = toupper(caractere);

while (caractere != '\n' );

return caractere;
}
int gagne(char motSecret[], char motCache[])
{
long i, gagne=0;

char caractere = -1;

for(i=0; caractere != '\0'; i++)
{
caractere = motSecret[i];

if(caractere != motCache[i])
{
gagne++;
}

}

return gagne;
}

Je suis sous Visual C++, le programme s'execute mais des que j'entre une lettre il s'arrete je ne sais pas pourquoi???
Merci d'avance !!
--------------------------------------------------------------------------------
JiYd@
A voir également:

1 réponse

Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
si tu utilise getchar(), ta boucle while(caractere != '\n' );
est :
1) inutile
2) (ce qui est plus grave) inopérante; en effet, tu lui dit de ne rien faire tant que "caractère" est différent du retour à la ligne. Or, si il ne fait rien "caractère" ne risque pas de changer de valeur ! Une belle boucle infini quoi.
Essai en retirant cette ligne.
0