Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP "Plus ou moins"

    7 octobre 2007 à 20:11:55

    Bonjour à tous !

    J'ai un tout petit problème qui n'en est pas un mais que j'aimerais résoudre.

    Donc j'ai amélioré, j'ai rajouté un compteur pour compter le nombre de points, pour recommencer une partie, le choix du niveau...

    Mon seul problème, c'est que quand je recommence un partie, le compteur de coups n'est pas réinitialisé. Si j'ai fait 5 coups à la première et 10 à la seconde, à la seconde ils m'affichent "15 coups". J'ai testé un ou deux truc pour réinitialiser mais j'y parviens pas, si vous pouviez me dire comment faire...

    Merci !

    Au fait, voilà mon code :

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <time.h>
    4. int main ( int argc, char** argv )
    5. {
    6.     long NombreMystere = 0, NombreEntre = 0, Compteur = 0, Level = 0, Max = 0, Rejouer = 0;
    7.     const long Min = 1;
    8.     printf("Bienvenue au grand jeu du nombre mystere !\n\n");
    9.     printf("Quel niveau de difficulte voulez-vous choisir ?\n\n1. Medium (Entre 1 et 100)\n2. Hard (Entre 1 et 1000)\n3. Diabolik (Entre 1 et 10000)\n\nVotre choix ? ");
    10.     scanf("%ld", &Level);
    11.     if (Level == 1)
    12.     Max = 100;
    13.     else if (Level == 2)
    14.     Max = 1000;
    15.     else if (Level == 3)
    16.     Max = 10000;
    17.     else
    18.     printf ("Veuillez entrer une valeur de niveau correcte (Valeurs de niveau possibles : 1, 2 ou 3)");
    19.     srand(time(NULL));
    20.     NombreMystere = (rand() % (Max - Min + 1)) + Min;
    21.     do
    22.     {
    23.         printf("\nQuel est le nombre ? ");
    24.         scanf("%ld", &NombreEntre);
    25.         Compteur++;
    26.         if (NombreMystere > NombreEntre)
    27.             printf("C'est plus !\n\n");
    28.         else if (NombreMystere < NombreEntre)
    29.             printf("C'est moins !\n\n");
    30.         else
    31.             printf ("Bravo ! Vous avez trouve le nombre mystere en %ld coups !\n\n", Compteur);
    32.     }   while (NombreEntre != NombreMystere);
    33.     printf("Voulez-vous rejouez ? Tapez 1 pour oui ou 0 pour non : ");
    34.     scanf("%ld", &Rejouer);
    35.     printf("\n");
    36.     while (Rejouer == 1)
    37.     {
    38.     printf("\n\nQuel niveau de difficulte voulez-vous choisir ?\n\n1. Medium (Entre 1 et 100)\n2. Hard (Entre 1 et 1000)\n3. Diabolik (Entre 1 et 10000)\n\nVotre choix ? ");
    39.     scanf("%ld", &Level);
    40.     if (Level == 1)
    41.     Max = 100;
    42.     else if (Level == 2)
    43.     Max = 1000;
    44.     else if (Level == 3)
    45.     Max = 10000;
    46.     else
    47.     printf ("Veuillez entrer une valeur de niveau correcte (Valeurs de niveau possibles : 1, 2 ou 3)");
    48.     srand(time(NULL));
    49.     NombreMystere = (rand() % (Max - Min + 1)) + Min;
    50.     do
    51.     {
    52.         printf("\nQuel est le nombre ? ");
    53.         scanf("%ld", &NombreEntre);
    54.         Compteur++;
    55.         if (NombreMystere > NombreEntre)
    56.             printf("C'est plus !\n\n");
    57.         else if (NombreMystere < NombreEntre)
    58.             printf("C'est moins !\n\n");
    59.         else
    60.             printf ("Bravo ! Vous avez trouve le nombre mystere en %ld coups !\n\n", Compteur);
    61.     }   while (NombreEntre != NombreMystere);
    62.     printf("Voulez-vous rejouez ? Tapez 1 pour oui ou 0 pour non : ");
    63.     scanf("%ld", &Rejouer);
    64.     printf("\n");
    65.     }
    66.     system("PAUSE");
    67. }


    Edit : J'aimerais bien pouvoir sauvegarder les scores, mais si les connaissances de fin de partie I du cours de Matéo ne suffisent pas, je préfère ne pas le faire tout de suite. Merci de m'indiquer !
    • Partager sur Facebook
    • Partager sur Twitter
      7 octobre 2007 à 20:22:40

      Je trouve ton code bien compliqué. Si je ne me trompe pas, une boucle englobant une autre boucle suffirai, là je comprend pas ^^
      ( Je viens juste de passer ce TP moi aussi :D )
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        7 octobre 2007 à 20:23:55

        Citation : Drogba13

        Mon seul problème, c'est que quand je recommence un partie, le compteur de coups n'est pas réinitialisé. Si j'ai fait 5 coups à la première et 10 à la seconde, à la seconde ils m'affichent "15 coups". J'ai testé un ou deux truc pour réinitialiser mais j'y parviens pas, si vous pouviez me dire comment faire...



        1. [...]
        2. while (Rejouer == 1)
        3. {
        4.   Compteur = 0;
        5.   printf("\n\nQuel niveau de difficulte voulez-vous choisir ?\n\n1. Medium (Entre 1 et 100)\n2. Hard (Entre 1 et 1000)\n3. Diabolik (Entre 1 et 10000)\n\nVotre choix ? ");
        6. [...]
        • Partager sur Facebook
        • Partager sur Twitter
          7 octobre 2007 à 20:27:21

          Legend_Juju, en fait je trouve plus simple de faire un copier/coller, pis ça marche aussi bien. Après c'est mon point de vue...

          Et Enax merci, je me diais aussi que c'était ça mais je l'avais mal placé. Merci ^^
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            7 octobre 2007 à 20:29:45

            Sinon, c'est vrai que tu peux largement simplifier ton code :

            1. #include <stdio.h>
            2. #include <stdlib.h>
            3. #include <time.h>
            4. int main ( int argc, char** argv )
            5. {
            6.     long NombreMystere = 0, NombreEntre = 0, Compteur = 0, Level = 0, Max = 0, Rejouer = 1;
            7.     const long Min = 1;
            8.     printf("Bienvenue au grand jeu du nombre mystere !\n\n");
            9.     while (Rejouer == 1)
            10.     {
            11.     Compteur = 0;
            12.     printf("\n\nQuel niveau de difficulte voulez-vous choisir ?\n\n1. Medium (Entre 1 et 100)\n2. Hard (Entre 1 et 1000)\n3. Diabolik (Entre 1 et 10000)\n\nVotre choix ? ");
            13.     scanf("%ld", &Level);
            14.     if (Level == 1)
            15.     Max = 100;
            16.     else if (Level == 2)
            17.     Max = 1000;
            18.     else if (Level == 3)
            19.     Max = 10000;
            20.     else
            21.     printf ("Veuillez entrer une valeur de niveau correcte (Valeurs de niveau possibles : 1, 2 ou 3)");
            22.     srand(time(NULL));
            23.     NombreMystere = (rand() % (Max - Min + 1)) + Min;
            24.     do
            25.     {
            26.         printf("\nQuel est le nombre ? ");
            27.         scanf("%ld", &NombreEntre);
            28.         Compteur++;
            29.         if (NombreMystere > NombreEntre)
            30.             printf("C'est plus !\n\n");
            31.         else if (NombreMystere < NombreEntre)
            32.             printf("C'est moins !\n\n");
            33.         else
            34.             printf ("Bravo ! Vous avez trouve le nombre mystere en %ld coups !\n\n", Compteur);
            35.     }   while (NombreEntre != NombreMystere);
            36.     printf("Voulez-vous rejouez ? Tapez 1 pour oui ou 0 pour non : ");
            37.     scanf("%ld", &Rejouer);
            38.     printf("\n");
            39.     }
            40.     system("PAUSE");
            41. }
            • Partager sur Facebook
            • Partager sur Twitter
              8 octobre 2007 à 17:56:09

              FInalement j'ai simplifié à peu près comme t'as dit mais j'avais fait des modifications de puis. Sinon y'a pas moyen après une boucle "while" de mettre comme pour la condition une sorte de "else" ? Par exemple dans mon cas ce serait si l'utilisateur tape un "0" de mettre un "Au revoir" ou quelque chose comme ça avant que ce soit marqué "Appuyez sur une touche pour continuer...".
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                8 octobre 2007 à 18:08:40

                Tu ajoutes simplement ça après ta boucle :

                1. if (!Rejouer)
                2.         printf("Au revoir !");


                • Partager sur Facebook
                • Partager sur Twitter
                  9 octobre 2007 à 1:44:56

                  tu cest quoi ? pas besoin dune boucle pour reinitialiser ;)
                  1. maVariable = maVariable - maVariable
                  2. int note = 56, resultat;
                  3. resultat = note + 5;
                  4. note = note - note;


                  tout bete et jai eu le meme probleme que toi ya pa longtemps :p

                  un ti conseille : si lutilisateur doit rentrer 1 ou 2, il faut lui obliger et pa jil mette nimport nawak !
                  et comment on fait ca ? :p
                  do while jutilise
                  1. do
                  2. {
                  3. // code
                  4. } while (variable != 1 && variable != 2);
                  • Partager sur Facebook
                  • Partager sur Twitter

                  TP "Plus ou moins"

                  × 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