Partage
  • Partager sur Facebook
  • Partager sur Twitter

Plus ou moins

Sujet résolu
    23 octobre 2017 à 13:17:35

    Bonjour, je suis le cours Apprenez a programmez en c et j'en suis au TP plus ou moins. A la fin fin fin où  il demande de l’améliorer. Donc faire un compteur de coups,demander au joueur s'il veut faire une autre partie et j'en suis à implanter un mode deux joueurs donc créer un menu pour le choix. Et je ne sais pas par où commencer j'ai trop de problèmes x)...Donc déjà quand l'utilisateur décide de faire le choix 1 (mode solo) et que finalement il décide de partir j'ai le au revoir qui passe en boucle. Alors que le choix 2 (mode deux joueurs) qui est presque similaire juste a part le fait que ce n'est pas un nombre généré aléatoirement quand le joueur décide de partir tout se passe bien et le au revoir ne défile pas en boucle...En fait il ne peut pas passer en boucle si il n'est plus là! Et ensuite le choix 3 (cancel) marche heureusement! Merci d'avance pour votre aide :) Et aussi je me demande si créer une boucle dans une boucle dans une boucle est une bonne idée ^^.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main ( int argc, char** argv )
    {
        int choix =0, nombreMystere = 0, nombreEntre = 0, coups=1, continuerPartie;
        const int MAX = 100, MIN = 1;
    
        //Debut du jeu
    
        printf("Bienvenue dans le jeu plus ou moins!!\n");
        printf("Vous devez trouvez le nombre mystere en moins de coups possible!\n");
        printf("Celui ci est compris entre 0 et 100! Bonne chance a vous!\n");
        printf("\n");
        printf("Vous avez le choix entre deux modes:\n");
        printf("1.Mode solo\n");
        printf("2.Mode deux joueurs\n");
        printf("3.Cancel\n");
        printf("Quel est votre choix? ");
        scanf("%d",&choix);
        printf("\n");
    
        //La boucle du choix
    do{
        if(choix==1 && choix !=2 && choix!=3 && continuerPartie!=0)
        {
            printf("Vous avez choisi le mode solo\n");
    
        /*else if(choix=2)
        {
           printf("Vous avez choisi le mode deux joueurs\n");
        }*/
    
          //La boucle de la partie elle s'arrete si le joueur appuie sur 0
    
           do{
                printf("Pour commencer une partie appuyez sur 1. Pour partir appuyez sur 0.\n");
                scanf("%d",&continuerPartie);
                printf("\n");
    
               if(continuerPartie)
             { // Génération du nombre aléatoire
    
               srand(time(NULL));
               nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    
    
                   /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */
    
                  do{
                  // On demande le nombre
                  printf("Quel est le nombre ? ");
                  scanf("%d", &nombreEntre);
    
                 // On compare le nombre entré avec le nombre mystère
    
                      if (nombreMystere > nombreEntre)
                        {printf("C'est plus !\n\n");
                         coups++;}
                      else if (nombreMystere < nombreEntre)
                       {printf("C'est moins !\n\n");
                       coups++;}
                      else
                       {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                  } while (nombreEntre != nombreMystere);
             }
    
             else if(choix==3&& choix!=1 && choix!=2 && continuerPartie!=1)
             {printf("Au revoir\n");}
    
             }while (continuerPartie);
        }
    
    
        if(choix==2 && choix!=1 && choix!=3 && continuerPartie!=0)
        {printf("Vous avez choisi le mode deux joueurs\n");
    
            do{
                printf("Pour commencer une partie appuyez sur 1. Pour partir appuyez sur 0.\n");
                scanf("%d",&continuerPartie);
                printf("\n");
    
               if(continuerPartie)
             { // Génération du nombre par une personne
    
    
               printf("Joueur n°1 choisissez un nombre entre 0 et 100!\n");
               scanf("%d",&nombreMystere);
               printf("Joeur n°2 vous devez le deviner!\n");
    
               /* La boucle du programme. Elle se répète tant que l'utilisateur n'a pas trouvé le nombre mystère */
    
                  do{
                  // On demande le nombre
                  printf("Quel est le nombre ? ");
                  scanf("%d", &nombreEntre);
    
                 // On compare le nombre entré avec le nombre mystère
    
                      if (nombreMystere > nombreEntre)
                        {printf("C'est plus !\n\n");
                         coups++;}
                      else if (nombreMystere < nombreEntre)
                       {printf("C'est moins !\n\n");
                       coups++;}
                      else
                       {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                  } while (nombreEntre != nombreMystere);
             }
    
             else if(choix==3&& choix!=1 && choix!=2 && continuerPartie!=1)
             {printf("Au revoir!\n");}
    
             }while (continuerPartie);
    
        }
        else
        {printf("Au revoir!\n");}
    
    }while(choix == 1 || choix == 2 && continuerPartie!=0);
        return 0;
    }
    



    • Partager sur Facebook
    • Partager sur Twitter
    On ne demande pas à un dentiste de faire la greffe d'une main, par contre ça ne choque pas de demander au voisin qui fait du Java de réparer la panne de son ordinateur "parce qu'il fait de l'informatique" - Auteur inconnu
      23 octobre 2017 à 15:59:18

      Il y a beaucoup de complications qui rendent le programme difficile à comprendre, par exemple les lignes 26, 69, 112 et 121 avec des conditions redondantes, et de façon générale la logique du programme est compliquée (mais je crois que c'est normal, le programme lui même est compliqué à faire).

      À la ligne 121, tu voulais faire

      while((choix == 1 || choix == 2) && continuerPartie!=0)

      ou

      while(choix == 1 || (choix == 2 && continuerPartie!=0))

      Sans les parenthèses internes, le compilateur choisit l'une de ces deux possibilités (qui ne sont pas équivalentes) en suivant les règles de priorité des opérateurs logiques, et je crains que son choix ne soit pas le tien... Mieux vaut mettre des parenthèses. (Avec l'option -Wall -Wextra, le compilateur signale d'ailleurs ce problème.)

      C'est normal qu'il écrive toujours « Au revoir ». Si on choisit le mode 1 joueur et qu'on tape 0 (pour partir), il ne rentre pas dans le if de la ligne 26 puisque continuerPartie vaut 0, mais il ne rentre pas non plus dans celui de la ligne 69 (et à mon avis tu t'attendais à ce qu'il le fasse) puisque choix vaut 1, pas 3. En fait, il se rend à la ligne 119 et écrit « Au revoir ». Ensuite, comme la condition de la ligne 121 est remplie (vu que choix vaut 1 et que tu n'as pas mis de parenthèses internes), il reboucle le do... while et ça ne finit jamais.

      Je crois qu'il faut que tu revoies :

      ‒ les conditions du if de la ligne 69 (à mon avis on doit juste tester continuePartie puisque, si on arrive là, choix vaut 1) ;

      ‒ à la ligne 76, ce ne devrait pas être « else if » plutôt que juste « if » ?

      ‒ et les conditions du while de la ligne 121 où je crois qu'il faut entourer de parenthèses choix == 1 et choix == 2.


      (Pour info, je viens de rectifier ces points, ça marche.)

      -
      Edité par robun 23 octobre 2017 à 16:02:42

      • Partager sur Facebook
      • Partager sur Twitter
        23 octobre 2017 à 17:10:30

        Merci je viens de changer tout ça et du coup ça marche bien :)

        Du coup j'ai changer la ligne 112 comme la ligne 69 et  maintenant mon au revoir apparaît enfin.

        Sinon ça doit être possible d'avoir le même résultat avec moins de boucles, car il faut que je crée encore un menu pour trois différents niveau donc ça vaudrait dire encore des boucles et je vais encore être perdu du coup je vais chercher un moyen.

        Merci encore :)

        • Partager sur Facebook
        • Partager sur Twitter
        On ne demande pas à un dentiste de faire la greffe d'une main, par contre ça ne choque pas de demander au voisin qui fait du Java de réparer la panne de son ordinateur "parce qu'il fait de l'informatique" - Auteur inconnu
          23 octobre 2017 à 17:35:20

          À vrai dire, ce programme devrait être fait avec la notion de fonction, qui simplifierait bien tout ça, mais la notion de fonction sera vue plus loin, donc pas le choix : le programme va être compliqué. Si tu a l'impression que c'est vraiment compliqué, peut-être devrais-tu reprendre les choses à zéro (je ne sais pas si tu as écrit le programme ci-dessus en ajoutant des trucs au fur et à mesure, mais si c'est le cas, ça va le rendre vraiment lourdingue).

          • Partager sur Facebook
          • Partager sur Twitter
            23 octobre 2017 à 17:42:57

            Oui j'ai écrit le programme en rajoutant des trucs au fur et à mesure. Du coup tu  me conseil de le réécrire en prenant en compte les trois différents niveau?
            • Partager sur Facebook
            • Partager sur Twitter
            On ne demande pas à un dentiste de faire la greffe d'une main, par contre ça ne choque pas de demander au voisin qui fait du Java de réparer la panne de son ordinateur "parce qu'il fait de l'informatique" - Auteur inconnu
              23 octobre 2017 à 18:15:38

              Je pense que ça vaut le coup de tout reprendre à zéro et d'écrire ça globalement, en partant du plus global et en terminant par les détails, parce que c'est une démarche qui fonctionne bien, je trouve.

              Si tu pouvais poster l'énoncé complet, j'essaierais d'expliquer ça en montrant comment je ferais le début.

              • Partager sur Facebook
              • Partager sur Twitter
                23 octobre 2017 à 18:34:49

                voici l'énoncé de base:

                Le principe est le suivant.

                1. L'ordinateur tire au sort un nombre entre 1 et 100.

                2. Il vous demande de deviner le nombre. Vous entrez donc un nombre entre 1 et 100.

                3. L'ordinateur compare le nombre que vous avez entré avec le nombre « mystère » qu'il a tiré au sort. Il vous dit si le nombre mystère est supérieur ou inférieur à celui que vous avez entré.

                4. Puis l'ordinateur vous redemande le nombre.

                5. … Et il vous indique si le nombre mystère est supérieur ou inférieur.

                6. Et ainsi de suite, jusqu'à ce que vous trouviez le nombre mystère.

                Le but du jeu, bien sûr, est de trouver le nombre mystère en un minimum de coups.

                Voici l'énoncé des améliorations:

                Les améliorations à réaliser

                Je vous demande en particulier de réaliser ces 3 améliorations sur le TP (vous serez noté là-dessus) :

                • Faites un compteur de « coups ». Ce compteur devra être une variable que vous incrémenterez à chaque fois que vous passez dans la boucle. Lorsque l'utilisateur a trouvé le nombre mystère, vous lui direz « Bravo, vous avez trouvé le nombre mystère en 8 coups » par exemple.

                • Lorsque l'utilisateur a trouvé le nombre mystère, le programme s'arrête. Demandez si le joueur veut faire une autre partie !

                  Il vous faudra faire une boucle qui englobera la quasi-totalité de votre programme. Cette boucle devra se répéter TANT QUE l'utilisateur n'a pas demandé à arrêter le programme. Je vous conseille de rajouter une variable booléenne du type continuerPartie initialisée à 1 au départ. Si l'utilisateur demande à arrêter le programme, vous mettrez la variable à 0 et le programme s'arrêtera.

                • Créez plusieurs niveaux de difficulté. Au début, faites un menu qui demande le niveau de difficulté. Par exemple :

                  • 1 = entre 1 et 100 ;

                  • 2 = entre 1 et 1000 ;

                  • 3 = entre 1 et 10000.

                  Si vous faites ça, vous devrez changer votre constante MAX… Eh oui, ça ne peut plus être une constante si la valeur doit changer au cours du programme ! Renommez par exemple cette variable en nombreMaximum (vous prendrez soin d'enlever le mot-clé const sinon ça sera toujours une constante !). La valeur de cette variable dépendra du niveau qu'on aura choisi.

                Vous pouvez sans problème partir du code de base fourni en solution dans le chapitre.

                -
                Edité par Redz' 23 octobre 2017 à 18:38:39

                • Partager sur Facebook
                • Partager sur Twitter
                On ne demande pas à un dentiste de faire la greffe d'une main, par contre ça ne choque pas de demander au voisin qui fait du Java de réparer la panne de son ordinateur "parce qu'il fait de l'informatique" - Auteur inconnu
                  23 octobre 2017 à 19:41:24

                  Hello,

                  Ce jeu, avec les améliorations, se résume à ceci:

                  faire
                  	demander le nombre de joueurs
                  	si le nombre de joueur est 1
                  		demander le niveau
                  		générer le nombre mystère en fonction du niveau
                  	sinon
                  		demander au joueur 2 le nombre à faire deviner par le joueur 1
                  	faire
                  		demander le nombre mystère au joueur 1
                  		afficher ke nombre de coups
                  		afficher un message en fonction de la réponse
                  	tant que le nombre mystère n'à pas été trouvé
                  	demander si on veut rejouer
                  tant que le joueur veut continuer

                  Plus qu'à traduire ça en C ;)

                  Eventuellement, on peut supposer qu'il y a toujours soit un, soit deux joueurs, et mettre la ligne 2 avant la ligne 1

                  -
                  Edité par edgarjacobs 23 octobre 2017 à 19:43:27

                  • Partager sur Facebook
                  • Partager sur Twitter

                  On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                    23 octobre 2017 à 19:42:13

                    OK. Donc je pars du plus global :

                    do
                    {
                        /* menu */
                        /* partie */
                    } while (continuerPartie == 1) ;
                    

                    Tu remarques que la condition du while est toute simple, plus simple que ce que tu as fait. C'est là la différence entre un programme écrit dans le bon ordre et un programme où on rajoute des trucs au fur et à mesure...

                    La variable continuerPartie devra probablement être demandée à la fin de la partie. Bien, voyons  à présent le menu. On propose 3 niveaux de difficulté et 2 modes (solo ou à deux joueurs). Ça peut commencer comme ça :

                    int niveau ; // niveau 1, 2 ou 3
                    int mode ;   // 1 = solo, 2 = deux joueurs
                    printf("Jeu du plus ou moins\n") ;
                    printf("Choisissez un niveau (1, 2, 3)
                    do {
                        scanf("%d", &niveau) ;
                    } while (niveau != 1 && niveau != 2 && niveau != 3) ;
                    printf("Choisissez un mode (1 = solo, 2 = deux joueurs"\n) ;
                    do {
                        scanf("%d", &mode) ;
                    } while (mode != 1 && niveau != 2) ;
                    

                    Ah, là je suis rentré dans le détail... (Il vaudrait peut-être mieux mettre les printf dans les boucles do - scanf - while.)

                    Bon, reste à gérer la partie, c'est le plus difficile. Voici le plan :

                    int nombreMaxi ;  // nombre maximum (10, 100 ou 1000)
                    int nombreCoups ; // nombre de coups
                    int nombreSaisi ; // nombre saisi par l'utilisateur
                    int trouve = 0 ;  // vaudra 1 quand on aura trouvé le nombre mystère
                    /* calculer nombreMaxi à partir de niveau */
                    if (mode == 1) // mode solo
                    {
                        /* choisir nombreMystere = nombre aléatoire entre 1 et nombreMaxi */
                        do {
                            nombreCoups ++;
                            /* demander un nombre : nombreSaisi */
                            if (nombreSaisi == nombreMystere)
                                trouve = 1 ;
                            else /* donner un indice (c'est plus, c'est moins) */
                        } while (trouve == 0) ; // tant qu'on n'a pas trouvé
                    }
                    else if (mode == 2) // mode deux joueurs
                    {
                        /* ... ... ... ... */
                    }
                    

                    (Je n'ai pas écrit le mode multijoueur, je commence à avoir mal à la tête à réfléchir (hé, il est pas simple, cet exercice ! :) )

                    Zut, j'ai oublié, il faut ajouter ça après la ligne 19 :

                    printf("Voulez-vous continuer la partie ? (1 = oui, 0 = non)
                    do {
                        scanf("%d", &continuerPartie) ;
                    } while (continuerPartie != 0 && continuerPartie != 1) ;

                    Bref, l'idée est de faire un plan puis remplir au fur et à mesure. Aller du plus global au plus détaillé, c'est écrire le plan général, puis le plan de chaque partie, puis le plan des sous-parties, etc. De plus, il faut tester le programme chaque fois qu'on ajoute quelque chose (on n'attend pas d'avoir tout écrit pour voir si ça marche, c'est un coup à avoir plein d'erreurs et à ne pas savoir les détecter).

                    Remarque : ce que j'ai fait est loin d'être parfait. Par exemple le « if (mode == 2) » est inutile puisque, si on arrive là, c'est forcément que mode == 2. Mais je trouve ça plus lisible. De plus on pourrait faire mieux avec des notions que tu n'as pas encore vues (booléens en C99, fonctions, saisie sécurisée) donc je n'en parle pas (là j'en parle au cas où un programmeur expérimenté trouve dommage que je n'utilise pas de fonction ou de booléens etc.)

                    Remarque : je ne suis qu'un programmeur du dimanche, pas un pro. Mais justement, j'écris en général des petits programmes. Si je propose cette méthode, c'est parce qu'il me semble qu'elle marche bien.

                    (Ah, pendant que je tapais ce long message, edgarjacobs a écrit le sien. Je pense que nos messages sont complémentaires, même s'il a l'air d'utiliser un algorithme un poil différent.)

                    Dernière chose : c'est un exercice qui doit être très intéressant à refaire quand on a vu la notion de fonction. Je ne sais pas si le cours du site le re-propose alors, mais si ce n'est pas le cas, à mon avis ça vaut le coup de refaire cet exercice avec les fonctions.

                    -
                    Edité par robun 23 octobre 2017 à 19:54:42

                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 octobre 2017 à 11:41:31

                      Bonjour, hier aprem avant de recevoir vos réponses j'avais du coup tout refait depuis zéros et après j'ai vu vos réponses. Je m'en suis quand même servi :) surtout pour le "Voulez vous continuer la partie?" do while :) puis j'ai aussi rajoute la boucle pour redemander le choix si il n'est pas egal à 1 ou 2 ou 3. Du coup ça donne ça :

                      #include <stdio.h>
                      #include <stdlib.h>
                      #include <time.h>
                      
                      int main ( int argc, char** argv )
                      {
                          int nombreDeJoueur = 0, niveau = 0, nombreMystere = 0, nombreEntre = 0, max=0, coups=1, continuerPartie = 0;
                          const int MIN = 1;
                      
                          printf("------------------------------------\n");
                          printf("Bienvenue dans le jeu plus ou moins\n");
                          printf("Le but est de deviner le nombre mystere\n");
                          printf("\n");
                          printf("------------------------------------\n");
                      
                      do{//Boucle recommencer partie
                         do {
                          printf("***Nombres de joueurs?***\n");
                          printf("Maximum 2\n");
                          printf("Quel est votre choix?:");
                          scanf("%d",&nombreDeJoueur);
                          printf("\n");
                        } while (nombreDeJoueur!= 1 && nombreDeJoueur != 2) ;
                          system("cls");
                      
                         switch(nombreDeJoueur)//choix du mode
                          {
                             case(1)://mode solo et choix niveau
                                 do{
                                 printf("   Mode solo   \n");
                                 printf("***Choix niveau***\n");
                                 printf("niveau 1, niveau2,niveau3\n");
                                 printf("Quel est votre choix?");
                                 scanf("%d",&niveau);
                              } while (niveau != 1 && niveau != 2 && niveau != 3) ;
                                 system("cls");
                                 switch(niveau)
                                 {
                                    case(1):
                                      printf("\n ***  niveau1 ***  \n");
                                      printf("\n");
                                      int max = 100, coups = 1;
                                      srand(time(NULL));
                                      nombreMystere = (rand() % (max - MIN + 1)) + MIN;
                                      do{//Boucle qui se repete tant que le joueur n'a oas trouvé le nombre mystere
                                          printf("Quel est le nombre?");
                                          scanf("%d",&nombreEntre);
                                          coups;
                      
                                          if (nombreMystere > nombreEntre)
                                          {printf("C'est plus !\n\n");
                                           coups++;}
                                         else if (nombreMystere < nombreEntre)
                                         {printf("C'est moins !\n\n");
                                         coups++;}
                                         else
                                         {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                      
                                        }while(nombreMystere != nombreEntre);
                                        break;
                                        system("cls");
                                  case(2): // niveau 2
                                      printf(" ***  niveau2  *** \n");
                                      printf("\n");
                                      max = 1000, coups = 1;
                                      srand(time(NULL));
                                      nombreMystere = (rand() % (max - MIN + 1)) + MIN;
                                      do{//Boucle se repetant tant que nombre mystere non trouvé
                                          printf("Quel est le nombre?");
                                          scanf("%d",&nombreEntre);
                                          coups;
                      
                                          if (nombreMystere > nombreEntre)
                                          {printf("C'est plus !\n\n");
                                           coups++;}
                                         else if (nombreMystere < nombreEntre)
                                         {printf("C'est moins !\n\n");
                                         coups++;}
                                         else
                                         {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                      
                                      }while(nombreMystere != nombreEntre);
                                      break;
                                      system("cls");
                                  case(3): // niveau 3
                                      printf(" *** niveau3 *** \n");
                                      printf("\n");
                                      max = 10000, coups=1;
                                      srand(time(NULL));
                                      nombreMystere = (rand() % (max - MIN + 1)) + MIN;
                                      do{//Boucle se repetant tant que nombre mystere non trouvé
                                          printf("Quel est le nombre?");
                                          scanf("%d",&nombreEntre);
                                          coups;
                      
                                          if (nombreMystere > nombreEntre)
                                          {printf("C'est plus !\n\n");
                                           coups++;}
                                         else if (nombreMystere < nombreEntre)
                                         {printf("C'est moins !\n\n");
                                         coups++;}
                                         else
                                         {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                      
                                      }while(nombreMystere != nombreEntre);
                                      break;
                                      system("cls");
                                 }//fin choix niveau
                      
                                 break; // Fin mode solo
                             case(2): // mode deux joueurs et choix niveau
                                 do{
                                 printf("Mode deux joueurs\n");
                                 printf("***Choix niveau***\n");
                                 printf("niveau 1, niveau2,niveau3\n");
                                 printf("Quel est votre choix?:");
                                 scanf("%d",&niveau);
                                } while (niveau != 1 && niveau != 2 && niveau != 3) ;
                                 system("cls");
                                 switch(niveau) // choix niveau
                                 {
                                    case(1): //Si niveau 1
                                      printf("\n *** niveau1 ***\n");
                                      int max = 100, coups = 1;
                                       printf("Joueur n1 choisissez un nombre entre 0 et 100!\n");
                                       scanf("%d",&nombreMystere);
                                       printf("\n");
                                       system("cls");
                                       printf("Joueur n2 devinez le nombre\n");
                                      do{ // Boucle se repetant tant que nombre mystere pas trouvé
                                          printf("Quel est le nombre?");
                                          scanf("%d",&nombreEntre);
                                          coups;
                      
                                          if (nombreMystere > nombreEntre)
                                          {printf("C'est plus !\n\n");
                                           coups++;}
                                         else if (nombreMystere < nombreEntre)
                                         {printf("C'est moins !\n\n");
                                         coups++;}
                                         else
                                         {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                      
                                        }while(nombreMystere != nombreEntre);
                                        break;
                                    case(2): //si niveau 2
                                      printf("\n *** niveau2*** \n");
                                      max = 1000, coups = 1;
                                       printf("Joueur n1 choisissez un nombre entre 0 et 1000!\n");
                                       scanf("%d",&nombreMystere);
                                       printf("\n");
                                       system("cls");
                                       printf("Joueur n2 devinez le nombre\n");
                                      do{ //Boucle se repetant tant que nombre mystere pas trouvé
                                          printf("Quel est le nombre?");
                                          scanf("%d",&nombreEntre);
                                          coups;
                      
                                          if (nombreMystere > nombreEntre)
                                          {printf("C'est plus !\n\n");
                                           coups++;}
                                         else if (nombreMystere < nombreEntre)
                                         {printf("C'est moins !\n\n");
                                         coups++;}
                                         else
                                         {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                      
                                        }while(nombreMystere != nombreEntre);
                                        break;
                                        system("cls");
                                    case(3): //si niveau 3
                                      printf("\n *** niveau3*** \n");
                                      max = 100, coups = 1;
                                       printf("Joueur n1 choisissez un nombre entre 0 et 10000!\n");
                                       scanf("%d",&nombreMystere);
                                       printf("\n");
                                       system("cls");
                                       printf("Joueur n2 devinez le nombre\n");
                                      do{ // Boucle se repetant tant que nombre mystere pas trouvé
                                          printf("Quel est le nombre?");
                                          scanf("%d",&nombreEntre);
                                          coups;
                      
                                          if (nombreMystere > nombreEntre)
                                          {printf("C'est plus !\n\n");
                                           coups++;}
                                         else if (nombreMystere < nombreEntre)
                                         {printf("C'est moins !\n\n");
                                         coups++;}
                                         else
                                         {printf ("Bravo, vous avez trouve le nombre mystere en %d coups!!!\n\n",coups);}
                      
                                        }while(nombreMystere != nombreEntre);
                                        break; // Fin mode deux joueurs
                                        system("cls");
                                 }//fin choix niveau
                           }//fin choix mode
                          printf("\n------------------------------------\n");
                          printf("Souhaitez-vous refaire une partie ?\n");
                          printf("1. Oui\n");
                          printf("2. Non\n");
                          printf("Votre choix ? ");
                          scanf("%d", &continuerPartie);
                          printf("-------------------------------------\n\n");
                          system("cls");
                      
                          }while(continuerPartie == 1); //Fin boucle recommencer partie
                      
                          if(continuerPartie!=1){printf("Au revoir!");}
                          printf("\n");
                      
                      }
                      

                      Je trouve que ça semble mieux :) surtout car je m'y perds plus du tout dans les boucles qui etaient mise un peu par ci  un peu par la avant.

                      Du coup merci pour votre aide!

                      • Partager sur Facebook
                      • Partager sur Twitter
                      On ne demande pas à un dentiste de faire la greffe d'une main, par contre ça ne choque pas de demander au voisin qui fait du Java de réparer la panne de son ordinateur "parce qu'il fait de l'informatique" - Auteur inconnu
                        24 octobre 2017 à 12:51:50

                        Ça a l'air encore compliqué (plus de 200 lignes...), mais je crois que c'est normal vu qu'il faut mettre plein d'options. En effet, c'est important de pouvoir se relire sans se perdre dans les méandres du code... Bravo !

                        -
                        Edité par robun 24 octobre 2017 à 12:52:01

                        • Partager sur Facebook
                        • Partager sur Twitter

                        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