Le jeu du pendu avec mots stockes dans un fichier texte

Description

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 / Exemple :


#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.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.