Jeu le pendu

thebiglover3 - 6 nov. 2012 à 17:39
 thebiglover3 - 28 nov. 2012 à 17:44
salut , svp je suis debutant en programmation c et j'ai essayé de réaliser un jeu : le pendu , le programme marche ça va sauf qu'il execute toujours un essai automatiquement et puis dans le deuxieme essai il me demande d'introduire un caractere, est-ce que quelqu'un pourrait me corriger l'erreur svp ? voici le code source complet :

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
int Difficulte()
{int nd;
    printf("Donner le niveau de difficulte\n");
    scanf("%d",&nd);
    return(nd);
}
int nb_caract()
{int nbc;
    printf("Donner le nombre de caracteres composant le mot\n");
    scanf("%d",&nbc);
    return(nbc);
}
int nb_joueurs()
{int nbj;
    printf("Donner le nombre de joueurs\n");
    scanf("%d",&nbj);
    return(nbj);
}
void random(char *chaineAleatoire, int taille)
{
    int i, longueurChaine = 0;
    char chaine[] = "abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

    longueurChaine = strlen(chaine);

    srand(time(NULL));

    for(i=0; i < taille; i++)
        {
            chaineAleatoire[i] = chaine[rand()%longueurChaine];
        }
    chaineAleatoire[i] = '\0';
}

int test(char sol[],char essai[],int nbc)
{
    int test=1,i;
    for (i=0;i<nbc;i++)
    {
        if (essai[i]!=sol[i]) test=0;
    }
    return(test);
}

void saisie_2_joueurs(char sol1[],char sol2[],int nbc)
{int i;
    printf("Joueur 1 saisissez un mot de %d caracteres svp\n",nbc);
    for(i=0;i<nbc;i++)
    {
        sol1[i]=getch();printf("*");
    }
    printf("Joueur 2 saisissez un mot de %d caracteres svp\n",nbc);
    for(i=0;i<nbc;i++)
    {
        sol2[i]=getch();printf("*");
    }

}


int main()
{int nbd,nbc,nbj,i;char sol[50],sol1[50],sol2[50],essai[50],essai1[50],essai2[50];char car,car1,car2;int compt=0 ;
    nbd=Difficulte();
    nbc=nb_caract();
    nbj=nb_joueurs();
    if (nbj==1)
    {
       random(sol,nbc);

       do
       {
            printf("Donnez un caractere\n");
            scanf("%c",&car);
            for (i=0;i<nbc;i++)
            {
                if((sol[i]==car))

                    {printf("%c",car);essai[i]=car;}
                else {printf("*") ;}


                }
            printf("\n");

        compt++;
       }while((test(sol,essai,nbc)==0)&&(compt!=nbd));

       if (compt==nbd) printf("Vous avez Perdu\n");
       else printf("Bravo!! vous avez devine le mot : %s\n",sol);

    }
    else
    {

       saisie_2_joueurs(sol1,sol2,nbc);
       do
       {
       printf("\nJoueur 1 donnez un caractere svp\n");
       scanf("%c",&car1);
       for (i=0;i<nbc;i++)
            {
                if((sol2[i]==car1))

                    {printf("%c",car1);essai1[i]=car1;}
                else {printf("*") ;}


                }
                printf("\n");
                if (test(sol2,essai1,nbc)==0)
                {
                   printf("\nJoueur 2 donnez un caractere svp\n");
                   scanf("%c",&car2);
                   for (i=0;i<nbc;i++)
                    {
                        if((sol1[i]==car2))

                        {printf("%c",car2);essai2[i]=car2;}
                        else {printf("*") ;}


                    }
                }

            compt++;
} while((test(sol1,essai2,nbc)==0)&&(test(sol2,essai1,nbc)==0)&&(compt!=nbd));

        if (test(sol2,essai1,nbc)==1) printf("joueur 1 a gagne\n");
        else if(test(sol2,essai1,nbc)==1) printf("joueur 2 a gagne\n");
        else printf("Vous avez tous les deux perdu\n");

    }
    return 0;
}



Mahfoudh Mohamed
Info FST El Manar
TUNISIE

7 réponses

waooo pour nous aider à vite te comprendre faut ajouter des commentaires. ca va faire un boumm pou ke l'on l'assimile dabor donc un peu de temps
0
EN Réalité, ton programme à plusieurs maux , dont l'affichage des lettre déjà trouvé et autre donc
0
thebiglover3
22 nov. 2012 à 14:12
Oui c'est vrai , je vous ai dit que je suis débutant , mais ne vous cassez pas trop la tête parce que j'ai résolu le problème tout seul ;) merci en t k.

Mahfoudh Mohamed
Info FST El Manar
TUNISIE
0
cool, je te félicite. Comme tu as la réponse , publie là aussi pour Que ça puisse nous aidée, on ne sait jamais
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thebiglover3
26 nov. 2012 à 12:28
oui bien sur , voici le code source de la solution :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <conio.h>
#include <time.h>
#include <windows.h>



int Difficulte()
{int nd;
    printf("  Donner le niveau de difficulte\n  ");
    scanf("%d",&nd);
    return(nd);
}
int nb_caract()
{int nbc;
    printf("  Donner le nombre de caracteres composant le mot\n  ");
    scanf("%d",&nbc);
    return(nbc);
}
int nb_joueurs()
{int nbj;
    printf("  Donner le nombre de joueurs\n  ");
    scanf("%d",&nbj);
    return(nbj);
}

void random(char chaineAleatoire[], int taille)
{int i;
  srand(time(NULL));
  for(i=0;i<taille;i++)
  {
  chaineAleatoire[i]=rand()%26+'a';
  }
}
int test(char sol[],char essai[],int nbc)
{
    int test=1,i;
    for (i=0;i<nbc;i++)
    {
        if (essai[i]!=sol[i]) {test=0;}
    }
    return(test);
}

void saisie_2_joueurs(char sol1[],char sol2[],int nbc)
{int i;
    printf("\nJoueur 1 saisissez un mot de %d caracteres svp\n",nbc);
    for(i=0;i<nbc;i++)
    {
        sol1[i]=getch();printf("*");
    }
    printf("\nJoueur 2 saisissez un mot de %d caracteres svp\n",nbc);
    for(i=0;i<nbc;i++)
    {
        sol2[i]=getch();printf("*");
    }

}
void main()
{int nbd,compt=0,nbc,nbj,i;char sol[50],sol1[50],sol2[50],essai[50],essai1[50],essai2[50],car;
    nbd=Difficulte();
    nbc=nb_caract();
    nbj=nb_joueurs();
    system("cls");
    printf("                            *** Jeu LE PENDU ***");

    if (nbj==1)
    {
        random(sol,nbc);

        for (i=0;i<nbc;i++)
        essai[i]='*';



        do
          {
            printf("\n  Donnez un caractere:  ");
            car=getch();
            printf("%c\n  ",car);
            for(i=0;i<nbc;i++)
            {
                if (sol[i]==car)
                  essai[i]=car;

            }
            for(i=0;i<nbc;i++)
            printf("%c",essai[i]);

            compt++;

          } while((test(sol,essai,nbc)!=1)&&(compt!=nbd));

        if (compt==nbd)
        {printf("\n\n  Vous avez perdu\n\n\n");}

        else {printf("\nBravo !!!! Vous avez gagné");}
    }
     else
     {
         saisie_2_joueurs(sol1,sol2,nbc);
         for (i=0;i<nbc;i++)
        {
            essai1[i]='*';essai2[i]='*';
        }

        do
        {
            printf("\nJoueur 1 : Donnez un caractere\n");
            car=getch();
            printf("%c\n",car);
            for(i=0;i<nbc;i++)
            {
                if (sol2[i]==car)
                  essai1[i]=car;

            }
            for(i=0;i<nbc;i++)
            printf("%c",essai1[i]);
            if((test(sol2,essai1,nbc)!=1))
            {printf("\nJoueur 2 : Donnez un caractere\n");
                car=getch();
            printf("%c\n",car);
            for(i=0;i<nbc;i++)
            {
                if (sol1[i]==car)
                  essai2[i]=car;

            }
            for(i=0;i<nbc;i++)
            printf("%c",essai2[i]);
            }

        compt++;
     }while((test(sol1,essai2,nbc)!=1)&&(test(sol2,essai1,nbc)!=1)&&(compt!=nbd));
     if(test(sol1,essai2,nbc)==1) {printf("Joueur 2 a GAGNE !!!\n\n\n");}
                   
     if(test(sol2,essai1,nbc)==1) { printf("Joueur 1 a GAGNE !!!\n\n\n");}
      
     if(compt==nbd) {printf("\nVous avez tous les deux perdus\n\n");}


}
}




Mahfoudh Mohamed
Info FST El Manar
TUNISIE
0
cool ca va à merveille
0
thebiglover3
28 nov. 2012 à 17:44
Merci :)

Mahfoudh Mohamed
Info FST El Manar
TUNISIE
0
Rejoignez-nous