- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
-
- #define kMOTS_LONG_MAX 100
-
-
- int EssaiDeviner(char MotStr[], char DevineStr[], char Mauvaiseslettres [],char DevineChar);
- int ObtenirNombreAlleatoire(int NombreDepart, int NombreFin);
- int ObtenirMotDuFichier( char *wstr);
- int MauvaisChoix(char MotStr[], char Mauvaiseslettres[] , char DevineChar);
- void Hangman(char Mauvaiseslettres[], char Pendu[]);
- void Essai(char Mauvaiseslettres[]);
- void InitDevineMot(char *ws, char gs[]);
-
- int j=0;
- int Nouveau_Jeu;
-
- int main()
- {
-
- do
- {
- char StringMot[kMOTS_LONG_MAX];
- char StringDevine[kMOTS_LONG_MAX];
- char Mauvletr[25]={0};
- char Affiche_Pendu[]=" ";
-
- char DevineChar;
-
-
- srand(time(NULL));
- ObtenirMotDuFichier(StringMot);
-
- InitDevineMot(StringMot, StringDevine);
- puts(StringDevine);
-
- do
- {
- printf("Tapez une lettre> ");
- DevineChar = getchar();
- getchar();
- printf("\n");
- EssaiDeviner(StringMot, StringDevine,Mauvletr, DevineChar);
- puts(StringDevine);
- printf(" Mauvais Choix: \n");
- puts(Mauvletr);
- Essai(Mauvletr);
- printf("\n");
- Hangman(Mauvletr,Affiche_Pendu);
- puts(Affiche_Pendu);
-
- if (Mauvletr[6])
- {
- printf ("Vous Avez Perdu!\n");
- printf ("Le Mot est ");puts(StringMot);
- printf ("\nVoulez vous rejouer?\nTaper 1 pour Oui\n 2 pour Non\n***Appuyer Enter Apres Votre Choix***\n");
- scanf("%d" ,&Nouveau_Jeu);
- getchar();
- if (Nouveau_Jeu == 1)
- {
- j=0;//
- goto jaaf;
- }
-
- else if (Nouveau_Jeu == 2)
- return 0;
- }
-
- }while(strcmp(StringMot, StringDevine)!= 0 );
-
- printf ("\nFelicitations!\nVous avez GAGNE!\n");
- printf ("\nVoulez vous rejouer?\nTaper 1 pour Oui\n 2 pour Non\n***Appuyer Enter Apres Votre Choix***\n");
- scanf("%d" ,&Nouveau_Jeu);
- getchar();
-
- if (Nouveau_Jeu == 1)
- {
- j=0;
- goto jaaf;
- }
-
- else if(Nouveau_Jeu == 2)
- return 0;
-
- }while (Nouveau_Jeu == 1);
-
- jaaf:
- main();
-
- }
-
- void InitDevineMot(char *ws, char gs[])
- {
- int Longueur, i;
- Longueur = strlen(ws);
- for(i = 0; i < Longueur; ++i)
- gs[i] = '-';
- gs[Longueur] = '\0';
- }
-
-
- int EssaiDeviner(char MotStr[], char DevineStr[], char Mauvaiseslettres [],char DevineChar)
- {
- int Longueur, i,Correct= 0;
-
- Longueur = strlen(MotStr);
- for(i = 0; i < Longueur; ++i)
- {
-
- if (DevineChar == MotStr[i])
- {
- DevineStr[i] = DevineChar;
- Correct = 1;
- }
- }
-
- if (Correct==0)
- {
- Mauvaiseslettres[j] = DevineChar;
- j++;
- }
-
- return Correct;
- }
-
-
- int ObtenirNombreAlleatoire(int NombreDepart, int NombreFin)
- {
- int n = NombreFin - NombreDepart + 1;
- return ( rand()%n + NombreDepart);
- }
-
-
- int ObtenirMotDuFichier( char *wstr)
- {
- int count = 0, which, i;
-
- FILE *fp;
-
- fp = fopen("Mots.txt", "r");
- if (fp == NULL){
- printf("Impossible d'ouvrir le fichier, exit ObtenirMotDuFichier\n");
- return 0;
- }
-
- fscanf(fp, "%d", &count);
- fgetc(fp);
- which = ObtenirNombreAlleatoire(1, count);
-
- for(i = 1; i <= which; ++i)
- {
- fgets(wstr, kMOTS_LONG_MAX, fp);
- }
-
- fclose(fp);
-
- i = strlen(wstr);
- wstr[i-1] = '\0';
- return count;
- }
-
- void Hangman(char Mauvaiseslettres[], char Pendu[])
- {
- if (Mauvaiseslettres[0])
- Pendu[0]= '*';
- if (Mauvaiseslettres[1])
- Pendu[1]= 'P';
- if (Mauvaiseslettres[2])
- Pendu[2]= 'E';
- if (Mauvaiseslettres[3])
- Pendu[3]= 'N';
- if (Mauvaiseslettres[4])
- Pendu[4]= 'D';
- if (Mauvaiseslettres[5])
- Pendu[5]= 'U';
- if (Mauvaiseslettres[6])
- Pendu[6]= '*';
-
- }
-
- void Essai(char Mauvaiseslettres[])
- {
-
- if (Mauvaiseslettres[6])
- printf("Desole vous etes ");
- else if (Mauvaiseslettres[5])
- printf("Il vous reste 1 Erreurs possible");
- else if (Mauvaiseslettres[4])
- printf("Il vous reste 2 Erreurs possible");
- else if (Mauvaiseslettres[3])
- printf("Il vous reste 3 Erreurs possible");
- else if (Mauvaiseslettres[2])
- printf("Il vous reste 4 Erreurs possible");
- else if (Mauvaiseslettres[1])
- printf("Il vous reste 5 Erreurs possible");
- else if (Mauvaiseslettres[0])
- printf("Il vous reste 6 Erreurs possible");
-
- }
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define kMOTS_LONG_MAX 100
int EssaiDeviner(char MotStr[], char DevineStr[], char Mauvaiseslettres [],char DevineChar);
int ObtenirNombreAlleatoire(int NombreDepart, int NombreFin);
int ObtenirMotDuFichier( char *wstr);
int MauvaisChoix(char MotStr[], char Mauvaiseslettres[] , char DevineChar);
void Hangman(char Mauvaiseslettres[], char Pendu[]);
void Essai(char Mauvaiseslettres[]);
void InitDevineMot(char *ws, char gs[]);
int j=0;
int Nouveau_Jeu;
int main()
{
do
{
char StringMot[kMOTS_LONG_MAX];
char StringDevine[kMOTS_LONG_MAX];
char Mauvletr[25]={0};
char Affiche_Pendu[]=" ";
char DevineChar;
srand(time(NULL));
ObtenirMotDuFichier(StringMot);
InitDevineMot(StringMot, StringDevine);
puts(StringDevine);
do
{
printf("Tapez une lettre> ");
DevineChar = getchar();
getchar();
printf("\n");
EssaiDeviner(StringMot, StringDevine,Mauvletr, DevineChar);
puts(StringDevine);
printf(" Mauvais Choix: \n");
puts(Mauvletr);
Essai(Mauvletr);
printf("\n");
Hangman(Mauvletr,Affiche_Pendu);
puts(Affiche_Pendu);
if (Mauvletr[6])
{
printf ("Vous Avez Perdu!\n");
printf ("Le Mot est ");puts(StringMot);
printf ("\nVoulez vous rejouer?\nTaper 1 pour Oui\n 2 pour Non\n***Appuyer Enter Apres Votre Choix***\n");
scanf("%d" ,&Nouveau_Jeu);
getchar();
if (Nouveau_Jeu == 1)
{
j=0;//
goto jaaf;
}
else if (Nouveau_Jeu == 2)
return 0;
}
}while(strcmp(StringMot, StringDevine)!= 0 );
printf ("\nFelicitations!\nVous avez GAGNE!\n");
printf ("\nVoulez vous rejouer?\nTaper 1 pour Oui\n 2 pour Non\n***Appuyer Enter Apres Votre Choix***\n");
scanf("%d" ,&Nouveau_Jeu);
getchar();
if (Nouveau_Jeu == 1)
{
j=0;
goto jaaf;
}
else if(Nouveau_Jeu == 2)
return 0;
}while (Nouveau_Jeu == 1);
jaaf:
main();
}
void InitDevineMot(char *ws, char gs[])
{
int Longueur, i;
Longueur = strlen(ws);
for(i = 0; i < Longueur; ++i)
gs[i] = '-';
gs[Longueur] = '\0';
}
int EssaiDeviner(char MotStr[], char DevineStr[], char Mauvaiseslettres [],char DevineChar)
{
int Longueur, i,Correct= 0;
Longueur = strlen(MotStr);
for(i = 0; i < Longueur; ++i)
{
if (DevineChar == MotStr[i])
{
DevineStr[i] = DevineChar;
Correct = 1;
}
}
if (Correct==0)
{
Mauvaiseslettres[j] = DevineChar;
j++;
}
return Correct;
}
int ObtenirNombreAlleatoire(int NombreDepart, int NombreFin)
{
int n = NombreFin - NombreDepart + 1;
return ( rand()%n + NombreDepart);
}
int ObtenirMotDuFichier( char *wstr)
{
int count = 0, which, i;
FILE *fp;
fp = fopen("Mots.txt", "r");
if (fp == NULL){
printf("Impossible d'ouvrir le fichier, exit ObtenirMotDuFichier\n");
return 0;
}
fscanf(fp, "%d", &count);
fgetc(fp);
which = ObtenirNombreAlleatoire(1, count);
for(i = 1; i <= which; ++i)
{
fgets(wstr, kMOTS_LONG_MAX, fp);
}
fclose(fp);
i = strlen(wstr);
wstr[i-1] = '\0';
return count;
}
void Hangman(char Mauvaiseslettres[], char Pendu[])
{
if (Mauvaiseslettres[0])
Pendu[0]= '*';
if (Mauvaiseslettres[1])
Pendu[1]= 'P';
if (Mauvaiseslettres[2])
Pendu[2]= 'E';
if (Mauvaiseslettres[3])
Pendu[3]= 'N';
if (Mauvaiseslettres[4])
Pendu[4]= 'D';
if (Mauvaiseslettres[5])
Pendu[5]= 'U';
if (Mauvaiseslettres[6])
Pendu[6]= '*';
}
void Essai(char Mauvaiseslettres[])
{
if (Mauvaiseslettres[6])
printf("Desole vous etes ");
else if (Mauvaiseslettres[5])
printf("Il vous reste 1 Erreurs possible");
else if (Mauvaiseslettres[4])
printf("Il vous reste 2 Erreurs possible");
else if (Mauvaiseslettres[3])
printf("Il vous reste 3 Erreurs possible");
else if (Mauvaiseslettres[2])
printf("Il vous reste 4 Erreurs possible");
else if (Mauvaiseslettres[1])
printf("Il vous reste 5 Erreurs possible");
else if (Mauvaiseslettres[0])
printf("Il vous reste 6 Erreurs possible");
}