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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
/*fonction pour enregistrer le caractère tapé et le mettre en majuscule avant de le retourner au main*/
char lireCaractere()
{
char lettre = 0;
printf("quelle lettre ? ");
lettre=getchar();
lettre=toupper(lettre);
while (getchar()!='\n'); //vide le buffer
printf("voici votre lettre = %c\n", lettre); //pour verifier
return lettre;
}
char rechercheLettre (char lettre, int nbLettre, int* nbDeChance, char* motPendu, char* motPenduCache)
{
int j;
int k=0;
for (j=0;j<nbLettre;j++)
{
if (motPendu[j]== lettre)
{
k++; /*pour connaitre le nb de lettre trouvee appartenant au mot*/
motPenduCache[j]=lettre; /*remplace le caractere "*" par la lettre trouvee*/
}
}
if (k>0)
{
printf("bravo vous avez trouve %d lettre(s)\n", k);
printf("voici le mot restant %s\n", motPenduCache); /*ecriture type "**E***" */
}else
{
printf("faux\n");
(*nbDeChance)--;
printf("il vous reste %d chance\n", *nbDeChance);
}
}
int main (int argc, char* argv[])
{
int nbLettre=0;
int nbDeChance=5;
char lettre=0;
char* motPendu=0;
char* motPenduCache=0;
/* choix du nombre de lettre pour le mot */
printf("nombre de lettre ? ");
scanf("%d", &nbLettre);
/*allocation memoire pour les tableaux contenant le mot et sa version cache avec "*" */
motPendu = malloc ((nbLettre+1) * sizeof(char)); /* (nbLettre + 1) afin de ne pas oublier '\0' */
motPenduCache = malloc((nbLettre+1) * sizeof(char));
/*choix du mot en respectant le nombre de lettre contenu dans le mot */
do{
printf("quel mot a deviner en %d lettres ? ", nbLettre);
scanf("%s", motPendu);
}while (strlen(motPendu)!=nbLettre);
/* initialisation du mot cache avec a la place des caracteres des "*" */
int i;
for (i=0; i<nbLettre;i++)
{
motPenduCache[i]='*';
}
printf("voici le mot a trouve : %s\n", motPenduCache);
/* vidage du buffer */
while (getchar()!='\n');
/* debut du jeu*/
while (nbDeChance>0)
{
lettre = lireCaractere();
/* est ce que la lettre appartient au mot cherche */
rechercheLettre(lettre, nbLettre, &nbDeChance, motPendu, motPenduCache);
/* lorsque l'on a trouve toutes les lettres du mot le jeu s'arrete */
if (!(strcmp(motPenduCache, motPendu)))
{
printf("BRAVO\n\n\n");
return;
}
}
if (nbDeChance==0)
{
printf("desole vous avez perdu\n");
}
free(motPendu);
free(motPenduCache);
} |
Partager