Bonjour à tous,
j’ai programmé un pendu en C, mais je rencontre un problème tout marchait parfaitement mais aujourd’hui je ne sais pas pourquoi lorsque je lance le programme la console reste noire, totalement vide
main :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "header.h"
int nombreAleatoire ();
int main() //boucle du jeu + appel des différentes fonctions
{
char mot[25];
char entree[25];
int nombre = 0, rejouer=1;
while (rejouer==1)
{
motAleatoire(mot, entree); //correspondance avec un mot aléatoire + assignation à mot et entree
int coups=10;
char lettre;
printf(" BIENVENUE DANS LE JEU DU PENDU\n\n "); // TITRE
printf ("Le mot est %s, il vous reste %d coups\n\n", entree, coups); //affichage de l'entree
while (strcmp(mot, entree)!=0 && coups>=1 ) // tant que l'entree et le mot sont différents
{
scanf("%c", &lettre);
if (existenceLettre(mot, toupper(lettre))) //si la lettre est dans le mot
{
afficheLettres (mot, entree, toupper(lettre)); // alors on l'insere dans l'entree
}
else if (toupper(lettre)!='\n') //si la lettre n'est pas dans le mot et n'est pas un retour à la ligne
{
coups--; //on perd une vie
if(coups==0) //si on a plus de vie
{
printf("DESOLE MAIS VOUS ETES PENDU\n le mot etait : %s", mot); // l'utilisateur est pensu
printf ("\nVoulez-vous rejouer ?\n0.non\n1.oui\n");
scanf ("%d", &rejouer);
}
else // sinon il reste X coups
{
printf ("la lettre %c n'est pas dans le mot mystere, \nil vous reste %d coups avant d'etre pendu\n", lettre, coups);
}
}
}
if (strcmp(mot, entree)==0) // si l'entree et le mot sont identiques
{
coups=10-coups; //calcul des erreurs
printf("VOUS AVEZ GAGNE %s ETAIT LE MOT MYSTERE EN %d ERREURS\n", mot, coups);
printf ("\nVoulez-vous rejouer ?\n0.non\n1.oui\n");
scanf ("%d", &rejouer);
}
}
system("PAUSE");
return 0;
}
header.h :
#ifndef header.h
#define header.h
void motAleatoire (char *mot, char *entree);
void afficheLettres (char *mot, char *entree, char lettre);
int existenceLettre(char *mot, char lettre);
int nombreMots ();
void selectionnerMot (char *mot, char *entree, int nombreMots);
#endif
mot aléatoire.c :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#define MIN 1
#include "header.h"
void motAleatoire (char *mot, char *entree)
{
int numeroDuMot = 0;
nombreMots();
srand(time(NULL));
numeroDuMot = (rand() % (nombreMots() - MIN + 1)) + MIN; //génération d'un nombre aléatoire
selectionnerMot(mot, entree, numeroDuMot);
}
int nombreMots ()
{
int nombreMots = 0, caractereLu = 0;
FILE* dico;
dico = fopen("dico.txt", "r");
rewind(dico);
while (caractereLu != EOF)
{
caractereLu = fgetc(dico);
if (caractereLu == '\n')
nombreMots++;
}
fclose(dico);
nombreMots--;
return nombreMots;
}
void selectionnerMot (char *mot, char *entree, int numeroDuMot)
{
int caractereLu=0,i=0;
FILE* dico;
dico = fopen("dico.txt", "r");
rewind(dico);
while (numeroDuMot>0)
{
caractereLu = fgetc(dico);
if (caractereLu == '\n')
numeroDuMot--;
}
fgets(mot, 30, dico);
mot[strlen(mot) - 1] = '\0';
for (i=1;i<strlen(mot);i++)
{
entree[i] = '*';
}
entree[0]=mot[0];
fclose(dico);
}
existence.c (de la lettre dans le mot) :
int existenceLettre(char *mot, char lettre)
{
int i=0;
for (i=0;i<strlen(mot);i++)
{
if (mot[i] == lettre)
{return 1;}
}
for (i=0;i<strlen(mot);i++)
{
if (mot[i] != lettre)
{return 0;}
}
}
affiche lettres :
void afficheLettres (char *mot, char *entree, char lettre)
{
int i=0,nombreDeLettres=0;
for (i=0;i<strlen(mot);i++)
{
if(mot[i]==lettre)
{
entree[i]=lettre;
}
}
printf ("\n%s\n\n", entree);
}
le dictionnaire : fichier dico.txt :
MAISON
ELEMENT
PATRIMOINE
ALPHABET
SUSPENDRE
LANGAGE
MARTEAU
CEINTURE
EXAMEN
SUBDUCTION
Est-ce que quelqu’un a déjà rencontré ce problème ? Comment y remédier ? Merci
Message edité le 30/03/2010 à 23:18