Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LE JEU DU PENDU AVEC MOTS STOCKES DANS UN FICHIER TEXTE


Information sur la source

Catégorie :Jeux Niveau : Initié Date de création : 28/04/2002 Date de mise à jour : 28/04/2002 13:57:32 Vu / téléchargé: 3 465 / 235

Note :
Aucune note

Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Voici un jeu du pendu qui choisit un mot au hasard parmi ceux qui sont dans le fichier pendu.txt qui doit etre dans le meme repertoire que l'executable. Si vous faites juste un copier coller et que vous ne telecharger pas le zip vous n'aurez pas le fichier pendu.txt, mais rien ne vous empeche de creer le votre avec 10 mots dedans
 

Source

  • #include <stdio.h>
  • #include <conio.c>
  • #include <fcntl.h>
  • #define MAX_MOTS 10
  • int main()
  • {
  • int increment=0;
  • int increment2=0;
  • int sortie=1;
  • int fichier;
  • int caralu;
  • int ligne=1;
  • int hasard=0;
  • int vies=5;
  • 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;
  • /*GENERE UN NUMERO DE LIGNE AU HASARD*/
  • while (hasard==0)
  • {
  • srand((unsigned)time(NULL));
  • hasard=rand() % MAX_MOTS;
  • }
  • /*OUVRE PENDU.TXT, O_RDWR VEUT DIRE QU'ON
  • OUVRE LE FICHIER POUR LIRE ET/OU ECRIRE DEDANS*/
  • fichier=open("pendu.txt",O_RDWR);
  • /*SI N'ARRIVE PAS A OUVRIR LE FICHIER*/
  • if (fichier==-1)
  • {
  • printf("Impossible d'ouvrir le fichier pendu.txt\n");
  • printf("V\x82rifiez qu'il est bien dans le m\x88me\n");
  • printf("r\x82pertoire 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,1);
  • printf("%s\n\n",essai);
  • gotoxy(1,4);
  • printf("Il reste %d vies",vies);
  • gotoxy(1,5);
  • 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,6);
  • printf("Vous avez deja trouve cette lettre ! ");
  • vies--;
  • }
  • else
  • {
  • gotoxy(1,6);
  • printf("Bravo ! Vous avez trouve la lettre %c ! ",touche);
  • essai[increment]=touche;
  • }
  • }
  • else increment2++;
  • }
  • if (increment2==increment)
  • {
  • gotoxy(1,6);
  • printf("Rate ! Cette lettre n'est pas dans le mot ! ");
  • vies--;
  • }
  • }
  • if (vies<0)
  • {
  • gotoxy(1,8);
  • 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,8);
  • printf("BRAVO ! Vous avez trouve le mot ! vous avez gagne !");
  • gotoxy(1,1);
  • printf("%s",essai);
  • sortie=0;
  • getch();
  • }
  • }
  • }
#include <stdio.h>
#include <conio.c>
#include <fcntl.h>

#define MAX_MOTS 10

int main()
{
  int   increment=0;
  int   increment2=0;
  int   sortie=1;
  int   fichier;
  int   caralu;
  int   ligne=1;
  int   hasard=0;
  int   vies=5;
  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;

  /*GENERE UN NUMERO DE LIGNE AU HASARD*/
  while (hasard==0)
  {
    srand((unsigned)time(NULL));
    hasard=rand() % MAX_MOTS;
  }

  /*OUVRE PENDU.TXT, O_RDWR VEUT DIRE QU'ON
  OUVRE LE FICHIER POUR LIRE ET/OU ECRIRE DEDANS*/
  fichier=open("pendu.txt",O_RDWR);

  /*SI N'ARRIVE PAS A OUVRIR LE FICHIER*/
  if (fichier==-1)
  {
    printf("Impossible d'ouvrir le fichier pendu.txt\n");
    printf("V\x82rifiez qu'il est bien dans le m\x88me\n");
    printf("r\x82pertoire 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,1);
    printf("%s\n\n",essai);
    gotoxy(1,4);
    printf("Il reste %d vies",vies);
    gotoxy(1,5);
    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,6);
            printf("Vous avez deja trouve cette lettre !      ");
            vies--;
          }
          else
          {
            gotoxy(1,6);
            printf("Bravo ! Vous avez trouve la lettre %c !        ",touche);
            essai[increment]=touche;
          }
        }
        else increment2++;
      }
      if (increment2==increment)
      {
        gotoxy(1,6);
        printf("Rate ! Cette lettre n'est pas dans le mot !    ");
        vies--;
      }
    }
    if (vies<0)
    {
      gotoxy(1,8);
      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,8);
      printf("BRAVO ! Vous avez trouve le mot ! vous avez gagne !");
      gotoxy(1,1);
      printf("%s",essai);
      sortie=0;
      getch();
    }
  }
} 

Conclusion

attention si vous faites votre propre fichier pendu.txt, il devra avoir le meme nombre de mots que le nombre defini par MAX_MOTS, et surtout chaque mot devra etre ecris sur une ligne, et des que le mot est fini vous allez tout de suite a la ligne. Si vous mettez un espace le programme fera comme si c'etait une lettre et comme on ne peut appuyer que sur les lettres il sera impossible de gagner.  
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de azimz le 02/05/2005 22:32:06

j'ai le message d'erreur sous dev c++ : [Linker error] undefined reference to 'gotoxy' et qd je met  #include <conio.h> j'ai conio.c :  No such file or directory

signaler à un administrateur
Commentaire de Floryane le 06/01/2006 14:01:41

j'aimerai pouvoir mettre ce jeu sur irc est ce possible et si ui quel commande rajouter(nul en programtion)
merci

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,23 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.