Jeu du mot caché (style pendu)

Description

Ce jeu est connu de tous, ici c'est l'ordinateur qui choisi un mot dans le fichier texte mots.txt contenant les mots qui seront utilisés pour le jeu. Il suffit alors de proposer des lettres pour retrouver le mot caché. Au bout de 12 erreurs le programme considère que vous avez perdu et vous dévoile le mot caché. sinon si vous trouvez le mot vous avez gagné.
amusez vous bien.

PROBLEME : ce programme est un de mes tout premiers programmes, et il n'est pas du tout orienté objet, mais peut etre une version objet viendra un jour. ;-)

Source / Exemple :


#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdio.h>
#include <math.h>

int main( )
{
//---------------------------------------Initialisation des variables
  char tableau[100],tableau2[100],tableau3[100],lettre,deja[26];
  for (int i=0;i!=100;i++){tableau2[i]='\0';tableau3[i]='\0';}
 do{
  randomize();
  for (int i=0;i!=26;i++)deja[i]='\0';
  int x,y,fautes=0,coups=0,cpt=0,cptlettres=0;
  bool gagne,perdu,okplay;
  gagne=okplay=perdu=false;
  ifstream lecture;
//-------------------------------------------

//choix d'un mot dans la base de données
  lecture.open("mots.txt");
   x=random(45);//suivant le nombre de mots dans le fichier texte
  for(x;x!=0;x--)lecture>>tableau;
//----------------------------------------------

  for(int i=0;tableau[i]!='\0';i++){
    cpt+=1;
    tableau2[i]='_';}

  do{clrscr();
//affichage fautes-------------------
  switch (fautes){
          case 1: gotoxy(20,10);textcolor(0x9);cprintf("_");break;

          case 2: gotoxy(20,10);textcolor(0x9);cprintf("_ _");break;

          case 3: gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");break;

          case 4: gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
          gotoxy(25,11);textcolor(0xA);cprintf("I");break;

          case 5: gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
            gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");break;

          case 6:  gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
          gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");gotoxy(25,13);cprintf("I");break;

          case 7:  gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
          gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");gotoxy(25,13);cprintf("I");
          gotoxy(20,13);textcolor(0xE);cprintf("    _");break;

          case 8: gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
            gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");gotoxy(25,13);cprintf("I");
            gotoxy(20,13);textcolor(0xE);cprintf("  _ _");break;

          case 9: gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
            gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");gotoxy(25,13);cprintf("I");
            gotoxy(20,13);textcolor(0xE);cprintf("_ _ _");break;

          case 10: gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
          gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");gotoxy(25,13);cprintf("I");
          gotoxy(20,13);textcolor(0xE);cprintf("_ _ _");
            gotoxy(19,13);textcolor(0xC);cprintf("I");break;

          case 11 :gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
          gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");gotoxy(25,13);cprintf("I");
          gotoxy(20,13);textcolor(0xE);cprintf("_ _ _");
          gotoxy(19,13);textcolor(0xC);cprintf("I");
          gotoxy(19,12);textcolor(0xC);cprintf("I");break;

          case 12:gotoxy(20,10);textcolor(0x9);cprintf("_ _ _");
          gotoxy(25,11);textcolor(0xA);cprintf("I");gotoxy(25,12);cprintf("I");gotoxy(25,13);cprintf("I");
          gotoxy(20,13);textcolor(0xE);cprintf("_ _ _");
          gotoxy(19,13);textcolor(0xC);cprintf("I");
          gotoxy(19,13);textcolor(0xC);cprintf("I");
          gotoxy(19,11);textcolor(0xC);cprintf("I");break;
          x=random(50);
    };
//---------------------------------------------------------------------

//---affichage interface de jeu -------------------------
    gotoxy(5,1);textcolor(0xF);cprintf("Trouvez le mot cache");
    gotoxy(9,3); for(int i=0;tableau2[i]!='\0';i++)cout<<tableau2[i]<<' ';
    gotoxy(30,2);
    textcolor(0xA);cprintf("Nombre de coups : ");cout<<coups;
    gotoxy(30,3);
    textcolor(0xC);cprintf("Nombre de fautes : ");cout<<fautes;
    gotoxy(30,4);
    textcolor(0xE);cprintf("Droits a l'erreur : ");cout<<12-fautes;
    cout<<endl<<endl;textcolor(0xF);cprintf("Proposez une lettre ");
    cout<<endl;textcolor(0xB);cprintf("Lettres deja proposees : ");cout<<deja;
    gotoxy(21,6);
    cin>>lettre;
//---------------------------------------------------------------------------

  for (int i=0;i!=26;i++)
  {
//si la lettre a déja été proposée -------------------------------------------------
    if (lettre==deja[i])
    {
    clrscr();
    cout<<"cette lettre a deja ete proposee, appuyez sur entree"<<endl;
    okplay=false;
    cin.get();cin.get();
    break;break;
    }
// sinon enregistrer la lettre dans le tableau des lettres déja proposées-----
    else{ if (deja[i]=='\0' && deja[0]!=lettre && deja[1]!=lettre && deja[2]!=lettre && deja[3]!=lettre && deja[4]!=lettre && deja[5]!=lettre && deja[6]!=lettre && deja[7]!=lettre && deja[8]!=lettre&& deja[9]!=lettre&& deja[10]!=lettre&& deja[11]!=lettre&& deja[12]!=lettre&& deja[13]!=lettre&& deja[14]!=lettre && deja[15]!=lettre && deja[16]!=lettre && deja[17]!=lettre && deja[18]!=lettre && deja[19]!=lettre&& deja[20]!=lettre && deja[21]!=lettre && deja[22]!=lettre && deja[23]!=lettre && deja[24]!=lettre && deja[25]!=lettre){
      deja[i]=lettre;
      okplay=true;
    }
    }
    }
//----recherche si la lettre corresspond a un lettre du mot chaché -----
  if (okplay==true){
    for(int i=0;tableau2[i]!='\0';i++)
      tableau3[i]=tableau2[i];
    for(int i=0;tableau[i]!='\0';i++){
      if (lettre==tableau[i])
      {
        tableau2[i]=lettre;
        cptlettres+=1;
         }
      else {
        if (tableau2[i]=='\0' || tableau2[i]=='_')
        {
          tableau2[i]='_';
        }
        }
      }
//----------------------------------------------------------------
//--- si la lettre n'est pas dans le mot alors comptaliser la faute
      int a=0,b=0;
       for(int i=0;tableau2[i]!='\0';i++){
         a=a+tableau2[i];
         b=b+tableau3[i];}
       if (b==a)
    fautes++;
//------------------------------------------------------------
    coups+=1; }

//---si le mot est déchiffré alors c'est gagné-------------
  if(cptlettres==cpt){
    gagne=true;
    break;}
//-------------------------------------------------------------------

//--------sinon au bout de 12 erreurs c'est perdu----------------
  if (fautes==12){
    perdu=true;
    break;}
//--------------------------------------------------------------
  }while (gagne!=true || perdu!=true);
  if (gagne==true)
  {clrscr();
      cout<<endl<<"vous avez gagne"<<endl<<"le mot etait : "<<tableau<<" BRAVO !!!";}

  if(perdu==true)
  {clrscr();gotoxy(20,1);textcolor(0x9);cprintf("_ _ _");
    gotoxy(25,2);textcolor(0xA);cprintf("I");gotoxy(25,3);cprintf("I");gotoxy(25,4);cprintf("I");
    gotoxy(20,4);textcolor(0xE);cprintf("_ _ _");
    gotoxy(19,4);textcolor(0xC);cprintf("I");
    gotoxy(19,3);textcolor(0xC);cprintf("I");
    gotoxy(19,2);textcolor(0xC);cprintf("I");
    gotoxy(1,5);cout<<endl<<"vous avez perdu"<<endl<<"le mot etait : "<<tableau;}

    cout<<endl<<"voulez vous recommencer avec un nouveau mot a chercher ? (o/n) ";

    cin>>lettre;
    if( lettre=='n')break;
}while (1);

return 0;
  }

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.