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 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
char lireCaractere()
{
char caractere = 0;
caractere = getchar(); // On lit le premier caractère
// On lit les autres caractères mémorisés un à un jusqu'au \n (pour les effacer)
while (getchar() != '\n') ;
return toupper(caractere); // On retourne le caractère lu en majuscules
}
void afficheMot (char motCache[], int lettreTrouve[])
{
int i;
printf("Le mot à trouver : ");
for (i=0 ; i<strlen(motCache); i++)
{
if (lettreTrouve[i]==1)
{
printf("%c", motCache[i]);
}
else
{
printf("*");
}
}
printf("\n");
}
int verificationLettre (char motCacher[], int lettreTrouve[], char lettre)
{
int i = 0;
int bonneLettre = 0;
printf("lettre=%c\n", lettre);
for (i=0 ; i < strlen(motCacher) ; i++)
{
if (motCacher[i] == lettre)
{
lettreTrouve[i] = 1;
bonneLettre = 1;
}
}
return bonneLettre;
}
int gagner(int lettreTrouve[], char motSecret[])
{
int i = 0;
int gagne = 1;
for (i=0 ; i<strlen(motSecret) ; i++)
{
if (lettreTrouve[i] == 0)
gagne = 0;
}
return gagne;
}
void hasardMot (char *motSecret)
{
int nbr_ligne = 0;
int nbr_mots = 0;
int i = 0;
FILE *fichier = NULL;
srand(time(NULL));
//ouverture du fichier
fichier = fopen("dico", "r");
//verification ouverture fichier
if(fichier != NULL)
{
printf("fichier ouvert\n\n");
fscanf(fichier, "%d", &nbr_mots);
nbr_ligne =(rand()%(nbr_mots-1)+1);
for (i=0 ; i<nbr_ligne ; i++)
{
fscanf(fichier, "%s", motSecret);
}
fclose(fichier);
printf("[%s]\n", motSecret);
}
else
{
printf("Impossible d'ouvrir le fichier dico");
}
}
int main()
{
char motSecret[100] = ""; //le mot à trouver
hasardMot(motSecret);
int *lettreTrouve = NULL; //tableau boléen qui permet de savoir quelle lettre a été trouvée
lettreTrouve = malloc(strlen(motSecret)*sizeof(int) );
char lettre = 0; //lettre entré par l'utilisateur
int vie = 10; //nombre de vie pour trouver le mot
int gagne = 0; //1 si le jouer a gagné et 0 si le jouer n'a pas gagné
int i = 0;
for (i=0 ; i<strlen(motSecret); i++)
{
lettreTrouve[i] = 0;
}
printf("::: Bienvenu dans ce jeu du pendu :::\n");
printf("Vous avez %d vies pour trouver le mot secret\n\n", vie);
while (vie>0 && !gagner(lettreTrouve, motSecret))
{
for (i=0; i < strlen(motSecret); i++)
printf("%d ", lettreTrouve[i]);
printf("\n");
gagne = 1;
printf("Il vous reste %d vies\n", vie);
afficheMot(motSecret, lettreTrouve);
printf("Entrer une lettre : ");
lettre = lireCaractere();
if (!verificationLettre(motSecret, lettreTrouve, lettre))
{
vie--;
}
printf("\n");
}
if (gagner(lettreTrouve, motSecret))
{
printf("Bravo, vous avez gagné !!!");
}
else
{
printf("C'est perdu, le mot à trouver était %s", motSecret);
}
free(lettreTrouve);
return 0;
} |
Partager