Soyez le premier à donner votre avis sur cette source.
Vue 29 090 fois - Téléchargée 1 758 fois
#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; }
je suis désolé, je débute en programmation.
Quand je lance le prog sous xcode (sur mac) il me dit que ya plein d'erreurs...?
;-)
Pour ce qui est de la programmation :
- tu ferais mieux d'utiliser plusieurs fonctions plutôt qu'un gros main
- les commentaires sont bien utilisés je trouve (ni trop ni trop peu). En revanche mettre 50 tirets dans le commentaire ne sert à rien si tu tiens compte de ma remarque précédente...
- tu ne fais aucun contrôle sur ce que saisit le joueur. Il peut saisir # ou & ou @ et c'est compté comme une erreur. Pire, les caractères accentués et les majuscules sont comptés comme des erreurs (ta liste de mots étant en minuscule). Tu devrais prévoir ce genre de contrôle.
- je trouve ton indentation moyennement lisible. Tu n'es pas cohérent : un coup tu saut une ligne après une accolade, un coup non, un coup tu mets plusieurs tabulations, ...
- la ligne "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){" est proche du blasphéme informatique !!! Un petit FOR serait tellement mieux! (et même j'en ferais une fonction à part si j'étais toi). Et pour information tu peux écrire "else if" sans avoir besoin d'accolade entre le else et le if.
- il me semble que tu abuse aussi des "break". Toujours la même remarque : avec plusieurs fonctions tu pourrais faire plus lisible et maintenable
Bonne prog
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.