Pendu

Contenu du snippet

C'est un pendu. Tous le monde connait le principe: un joueur 1 rentre un mot et un joueur 2 à un nombre prédéterminé de chances pour le trouver.

Source / Exemple :


//compilé avec builder c++5
#include <dos.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
int posx=10,chance=10,victoire=0;
char mot[15+1];
char proposition[2];
bool l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,l13,l14,l15=false,ok;
int anti1,anti2,anti3,anti4,anti5,anti6,anti7,anti8,anti9,anti10,anti11,anti12,anti13,anti14,anti15;

void couleur(){ //couleur du symbole pendu
srand((long int)time(NULL));
int couleur;
while((couleur>15) || (couleur == 0)){couleur=rand();}
textcolor(couleur);
}

void caractere(int nombre){//dessin d'un carctere de code ascii 178
for(int i = 0;i<nombre;i++){
putchar(178);}}

void espace(int nombre2){ //dessin d'un espace
for(int i = 0;i<nombre2;i++){cout<<' ';}}
void saut(){cout<<endl;}

void pendu(int posx) //"forme,aspect" du symbole
{       clrscr();
        gotoxy(posx,2);//10,2
        caractere(3);
        espace(1);
        caractere(4);
        espace(1);
        caractere(1);
        espace(3);
        caractere(1);
        espace(1);
        caractere(4);
        espace(1);
        caractere(1);
        espace(2);
        caractere(1);
        gotoxy(posx,3);//10,3
        caractere(1);
        espace(1);
        caractere(1);
        espace(1);
        caractere(1);
        espace(4);
        caractere(2);
        espace(2);
        caractere(1);
        espace(2);
        caractere(1);
        espace(1);
        caractere(1);
        espace(1);
        caractere(1);
        espace(2);
        caractere(1);
        gotoxy(posx,4);
        caractere(3);
        espace(1);
        caractere(3);
        espace(2);
        caractere(1);
        espace(1);
        caractere(1);
        espace(1);
        caractere(1);
        espace(2);
        caractere(1);
        espace(1);
        caractere(1);
        espace(1);
        caractere(1);
        espace(2);
        caractere(1);
        gotoxy(posx,5);
        caractere(1);
        espace(3);
        caractere(1);
        espace(4);
        caractere(1);
        espace(2);
        caractere(2);
        espace(2);
        caractere(1);
        espace(1);
        caractere(1);
        espace(1);
        caractere(1);
        espace(2);
        caractere(1);
        gotoxy(posx,6);
        caractere(1);
        espace(3);
        caractere(4);
        espace(1);
        caractere(1);
        espace(3);
        caractere(1);
        espace(1);
        caractere(4);
        espace(1);
        caractere(4);
        for(int i=0;i<10000000;i++){}//temps attente
        }

void demande_mot(){    //demande du mot
do{
        clrscr();
        pendu(10);
        gotoxy(1,10);
        cout<< "Votre mot ne doit pas depasser 15 caractere"<<endl;
        cout<<"Quel est votre mot, joueur 1 ?"<<endl;
        cin >> mot;
}while(strlen(mot)>15);
}

void symbole(){        //dessin du symbole pendu

while(!kbhit()){
                if(posx==70){posx=10;}
                else{posx++;}
                couleur();
                pendu(posx);}
}

void affichage_chance()
{
gotoxy(1,22);
cout<<"Il vous reste : "<<chance<<" chances"<<endl;
}

void test_activite(){ //permet d'ajuster le programme selon la longueur du mot
if(strlen(mot)==1){l2=true;l3=true;l4=true;l5=true;l6=true;l7=true;l8=true;l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==2){l3=true;l4=true;l5=true;l6=true;l7=true;l8=true;l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==3){l4=true;l5=true;l6=true;l7=true;l8=true;l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==4){l5=true;l6=true;l7=true;l8=true;l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==5){l6=true;l7=true;l8=true;l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==6){l7=true;l8=true;l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==7){l8=true;l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==8){l9=true;l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==9){l10=true;l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==10){l11=true;l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==11){l12=true;l13=true;l14=true;l15=true;}
if(strlen(mot)==12){l13=true;l14=true;l15=true;}
if(strlen(mot)==13){l14=true;l15=true;}
if(strlen(mot)==14){l15=true;}

}

void affichage_lettres() //affiche les lettres, les tirets ou rien si le mot est + long
{
gotoxy(40,15);
if((l1) ||(strlen(mot)<1)){cout << mot[0] << ' ';}
else{cout << "_ ";}
if((l2) ||(strlen(mot)<2)){cout << mot[1] << ' ';}
else{cout << "_ ";}
if((l3) ||(strlen(mot)<3)){cout << mot[2] << ' ';}
else{cout << "_ ";}
if ((l4) ||(strlen(mot)<4)){cout << mot[3] << ' ';}
else{cout << "_ ";}
if((l5) ||(strlen(mot)<5)){cout << mot[4] << ' ';}
else{cout << "_ ";}
if((l6) ||(strlen(mot)<6)){cout << mot[5] << ' ';}
else{cout << "_ ";}
if ((l7) ||(strlen(mot)<7)){cout << mot[6] << ' ';}
else{cout << "_ ";}
if((l8) ||(strlen(mot)<8)){cout << mot[7] << ' ';}
else{cout << "_ ";}
if((l9) ||(strlen(mot)<9)){cout << mot[8] << ' ';}
else{cout << "_ ";}
if((l10) ||(strlen(mot)<10)){cout << mot[9] << ' ';}
else{cout << "_ ";}
if ((l11) ||(strlen(mot)<11)){cout << mot[10] << ' ';}
else{cout << "_ ";}
if((l12) ||(strlen(mot)<12)){cout << mot[11] << ' ';}
else{cout << "_ ";}
if((l13) ||(strlen(mot)<13)){cout << mot[12] << ' ';}
else{cout << "_ ";}
if((l14) ||(strlen(mot)<14)){cout << mot[13] << ' ';}
else{cout << "_ ";}
if((l15) ||(strlen(mot)!=15)){cout << mot[14] << ' ';}
else{cout << "_ ";}

}

void demande_proposition(){

        clrscr();
        pendu(10);
        affichage_chance();
        affichage_lettres();
        gotoxy(1,10);
        cout<<"Faites une proposition joueur 2"<<endl;
        cin>>proposition[0];

        }

void bon_lettre(){    //pour faire en sorte qu'une même lettre "bonne" répété plusieurs fois n'entraine pas une victoire du joueur 2

        ok=0;
        if(proposition[0]==mot[0]){l1=1;ok=1;anti1++;if(anti1==1){victoire++;}}
        if(proposition[0]==mot[1]){l2=1;ok=1;anti2++;if(anti2==1){victoire++;}}
        if(proposition[0]==mot[2]){l3=1;ok=1;anti3++;if(anti3==1){victoire++;}}
        if(proposition[0]==mot[3]){l4=1;ok=1;anti4++;if(anti4==1){victoire++;}}
        if(proposition[0]==mot[4]){l5=1;ok=1;anti5++;if(anti5==1){victoire++;}}
        if(proposition[0]==mot[5]){l6=1;ok=1;anti6++;if(anti6==1){victoire++;}}
        if(proposition[0]==mot[6]){l7=1;ok=1;anti7++;if(anti7==1){victoire++;}}
        if(proposition[0]==mot[7]){l8=1;ok=1;anti8++;if(anti8==1){victoire++;}}
        if(proposition[0]==mot[8]){l9=1;ok=1;anti9++;if(anti9==1){victoire++;}}
        if(proposition[0]==mot[9]){l10=1;ok=1;anti10++;if(anti10==1){victoire++;}}
        if(proposition[0]==mot[10]){l11=1;ok=1;anti11++;if(anti11==1){victoire++;}}
        if(proposition[0]==mot[11]){l12=1;ok=1;anti12++;if(anti12==1){victoire++;}}
        if(proposition[0]==mot[12]){l13=1;ok=1;anti13++;if(anti13==1){victoire++;}}
        if(proposition[0]==mot[13]){l14=1;ok=1;anti14++;if(anti14==1){victoire++;}}
        if(proposition[0]==mot[14]){l15=1;ok=1;anti15++;if(anti15==1){victoire++;}}
          }

        int main()
{
        test_activite();
        symbole();
        demande_mot();
        symbole();
        victoire = 15-(strlen(mot));
        do{
                demande_proposition();
                bon_lettre();
                if(ok==0){chance=chance-1;}

        }while((chance!=0)&&(victoire!=15));
        if(victoire==15){
                clrscr();
                gotoxy(39,13);
                cout<<"Vous avez gagne !!!!";
                }
        else{
                clrscr();
                gotoxy(39,13);
                cout<<"Vous avez perdu !!!!";
              }
        getch();
        return 0;
}

Conclusion :


Ne soyez pas trop sévères, c'est un de mes premiers programmes quand j'étais débutant(et je suis toujours débutant d'ailleurs).

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.