bon jour,
voila j'ai un probleme avec un programme en C
il s'agit du jeu du pendu.
tout me semble pourtant corect mais je pense que je dois a voir un probleme au niveau du choix et de l'ouverture de fichier texte ou sont stocker les mots a touver.
je poste ici la source de mon fichier en esperant que quelqu'un pourra me donner un coup de main.
#include <stdio.h>
#include <econio.h>
#include <fcntl.h>
#define MAX_MOTS 15
int main()
{
int increment=0;
int increment2=0;
int sortie=1;
int fichier;
int caralu;
int ligne=1;
int hasard=0;
int vies=5;
int choix;
char cara[100];
char mot[15]="\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
char essai[15]="\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
char touche;
gotoxy(1,1);
printf("bienvenue dans le jeu du pendu\n");
gotoxy(1,2);
printf("jouer avec\n");
gotoxy(1,3);
printf("s:le sport\n");
gotoxy(1,4);
printf("n:la nature\n");
gotoxy(1,5);
scanf("%d",&choix);
printf("\n");
printf("\n");
switch(choix)
{
case 's': fichier=open("sport.txt",O_RDWR);
break;
case 'n': fichier=open("nature.txt",O_RDWR);
break;
};
while (hasard==0)
{
srand((unsigned)time(NULL));
hasard=rand() % MAX_MOTS;
}
// SI N'ARRIVE PAS A OUVRIR LE FICHIER
if (fichier==-1)
{
printf("Impossible d'ouvrir le fichier pendu.txt\n");
printf("verifiez qu'il est bien dans le meme\n");
printf("repertoire que l'executable.");
getch();
return 1;
}
caralu=read(fichier,cara,100); //LIT LE CONTENU DU FICHIER
//TANT QU'ON N'EST PAS AU NUMERO DE LIGNE
//EGAL A HASARD COMPTE LE NOMBRE DE LIGNE
while (hasard!=ligne)
{
if (cara[increment]=='\n') ligne++;
increment++;
}
//TANT QUE LA LIGNE N'EST PAS TERMINEE
while (cara[increment]!='\n')
{
mot[increment2]=cara[increment];
essai[increment2]='?';
increment2++;
increment++;
}
close(fichier); //REFERME LE FICHIER
while (sortie==1)
{
gotoxy(1,6);
printf("%s\n\n",essai);
gotoxy(1,7);
printf("Il reste %d vies",vies);
gotoxy(1,8);
printf("Appuyez sur une lettre ");
touche=getch();
if (touche==27) sortie=0; //SI ESCAPE QUITTE
/*SI C'EST UNE MAJUSCULE TRANSFORME EN MINUSCULE*/
if ((touche<=90)&&(touche>=65)) touche=touche+32;
/*SI UNE LETTRE A ETE PRESSEE*/
if ((touche<=122)&&(touche>=97))
{
increment2=0;
for (increment=0 ; increment<=14 ; increment++)
{
if (mot[increment]==touche)
{
if (essai[increment]==touche)
{
gotoxy(1,10);
printf("Vous avez deja trouve cette lettre ! ");
vies--;
}
else
{
gotoxy(1,10);
printf("Bravo ! Vous avez trouve la lettre %c ! ",touche);
essai[increment]=touche;
}
}
else increment2++;
}
if (increment2==increment)
{
gotoxy(1,10);
printf("Rate ! Cette lettre n'est pas dans le mot ! ");
vies--;
}
}
if (vies<0)
{
gotoxy(1,10);
printf("PERDU ! Vous n'avez pas trouve le mot !");
sortie=0;
getch();
}
increment2=0;
for (increment=0 ; increment<=14 ; increment++)
{
if (mot[increment]==essai[increment]) increment2++;
}
if (increment2==15)
{
gotoxy(1,10);
printf("BRAVO ! Vous avez trouve le mot ! vous avez gagne !");
gotoxy(1,6);
printf("%s",essai);
sortie=0;
getch();
}
}
}
merci de votre attention.