Partage
  • Partager sur Facebook
  • Partager sur Twitter

Jeu Plus ou moins probleme...

Je narrive pas a le faire fonctionner correctement....

    12 février 2008 à 17:00:56

    Voici le code :)
    Merci de votre aide.<code type="c">

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


    int main ( int argc, char** argv )
    {
    long nombreMystere = 0, coup = 1, nombreEntre = 0,choixNiveau = 0, nombreJoeur = 0, MAX = 100, questionRejouer =0, rejouer = 1;
    const long MIN = 0;
    do
    {
    printf("Hello world ! ! !\n\n");

    //Menu 1 ou 2 joeurs

    printf("Quel mode de jeux voulez-vous ?\n\n\n"); !
    printf("1. Solo\n");
    printf("2. Duo\n\n");
    printf("Votre choix ?");
    scanf("%ld", &nombreJoeur);
    printf("\n");
    do
    {
    //
    switch (nombreJoeur)
    {
    //Mode Solo, Choix difficulté

    case 1:
    printf("Vous avez choisi le mode solo\n\n");//mode solo
    printf("Quel niveau voulez vous ?\n\n");//Selection lvl
    printf("1. 1 a 100 ?\n");
    printf("2. 1 a 1000 ?\n");
    printf("3. 1 a 10000?\n");
    printf("4. Bonus !!!\n\n");
    printf("Quel est votre choix ?\n");
    scanf("%ld", &choixNiveau);

    //Attribution caract. lvl !

    switch (choixNiveau)
    {
    case 1:
    printf("Vous avez choisi le niveau 1.\n\nLe chiffre sera entre 1 et 100.\n\n");
    break;

    case 2:
    printf("Vous avez choisi le niveau 2.\n\nLe chiffre sera entre 1 et 1000.\n\n");
    MAX += 900;
    break;

    case 3:
    printf("Vous avez choisi le niveau 3.\n\nLe chiffre sera entre 1 et 10000.\n");
    MAX += 9900;
    break;

    case 4:
    printf("Vous avez choisi le niveau Bonus !!!.\n\nMerci d'inscrire le nombre maximum qui peut etre choisi: ");
    scanf("%ld", &MAX);
    printf("\n\n\n");
    break;
    }
    break;


    case 2:
    printf("Vous avez choisi le mode Duo !\n\n");
    break;

    default:
    printf("Le nombre entré est incorrect ! Le jeu sera en mode solo par defaut. Gnark gnark !\n\n\n");
    break;

    }

    if (nombreJoeur != 2) //Si nombre different de 2, mode Solo !

    {
    //Generation du nombre aleatoire

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

    }

    else if (nombreJoeur == 2) //Si nbre=2, mode duo

    printf("Ecrivez un nombre entre 1 et ce que tu veux !\n");
    scanf("%ld", &nombreMystere);
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

    }


    while(nombreMystere < 0);

    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */


    do
    {
    printf("Quel est le nombre ?\n");
    scanf("%ld", &nombreEntre);

    // On compare le nombre entré avec le nombre mystère

    if (nombreMystere > nombreEntre)
    {
    printf("C'Est plus !\n\n");
    coup++;
    }

    else if (nombreMystere < nombreEntre)
    {
    printf("C'Est moins !\n\n");
    coup++;

    }

    else ("Bravo vous avez trouvé le nombre mystere en %ld coups !!!\n\n\n", coup);

    }


    while (nombreEntre != nombreMystere);
    printf("Voulez vous rejouer ?\n\n");
    printf("1. Oui\n");
    printf("2. Non\n\n");
    printf("Alors?");
    scanf("%ld", &questionRejouer);




    switch (questionRejouer)
    {
    case 1:
    printf("Vous rejouez !\n\n\n");
    coup = 0;
    break;

    case 2:
    printf("Au revoir!\n\n\n");
    rejouer--;
    break;

    }
    }

    while (rejouer != 0);



    system("PAUSE");
    }

    • Partager sur Facebook
    • Partager sur Twitter
      12 février 2008 à 17:33:56

      Déjà incrémente ton code avec les balises ;)

      Puis dans le 2eme switch (choixniveau) il manque un cas default,
      le MIN doit etre = 1 si tu veux que ca soit entre 1 et quelque chose
      sinon c'est entre 0 et quelque chose.
      Dans le else if joueur == 2, il manque une croche ouvrante "{".

      Et pourquoi : printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); ??
      Cela rajoute une vingtaine de ligne vide ...

      while(nombreMystere < 0); Ce répète tant que le nombre est inférieur à zéro ? ca sera toujours faux ..et l'inverse toujours vrai ...d'ailleurs je pense que cette instruction est inutile peut importe le sens...

      Manque un default dans switch rejouer


      Voilà je pense avoir tout dit puisque moi ca marche maintenant ...si j'ai dit des erreurs dites le moi ;) ++
      • Partager sur Facebook
      • Partager sur Twitter
        12 février 2008 à 18:14:26

        alors merci pour ta reponse et ton analyse :)

        J'ai encore du mal lol. Comment jaffiche tout le code complet ?
        • Partager sur Facebook
        • Partager sur Twitter
          12 février 2008 à 18:51:30

          Bin quand tu écris un post, tu regardes l'onglet 'Code' tu cherches le code que tu veux écrire, en l'occurence ici 'C' et tu écris ton code entre les chevrons '...><...'

          voili voilou ;)
          • Partager sur Facebook
          • Partager sur Twitter
            12 février 2008 à 18:58:25

            oki je tente :)

            J'ai quelque soucis vis a vis de la fonction break. Qu-est ce que ca fait exactement ?
            J'arrive pas bien a utiliser "default", ainsi que Return. Pourriez vous m'aider svp ?

            Merci les amis :)


            1. #include <stdio.h>
            2. #include <stdlib.h>
            3. #include <time.h>
            4. int main ( int argc, char** argv )
            5. {
            6.     long nombreMystere = 0, coup = 1, nombreEntre = 0,choixNiveau = 0, nombreJoeur = 0, MAX = 100, questionRejouer =0, rejouer = 1;
            7.     const long MIN = 1;
            8.     do
            9.  {
            10.             printf("Hello world  ! ! !\n\n");
            11.             //Menu 1 ou 2 joeurs
            12.             printf("Quel mode de jeux voulez-vous ?\n\n\n"); !
            13.             printf("1.  Solo\n");
            14.             printf("2.  Duo\n\n");
            15.             printf("Votre choix ?");
            16.             scanf("%ld", &nombreJoeur);
            17.             printf("\n");
            18.     do
            19. {
            20.     //
            21.     switch (nombreJoeur)
            22.     {
            23.         //Mode Solo, Choix difficulté
            24.         case 1:
            25.             printf("Vous avez choisi le mode solo\n\n");//mode solo
            26.             printf("Quel niveau voulez vous ?\n\n");//Selection lvl
            27.             printf("1.  1 a 100 ?\n");
            28.             printf("2.  1 a 1000 ?\n");
            29.             printf("3.  1 a 10000?\n");
            30.             printf("4.  Bonus !!!\n\n");
            31.             printf("Quel est votre choix ?\n");
            32.             scanf("%ld", &choixNiveau);
            33.             //Attribution caract. lvl !
            34.     switch (choixNiveau)
            35.     {
            36.         case 1:
            37.             printf("Vous avez choisi le niveau 1.\n\nLe chiffre sera entre 1 et 100.\n\n");
            38.             break;
            39.         case 2:
            40.             printf("Vous avez choisi le niveau 2.\n\nLe chiffre sera entre 1 et 1000.\n\n");
            41.             MAX += 900;
            42.             break;
            43.         case 3:
            44.             printf("Vous avez choisi le niveau 3.\n\nLe chiffre sera entre 1 et 10000.\n");
            45.             MAX += 9900;
            46.             break;
            47.         case 4:
            48.             printf("Vous avez choisi le niveau Bonus !!!.\n\nMerci d'inscrire le nombre maximum qui peut etre choisi: ");
            49.             scanf("%ld", &MAX);
            50.             printf("\n\n\n");
            51.             break;
            52.         default:
            53.             printf("Vous allez jouer le niveau 1 !\n\n");
            54.             break;
            55.     }
            56.     break;
            57.         case 2:
            58.             printf("Vous avez choisi le mode Duo !\n\n");
            59.             break;
            60.         default:
            61.             printf("Le nombre entré est incorrect ! Le jeu sera en mode solo par defaut. Gnark gnark !\n\n\n");
            62.             break;
            63.     }
            64.     if (nombreJoeur != 2) //Si nombre different de 2, mode Solo !
            65.     {
            66.             //Generation du nombre aleatoire
            67.             srand(time(NULL));
            68.             nombreMystere = (rand() % (MAX - MIN + 1 )) + MIN;
            69.     }
            70.     else if (nombreJoeur == 2) //Si nbre=2, mode duo
            71.     {
            72.             printf("Ecrivez un nombre entre 1 et ce que tu veux !\n");
            73.             scanf("%ld", &nombreMystere);
            74.     }
            75.     /* La boucle du programme. Elle se répète tant que l'utilisateur
            76. n'a pas trouvé le nombre mystère */
            77.     do
            78.     {
            79.             printf("Quel est le nombre ?\n");
            80.             scanf("%ld", &nombreEntre);
            81.             // On compare le nombre entré avec le nombre mystère
            82.     if (nombreMystere > nombreEntre)
            83.     {
            84.             printf("C'Est plus !\n\n");
            85.             coup++;
            86.     }
            87.     else if (nombreMystere < nombreEntre)
            88.     {
            89.             printf("C'Est moins !\n\n");
            90.             coup++;
            91.     }
            92.     else ("Bravo vous avez trouvé le nombre mystere en %ld coups !!!\n\n\n", coup);
            93.     }
            94.     while (nombreEntre != nombreMystere);
            95.             printf("Voulez vous rejouer ?\n\n");
            96.             printf("1.  Oui\n");
            97.             printf("2.  Non\n\n");
            98.             printf("Alors?");
            99.             scanf("%ld", &questionRejouer);
            100.     switch (questionRejouer)
            101.     {
            102.         case 1:
            103.             printf("Vous rejouez !\n\n\n");
            104.             coup = 0;
            105.             break;
            106.         case 2:
            107.             printf("Au revoir!\n\n\n");
            108.             rejouer--;
            109.             break;
            110.         default:
            111.             printf("Merci d'avoir joué !\n");
            112.             rejouer--;
            113.             return = 0;
            114.     }
            115.     }
            116.     while (rejouer != 0);
            117. system("PAUSE");
            118. }
            • Partager sur Facebook
            • Partager sur Twitter
              12 février 2008 à 20:42:03

              Bin dans switch le cas default correspond au cas ou l'utilisateur ne met pas ce qu'il faut :
              case 1
              case 2
              l'utilisateur met A ou 3 ou autre.
              Ton 'default' va arréter le programme car tu as écris :

              default :
              return 0
              break;

              Le 'return 0' va tout simplement arréter le programme (ou si il est dans une fonction : arréter la fonction)

              mais tu n'es pas obligé de mettre return 0, tu peux mettre une phrase genre vous n'avez pas tapé ce qu'il faut !!
              • Partager sur Facebook
              • Partager sur Twitter
                12 février 2008 à 20:52:18

                Peut tu me donner le code corrigé stp car je n'arrive pas a continuer la :)

                En effet lorsque je choisis le mode 2 joueur, que je mets un chiffre different de ceux proposes pour rejouer, le message programme ne saffiche pas et laction prevue ne seffectue pas :)

                En mode solo, lorsque je choisis un mode, apres avoir choisi le level, je suis obligé de taper un chiffre pour pouvoir ensuite avoir la question....

                Ya encore du boulot :D

                Merci en tout cas de ton aide.

                Tuc

                En attente dune reponse future :)
                • Partager sur Facebook
                • Partager sur Twitter
                  13 février 2008 à 1:06:47

                  Bon déjà ne trouves-tu pas que tu te compliques la vie avec ceci :
                  MAX += 900 au lieu de tout simplement MAX = 1000 :) mais bon ca marche aussi :) .

                  Après reflexion non cela ne revient pas au meme car si au début tu as MAX = 100 puis tu rajoutes MAX += 900 ca fait 1000 ...mais si tu refait un tour de boucle ca fera MAX += 900 par rapport au dernier MAX soit 1900 ;) car tu n'as pas remit MAX à 100.

                  Dans le dernier default il manque un break encore :) .

                  Et dernier truc que j'ai vu : tu 'return 0', pas "return = 0" ;) .

                  en fait non ya encore 2 trucs (je trouve au fur et a mesure lol
                  Alors déja quand tu trouves le nombre, tu trouves pas qu'il te manque un truc ? (allé cherche ;) )

                  et aussi ton compteur ...fais 2 parties d'affilées et compte ;) petit problème (allé look for :) )

                  Oui je sais les 2 dernières je te les dis pas directement mais bon je trouve que déjà j'ai passé pas mal de temps ;) Normalement tout roule
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 février 2008 à 2:08:38


                    Salut !!

                    Aprés 5 bonnes heures(sans mentir lol) à me prendre la tête car je ne comprennais rien au message d'erreur, voila mon jeu enfinnnn terminé !!


                    Donc voila si tu veux je te passe le mien...


                    1. #include <stdio.h>
                    2. #include <stdlib.h>
                    3. #include <time.h>
                    4. #include <math.h>
                    5. int main ( int argc, char** argv )
                    6. {
                    7. long nombreMystere = 0, nombreEntre = 0, coup = 1, nombreJoueur = 0, choixNiveau = 0, MAX = 100, questionRejouer = 0, rejouer = 1;
                    8. const long MIN = 0;
                    9. do
                    10. {
                    11. printf ("****Choisissez votre mode joueur****\n\n\n"); // Menu du mode solo ou duo
                    12. printf ("1. 1 Joueur\n");
                    13. printf ("2. 2 Joueurs\n");
                    14. printf ("Quel est votre choix ? ");
                    15. scanf ("%ld", &nombreJoueur);
                    16. printf ("\n");
                    17. do
                    18. {
                    19. switch (nombreJoueur)
                    20. {
                    21. case 1:
                    22. printf ("****Vous avez choisi le mode 1 Joueur.****\n\n"); // Mode solo
                    23. printf ("Quel niveau voulez vous ?\n\n"); //selection du niveau
                    24. printf ("1. 1 a 100\n");
                    25. printf ("2. 1 a 1 000\n");
                    26. printf ("3. 1 a 10 000\n");
                    27. printf ("4. bonus\n\n");
                    28. printf ("Quel est votre choix ? ");
                    29. scanf ("%ld", &choixNiveau);
                    30. printf ("\n\n\n");
                    31. switch (choixNiveau)
                    32. {
                    33. case 1:
                    34. printf ("Vous avez choisi le niveau 1.\n\nLe chiffre sera entre 1 et 100.\n\n");
                    35. break;
                    36. case 2:
                    37. printf ("Vous avez choisi le niveau 2.\n\nLe chiffre sera entre 1 et 1 000.\n\n");
                    38. MAX += 900;
                    39. break;
                    40. case 3:
                    41. printf ("Vous avez choisi le niveau 3.\n\nLe chiffre sera entre 1 et 10 000.\n\n");
                    42. MAX += 9900;
                    43. break;
                    44. case 4:
                    45. printf ("Vous avez choisi le niveau bonus.\n\n Veulliez inscrire le nombre maximum qui peut-etre choisi : ");
                    46. scanf ("%ld", &MAX);
                    47. printf ("\n\n\n");
                    48. break;
                    49. }
                    50. break;
                    51. case 2:
                    52. printf ("****Vous avez choisi le mode 2 Joueurs.****\n\n"); // Mode duo
                    53. break;
                    54. default:
                    55. printf ("Le nombre est incorrect. Le jeu sera en mode solo par defaut\n\n\n"); // Default
                    56. break;
                    57. }
                    58. if (nombreJoueur != 2) // Si le nombre est different de 2, mode solo
                    59. {
                    60. srand(time(NULL));
                    61. nombreMystere = (rand() % (MAX - MIN + 1)) + MIN; // Génération du nombre aléatoire
                    62. }
                    63. else if (nombreJoueur == 2) // si le nombre est egale a 2, mode duo
                    64. {
                    65. printf ("Ecrivez un nombre entre 1 et une limite defini entre vous. ");
                    66. scanf ("%ld", &nombreMystere);
                    67. printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                    68. }
                    69. } while (nombreMystere < 0);
                    70. /* La boucle du programme. Elle se répète tant que l'utilisateur
                    71. n'a pas trouvé le nombre mystère */
                    72. do
                    73. {
                    74. // On demande le nombre
                    75. printf("Quel est le nombre ? ");
                    76. scanf("%ld", &nombreEntre);
                    77. // On compare le nombre entré avec le nombre mystère
                    78. if (nombreMystere > nombreEntre)
                    79. {
                    80. <code type="ocaml">printf("C'est plus !\n\n");
                    81. coup++;
                    82. }
                    83. else if (nombreMystere < nombreEntre)
                    84. {
                    85. printf("C'est moins !\n\n");
                    86. coup++;
                    87. }
                    88. else
                    89. {
                    90. printf ("****Bravo, vous avez trouve le nombre mystere en %ld coups !!!****\n\n\n", coup);
                    91. }
                    92. } while (nombreEntre != nombreMystere);
                    93. printf ("****Voulez-vous rejouer ?****\n\n");
                    94. printf ("1. oui\n");
                    95. printf ("2. non\n\n");
                    96. printf ("**Alors ?!** ");
                    97. scanf ("%ld", &questionRejouer);
                    98. switch (questionRejouer)
                    99. {
                    100. case 1:
                    101. printf ("Vous rejouer !!!\n\n\n");
                    102. coup = 0;
                    103. break;
                    104. case 2:
                    105. printf ("Au revoir...\n\n\n");
                    106. rejouer--;
                    107. break;
                    108. default:
                    109. printf ("Le nombre est incorrect. Le jeu va s'arreter.\n\n\n");
                    110. rejouer--;
                    111. break;
                    112. }
                    113. } while (rejouer != 0);
                    114. system("PAUSE");
                    115. }





                    Voila j'espere que ça t'aidera ^^
                    Tu n'auras juste qu'à modifié les titres et options enfin si tu veux mettre quelquechose de plus perso :p
                    A plus, Julie.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      13 février 2008 à 8:41:07

                      Plutôt que de faire :

                      1. #
                      2. printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
                      3. #
                      4. }


                      Fait plutôt :

                      1. int i = 0;
                      2. for(i = 0 ; i < 20 ; i++)
                      3. {
                      4. printf("\n");
                      5. }


                      Je pense que c'est plus propre.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 février 2008 à 13:48:24

                        Kikou !!
                        C'est pas faux ;) je ne savais pas que l'on pouvait faire comme ça lol
                        Merci à toi ^^
                        A + Julie.
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Jeu Plus ou moins probleme...

                        × 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