Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Amélioration TP

Bug

Sujet résolu
    23 décembre 2005 à 18:39:55

    Salut,

    Bon, comme la majorité d'entre vous, j'ai fait le premier TP en C. J'ai réussi le code de base sans améliorations, mais au moment de l'amélioration (mode multijoueurs), il y a un problème.

    Les nombres mystères sont les mêmes !

    Voici monde code :

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main(int argc, char *argv[])
    {
      const long MAX = 100, MIN = 1, MAX2 = 100, MIN2 = 1;
     
      long nombre_mystere = 0, nombre_mystere2 = 0;
      long nombre_joueur = 0, nombre_joueur2 = 0;
      long tour_solo = 0, choix = 1, tour_joueur1 = 0, tour_joueur2 = 0;
     
     srand(time(NULL));
     nombre_mystere = (rand() % (MAX - MIN + 1)) + MIN;
     
     srand(time(NULL));
     nombre_mystere2 = (rand () % (MAX2 - MIN2 + 1)) + MIN2;

    printf("1. Mode Solo\n 2. Mode deux joueurs\n\n");
    printf("Votre choix ?( 1 ou 2 ) :   ");
    scanf("%ld", &choix);

    if(choix == 1)
    {
     
    do
    {
                   tour_solo++;
                   printf("Rentrez un nombre  : ");
                   scanf("%ld", &nombre_joueur);
                   
                   if(nombre_mystere > nombre_joueur)
                   {
                     printf("Le nombre mystere est plus grand\n\n\n");
                     }
                     else if(nombre_mystere < nombre_joueur)
                     {
                          printf("Le nombre mystere est plus petit\n\n\n");
                          }
                          else
                          {
                              printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n", tour_solo);
                              }
                              }
       while(nombre_mystere != nombre_joueur);                                                   
                            }
                    else
                    {
          do
          {                 
                         tour_joueur1++;
                   printf("\n\n\nJoueur 1 : Rentrez un nombre  : ");
                   scanf("%ld", &nombre_joueur);
                   
                   if(nombre_mystere > nombre_joueur)
                   {
                     printf("Le nombre mystere est plus grand\n\n");
                     }
                     else if(nombre_mystere < nombre_joueur)
                     {
                          printf("Le nombre mystere est plus petit\n\n");
                          }
                          else
                          {
                              printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n\n", tour_joueur1);
                              }
                              }
       while(nombre_mystere != nombre_joueur);                                                   
                            }             
       
       do
       {
                                tour_joueur2++;
                   printf("Joueur 2 : Rentrez un nombre  : ");
                   scanf("%ld", &nombre_joueur2);
                   
                   if(nombre_mystere2 > nombre_joueur2)
                   {
                     printf("Le nombre mystere est plus grand\n\n");
                     }
                     else if(nombre_mystere2 < nombre_joueur2)
                     {
                          printf("Le nombre mystere est plus petit\n\n");
                          }
                          else
                          {
                              printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n\n", tour_joueur2);
                              }
                              }
       while(nombre_mystere2 != nombre_joueur2);
       
       if(tour_joueur1 == tour_joueur2)
       {
                       printf("Egalite !\n\n");
                       }
                       else if(tour_joueur1 < tour_joueur2)
                       {
                           printf("Le joueur 1 remporte la partie !!\n\n");
                           }
                        else
                        {
       printf("Le joueur 2 remporte la partie !!\n\n");
    }

      system("PAUSE");     
      return 0;
    }


    Bon voilà !

    Je sais que le code n'est pas hyper propre mais bon :D ...

    Merci

    ++
    • Partager sur Facebook
    • Partager sur Twitter
      23 décembre 2005 à 18:47:40

      Combien de fois as-tu joué ?
      Si qu'une fois, c'est peut-être le pur hasard...
      • Partager sur Facebook
      • Partager sur Twitter
        23 décembre 2005 à 18:48:59

        Au debut de tes boucles, tu dois re-affecter les variables contenant les nombres mystères, comme tu le fais au debut :)
        • Partager sur Facebook
        • Partager sur Twitter
          23 décembre 2005 à 18:51:05

          Citation : tif-tof

          Au debut de tes boucles, tu dois re-affecter les variables contenant les nombres mystères, comme tu le fais au debut :)



          Euh, pas compris lol xD
          • Partager sur Facebook
          • Partager sur Twitter
            23 décembre 2005 à 19:00:26

            Sa donnerait sa :
            #include <stdio.h>
            #include <stdlib.h>
            #include <time.h>

            int main(int argc, char *argv[])
            {
              const long MAX = 100, MIN = 1, MAX2 = 100, MIN2 = 1;
             
              long nombre_mystere = 0, nombre_mystere2 = 0;
              long nombre_joueur = 0, nombre_joueur2 = 0;
              long tour_solo = 0, choix = 1, tour_joueur1 = 0, tour_joueur2 = 0;

              srand(time(NULL));
              nombre_mystere = (rand() % (MAX - MIN + 1)) + MIN;
             
              srand(time(NULL));
              nombre_mystere2 = (rand () % (MAX2 - MIN2 + 1)) + MIN2;

            printf("1. Mode Solo\n 2. Mode deux joueurs\n\n");
            printf("Votre choix ?( 1 ou 2 ) :   ");
            scanf("%ld", &choix);

            if(choix == 1)
            {
             
            do
            {
                                      
                           tour_solo++;
                           printf("Rentrez un nombre  : ");
                           scanf("%ld", &nombre_joueur);
                           
                           if(nombre_mystere > nombre_joueur)
                           {
                             printf("Le nombre mystere est plus grand\n\n\n");
                             }
                             else if(nombre_mystere < nombre_joueur)
                             {
                                  printf("Le nombre mystere est plus petit\n\n\n");
                                  }
                                  else
                                  {
                                      printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n", tour_solo);
                                      }
                                      }
               while(nombre_mystere != nombre_joueur);
                                       srand(time(NULL));
                                       nombre_mystere = (rand() % (MAX - MIN + 1)) + MIN;
             
                                       srand(time(NULL));
                                       nombre_mystere2 = (rand () % (MAX2 - MIN2 + 1)) + MIN2;
                                    }
                            else
                            {
                  do
                  {                 
                                 tour_joueur1++;
                           printf("\n\n\nJoueur 1 : Rentrez un nombre  : ");
                           scanf("%ld", &nombre_joueur);
                           
                           if(nombre_mystere > nombre_joueur)
                           {
                             printf("Le nombre mystere est plus grand\n\n");
                             }
                             else if(nombre_mystere < nombre_joueur)
                             {
                                  printf("Le nombre mystere est plus petit\n\n");
                                  }
                                  else
                                  {
                                      printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n\n", tour_joueur1);
                                      }
                                      }
               while(nombre_mystere != nombre_joueur);                                                   
                                    }             
               
                                       srand(time(NULL));
                                       nombre_mystere = (rand() % (MAX - MIN + 1)) + MIN;
             
                                       srand(time(NULL));
                                       nombre_mystere2 = (rand () % (MAX2 - MIN2 + 1)) + MIN2;
               do
               {
                                        tour_joueur2++;
                           printf("Joueur 2 : Rentrez un nombre  : ");
                           scanf("%ld", &nombre_joueur2);
                           
                           if(nombre_mystere2 > nombre_joueur2)
                           {
                             printf("Le nombre mystere est plus grand\n\n");
                             }
                             else if(nombre_mystere2 < nombre_joueur2)
                             {
                                  printf("Le nombre mystere est plus petit\n\n");
                                  }
                                  else
                                  {
                                      printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n\n", tour_joueur2);
                                      }
                                      }
               while(nombre_mystere2 != nombre_joueur2);
               
               if(tour_joueur1 == tour_joueur2)
               {
                               printf("Egalite !\n\n");
                               }
                               else if(tour_joueur1 < tour_joueur2)
                               {
                                   printf("Le joueur 1 remporte la partie !!\n\n");
                                   }
                                else
                                {
               printf("Le joueur 2 remporte la partie !!\n\n");
                                                    }

              system("PAUSE");     
              return 0;
            }


            Maintenant il faudrait revoir l'indentation et aussi, quand je choisi joueur 1, quand j'ai trouvé le nombre il me met ensuite joueur 2, donc c'est a réglé ^^
            • Partager sur Facebook
            • Partager sur Twitter
              23 décembre 2005 à 19:09:03

              OK merci ça marche. Pour le problème, j'ai mit le system("PAUSE"); et le return 0; après la fin du mode solo ce qui donne ça :

              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>

              int main(int argc, char *argv[])
              {
                const long MAX = 100, MIN = 1, MAX2 = 100, MIN2 = 1;
               
                long nombre_mystere = 0, nombre_mystere2 = 0;
                long nombre_joueur = 0, nombre_joueur2 = 0;
                long tour_solo = 0, choix = 1, tour_joueur1 = 0, tour_joueur2 = 0;

                srand(time(NULL));
                nombre_mystere = (rand() % (MAX - MIN + 1)) + MIN;
               

              printf("1. Mode Solo\n 2. Mode deux joueurs\n\n");
              printf("Votre choix ?( 1 ou 2 ) :   ");
              scanf("%ld", &choix);

              if(choix == 1)
              {
               
              do
              {
                                       
                             tour_solo++;
                             printf("\n\n\nRentrez un nombre  : ");
                             scanf("%ld", &nombre_joueur);
                             
                             if(nombre_mystere > nombre_joueur)
                             {
                               printf("Le nombre mystere est plus grand\n\n\n");
                               }
                               else if(nombre_mystere < nombre_joueur)
                               {
                                    printf("Le nombre mystere est plus petit\n\n\n");
                                    }
                                    else
                                    {
                                        printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n", tour_solo);
                                        }
                                        }
                 while(nombre_mystere != nombre_joueur);
                                         srand(time(NULL));
                                         nombre_mystere = (rand() % (MAX - MIN + 1)) + MIN;
               
                                         srand(time(NULL));
                                         nombre_mystere2 = (rand () % (MAX2 - MIN2 + 1)) + MIN2;
                                      }
                              else
                              {
                    do
                    {                 
                                   tour_joueur1++;
                             printf("\n\n\nJoueur 1 : Rentrez un nombre  : ");
                             scanf("%ld", &nombre_joueur);
                             
                             if(nombre_mystere > nombre_joueur)
                             {
                               printf("Le nombre mystere est plus grand\n\n");
                               }
                               else if(nombre_mystere < nombre_joueur)
                               {
                                    printf("Le nombre mystere est plus petit\n\n");
                                    }
                                    else
                                    {
                                        printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n\n", tour_joueur1);
               system("PAUSE");
                   return 0
                                        }
                                        }
                 while(nombre_mystere != nombre_joueur);                                                   
                                      }             
               
                                         srand(time(NULL));
                                         nombre_mystere = (rand() % (MAX - MIN + 1)) + MIN;
               
                                         srand(time(NULL));
                                         nombre_mystere2 = (rand () % (MAX2 - MIN2 + 1)) + MIN2;
                 do
                 {
                                          tour_joueur2++;
                             printf("Joueur 2 : Rentrez un nombre  : ");
                             scanf("%ld", &nombre_joueur2);
                             
                             if(nombre_mystere2 > nombre_joueur2)
                             {
                               printf("Le nombre mystere est plus grand\n\n");
                               }
                               else if(nombre_mystere2 < nombre_joueur2)
                               {
                                    printf("Le nombre mystere est plus petit\n\n");
                                    }
                                    else
                                    {
                                        printf("Bravo ! Vous avez trouve le nombre mystere en %ld tours\n\n\n", tour_joueur2);
                                        }
                                        }
                 while(nombre_mystere2 != nombre_joueur2);
                 
                 if(tour_joueur1 == tour_joueur2)
                 {
                                 printf("Egalite !\n\n");
                                 }
                                 else if(tour_joueur1 < tour_joueur2)
                                 {
                                     printf("Le joueur 1 remporte la partie !!\n\n");
                                     }
                                  else
                                  {
                 printf("Le joueur 2 remporte la partie !!\n\n");
                                                      }

                system("PAUSE");     
                return 0;
              }

              Voilà encore merci ! :D
              • Partager sur Facebook
              • Partager sur Twitter

              [C] Amélioration TP

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown