Pendu en c

scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006 - 24 juin 2006 à 16:23
scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006 - 25 juin 2006 à 14:24
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.

6 réponses

cs_eRoZion Messages postés 241 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 8 octobre 2007 1
24 juin 2006 à 18:01
Salut,

j'ai pas le temps de regarder, je le ferai surement cette nuit si tu n'as pas trouvé mais à mon avis le problème vient du fait que tu compile en console 32 bits et que du coup il faudrait que tu redefinisse le repertoire de travail qui par defaut n'est pas celui de l'executable.

Essaie de placer les fichier sport.txt, nature.txt etc dans C:\sport.txt etc et remplace
case 's': fichier=open("sport.txt",O_RDWR);
par
case 's': fichier=open("c:\\sport.txt",O_RDWR);
etc

Si ca marche c'est ça sinon je regarderai plus tard comme je te l'ai dis plus haut.

eRoZion
0
ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
24 juin 2006 à 19:59
pour moi il y a pas mal de chose qui pourais provoquer des erreur
- non verification de fin de chaine
- posibilite de tomber 2 fois d'affiller sur le mm mot (time(0)) mieux (time(0)*getpid)
-les goto j'aime pas c'est barbar mais bon sa depend des gents
-et tu peu aussi fait plusieur fonction sa aide a mieux savoir ou sa marche pas
- tu fait aussi un read de 100 mais qui te dit que ton fichier fera pas 500 fois plus

mais deja coupe test fonction sa sera un debut pour voir plus clair dans ton code tu sera ce qui foire et ce qui marche
0
scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006
24 juin 2006 à 20:14
merci pour vos reponse ca fait plaisir de voir des gens qui essaie de m'aider et je vous en suis tres reconnaissant.
erozion j'ai essayer comme tu me las dit de changer les fichier txt de repertoire mais ca ne change rien dans l'exectuion du programme.
le probleme doit donc bien s'effectuer au niveau du choix du fichier et de sa lecture.
je vais essyer de trouver le probleme mais si vous y arriver avant moi merci de m'en faire part.

 merci a tous et bonne soirée.

ps:
 ben92600 j'ai pas encore eu le temps de tout essayer , mais je m'y mettrais demain, en tout cas merci d'avoir repondu.
0
ben92600 Messages postés 56 Date d'inscription dimanche 13 novembre 2005 Statut Membre Dernière intervention 11 juillet 2006
24 juin 2006 à 20:51
je vais voir si je retrouve celui que javais fait
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006
25 juin 2006 à 14:17
bonjour,
merci pour vos reponses mais j'ai fini par resoudre mon probleme.
en fait il s'agissait d'une mauvaise definition de la variable "choix" qui provoquait une erreur lors de l'ouverture des fichiers.
donc voila desormais tout fonctionne.
merci a tous
0
scons Messages postés 8 Date d'inscription jeudi 23 octobre 2003 Statut Membre Dernière intervention 28 juin 2006
25 juin 2006 à 14:24
juste une petit question

comment fais ton pour deplacer le message "press any key to continue" quand on decide de quitter l'application?
0
Rejoignez-nous