Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'aide pour Plus ou moins

(amélioration

Sujet résolu
    12 août 2008 à 21:13:41

    Bien le bonjour a tout les programmeur et/ou futur programmeur

    JE suis en train de suivre le tuto magnifique qui apprend a coder en C, mais sur le jeu plus ou moins, je butte.

    J'ai fait le compteur, J'ai réaliser le mode 2 joueur, mais au niveau de difficultée j'ai un log d'erreur de ce type :

    Image utilisateur

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int main(int argc, char *argv[])
    {
     
      srand(time(NULL));
      long compteur=0,nombreChoisi=0,nombreMystere=0,choix=0,choix2=0,nombreMaxi=0;
      int continuerPartie=1;
      const long MIN=1;
      
      printf("================================================================================\n");
      printf("=============================Le jeu du Plus ou moins============================\n");
      printf("================================================================================\n\n\n");
      printf("Choisisez le type de jeu\n\n");
      printf("1 - Jouer seul contre l'ordinateur\n\n");
      printf("2 - Joueur contre Joueur\n\n");
      printf("Quel est votre choix ?: ");
      scanf("%ld", &choix);
      
      switch (choix)
       {
        case 1: //choix du mode joueur VS AI, choix de la difficultée
             printf("Choix de la difficultee\n");
             printf("3 - Facile (nombre mystere de 1 a 100)\n\n");
             printf("4 - Moyen (nombre mystere de 1 a 1000\n\n");
             printf("5 - Difficile (nombre mystere de 1 a 10000\n\n");
             printf("6 - Samourai (nombre mystere de 1 a 100000\n\n");
             printf("Quel difficulte choisisez vous ?: ");
             scanf("%d", &choix2);
             
               switch (nombreMaxi)  
               {
                 case 3:  // Choix de la difficultée numéro 3 (facile)
                      
                     nombreMaxi=100;      
        
                              do
                          {
                           nombreMystere=(rand() % (nombreMaxi - MIN + 1)) + MIN;
                      
                            while (nombreChoisi != nombreMystere)
                            {
                             printf("Quel est le nombre mystere ?: ");
                             scanf("%ld", &nombreChoisi);         
                               if (nombreChoisi < nombreMystere) 
                                       {
                                             printf("C'est plus !!\n\n");
                                             compteur++;
                                       }
                               else if (nombreChoisi > nombreMystere) 
                                       {
                                                  printf("c'est moins !!\n\n");
                                                  compteur++;
                                   }
                                   else if (nombreChoisi == nombreMystere)
                                   {
                                                    printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                                                    printf("\n 0 - arreter\n");
                                                    printf("\n 1 - recommencer\n\n");
                                                    printf("Quel est votre choix ?: ");
                                                    scanf("%ld", &continuerPartie);        
                               } 
                             }
                             break;
                          }
                             
                           
                    case 4: // Choix de la difficultée numéro 4 (moyen)
                           
                    nombreMaxi=1000;
                       
                           do
                          {
                           nombreMystere=(rand() % (nombreMaxi - MIN + 1)) + MIN;
                      
                            while (nombreChoisi != nombreMystere)
                            {
                             printf("Quel est le nombre mystere ?: ");
                             scanf("%ld", &nombreChoisi);         
                               if (nombreChoisi < nombreMystere) 
                                       {
                                             printf("C'est plus !!\n\n");
                                             compteur++;
                                       }
                               else if (nombreChoisi > nombreMystere) 
                                       {
                                                  printf("c'est moins !!\n\n");
                                                  compteur++;
                                   }
                                   else if (nombreChoisi == nombreMystere)
                                   {
                                                    printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                                                    printf("\n 0 - arreter\n");
                                                    printf("\n 1 - recommencer\n\n");
                                                    printf("Quel est votre choix ?: ");
                                                    scanf("%ld", &continuerPartie);        
                               } 
                             }
                                                    } 
                                                     
                          break;
                          
                      case 5: // Choix de la difficultée numéro 5 (difficile)
                        
                        nombreMaxi=10000;   
                            
                           do
                          {
                           nombreMystere=(rand() % (nombreMaxi - MIN + 1)) + MIN;
                      
                            while (nombreChoisi != nombreMystere)
                            {
                             printf("Quel est le nombre mystere ?: ");
                             scanf("%ld", &nombreChoisi);         
                               if (nombreChoisi < nombreMystere) 
                                       {
                                             printf("C'est plus !!\n\n");
                                             compteur++;
                                       }
                               else if (nombreChoisi > nombreMystere) 
                                       {
                                                  printf("c'est moins !!\n\n");
                                                  compteur++;
                                   }
                                   else if (nombreChoisi == nombreMystere)
                                   {
                                                    printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                                                    printf("\n 0 - arreter\n");
                                                    printf("\n 1 - recommencer\n\n");
                                                    printf("Quel est votre choix ?: ");
                                                    scanf("%ld", &continuerPartie);        
                               } 
                             }
                             break;
                           
                        case 6:  // Choix de la difficultée numéro 6 (samourai)
                        
                           nombreMaxi=100000;   
                            
                            do
                            {
                               nombreMystere=(rand() % (nombreMaxi - MIN + 1)) + MIN;
                          
                                while (nombreChoisi != nombreMystere)
                                {
                                 printf("Quel est le nombre mystere ?: ");
                                 scanf("%ld", &nombreChoisi);         
                                   if (nombreChoisi < nombreMystere) 
                                           {
                                                 printf("C'est plus !!\n\n");
                                                 compteur++;
                                           }
                                   else if (nombreChoisi > nombreMystere) 
                                           {
                                                      printf("c'est moins !!\n\n");
                                                      compteur++;
                                       }
                                       else if (nombreChoisi == nombreMystere)
                                       {
                                                        printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                                                        printf("\n 0 - arreter\n");
                                                        printf("\n 1 - recommencer\n\n");
                                                        printf("Quel est votre choix ?: ");
                                                        scanf("%ld", &continuerPartie);  
                                   } 
                               }
                           break;
                           
                    default :
                              
                      printf("vu que tes trop con pour pas savoir choisir un chiffre entre 3 et 6 tu vas faire le niveau 1 !!");
                              
                      nombreMaxi=100;      
        
                            do
                        {
                           nombreMystere=(rand() % (nombreMaxi - MIN + 1)) + MIN;
                      
                            while (nombreChoisi != nombreMystere)
                            {
                             printf("Quel est le nombre mystere ?: ");
                             scanf("%ld", &nombreChoisi);         
                               if (nombreChoisi < nombreMystere) 
                                       {
                                             printf("C'est plus !!\n\n");
                                             compteur++;
                                       }
                               else if (nombreChoisi > nombreMystere) 
                                       {
                                                  printf("c'est moins !!\n\n");
                                                  compteur++;
                                   }
                                   else if (nombreChoisi == nombreMystere)
                                   {
                                                    printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                                                    printf("\n 0 - arreter\n");
                                                    printf("\n 1 - recommencer\n\n");
                                                    printf("Quel est votre choix ?: ");
                                                    scanf("%ld", &continuerPartie);        
                               } 
                            }    
                          break;       
                        }while (continuerPartie==1);
                  }
                              
                            }
            }                        
            
         case 2 : //joueur contre Joueur
           do
           {
                  printf("Joueur 1, choisisez le nombre mystere: ");
                  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\nA vous de jouer joueur 2 !\n\n\n");
                   
                           do
                       {
                             printf("Quel est le nombre mystere ?: ");
                             scanf("%ld", &nombreChoisi);         
                               if (nombreChoisi < nombreMystere) 
                                       {
                                             printf("C'est plus !!\n\n");
                                             compteur++;
                                       }
                               else if (nombreChoisi > nombreMystere) 
                                       {
                                                  printf("c'est moins !!\n\n");
                                                  compteur++;
                                   }
                                   else if (nombreChoisi == nombreMystere)
                                   {
                                                    printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                                                    printf("\n 0 - arreter\n");
                                                    printf("\n 1 - recommencer\n\n");
                                                    printf("Quel est votre choix ?: ");
                                                    scanf("%ld", &continuerPartie);
                               }                
                            } while (nombreChoisi != nombreMystere);                
            }while (continuerPartie=1);
              
             default:
             printf("Vous avez effectuer un mauvais choix !veuillez relancer l'exe\n");                  
                                  
              
              
       }   
        Systeme("PAUSE")              
        return 0;
       }
    




    Si vous pouvez m'aidez sa sera super car je commence a perdre patiente sa fait 1 heure que je suis sur le problème, je l'ai ouvert avec notepad++ pour verifie chaque acolade qu'elle soit fermé, etc... mais j'ai toujours les erreur :/ je commence a m'enervez. Merci de votre future aide
    • Partager sur Facebook
    • Partager sur Twitter
      12 août 2008 à 21:22:52

      Bonsoir :)

      Euh pour ton code, il n'est pas inséré avec les bonnes balises, donc en regardant rapidement je dirais que les break sont mal placés.
      En ce qui concerce l'organisation de ton code, elle est franchement lourde sachant qu'entre des niveaux de difficultés différents il n'y a que la valeur maximale qui change, à toi de creuser ça ;) ...
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        12 août 2008 à 21:48:56

        Déjà je sais pas si faire:

        nombreMaxi=100;
        


        Dans une case c'est bien, si c'est une variable met le au début du code avec un long.

        ensuite:

        scanf("%d", &choix2);
        
                   switch (nombreMaxi)
                   {
        


        tu fais un scanf (choix2) et ton switch est nombreMaxi.

        scanf("%d", &choix2);
        
                   switch (choix2)
                   {
        


        je crois que c'est mieux comme sa.
        et quand tu fais une 2eme variable avec switch tu peux mettre case 1 case 2, tu peux aussi laisser case 3 et case 4... .


        }
            Systeme("PAUSE")
            return 0;
        


        ceci n'est pas bon car tu referme trop tôt ou sinon tu as oublié } après le return.

        }
            Systeme("PAUSE")
            return 0;
        }
        


        Voila ce que cela dois donner.

        je n'ai mis que des fautes vus d'œil.
        Mais je te conseille de refere ton code.

        bonne nuit :D
        • Partager sur Facebook
        • Partager sur Twitter
          12 août 2008 à 21:56:58

          Si tu pouvais indenter et rectifier afin d'utiliser les balises code C et non Autre ça nous arrangerait. Parce que là, rien qu'en parcourant rapidement ton code, on voit des

          }while (continuerPartie=1);
          <...>
          Systeme("PAUSE")
          


          ...
          • Partager sur Facebook
          • Partager sur Twitter
            12 août 2008 à 23:03:11

            Citation : Ned77

            Déjà je sais pas si faire:


            <citation nom="rid">et quand tu fais une 2eme variable avec switch tu peux mettre case 1 case 2, tu peux aussi laisser case 3 et case 4... .



            Je l'avais changer, car il me plantais a cause de 2 case 2 qui etait dans le meme switch mais grace a toi j'ai compris d'ou cela venais.


            Citation : rid

            }
                Systeme("PAUSE")
                return 0;
            


            c'est juste que quand j'ai copié mon code, j'ai pas séléctionnée la derniere accolade

            Ensuite, Au niveau d'une organisation trop lourde oui -_-' mais je sais pas trop comment la réorganiser je la pensait pas mal.

            en tout cas merci de votre aide mais il me reste tout de meme les bug :/
            • Partager sur Facebook
            • Partager sur Twitter
              13 août 2008 à 0:46:03

              Citation : Blakphoenix

              Ensuite, Au niveau d'une organisation trop lourde oui -_-' mais je sais pas trop comment la réorganiser je la pensait pas mal.


              il faut apprendre à faire des fonctions pour éviter de recopier du code. Seules les données changent.

              plus_ou_moins (nombreMystere);
              


              C'est la façon de choisir le nombre mystère qui change selon le niveau et 1 ou 2 joueurs. Ca doit être géré en amont.

              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                13 août 2008 à 1:19:42

                Citation : C

                Systeme("PAUSE")


                :o

                C'est pas plutôt : system("PAUSE");


                :p
                • Partager sur Facebook
                • Partager sur Twitter
                  13 août 2008 à 10:14:53

                  merci pour le system pause ^^

                  mais j'ai toujours la meme erreur:

                  Syntax error at end of input, dev C++ colorie la dernière accolade.

                  voici mon code retapper
                  #include <stdio.h>
                  #include <stdlib.h>
                  #include <time.h>
                  
                  int main(int argc, char *argv[])
                  {
                   
                    srand(time(NULL));
                    long compteur=0,nombreChoisi=0,nombreMystere=0,choix=0,choix2=0,nombreMaxi=0;
                    int continuerPartie=1;
                    const long MIN=1;
                    
                    printf("================================================================================\n");
                    printf("=============================Le jeu du Plus ou moins============================\n");
                    printf("================================================================================\n\n\n");
                    printf("Choisisez le type de jeu\n\n");
                    printf("1 - Jouer seul contre l'ordinateur\n\n");
                    printf("2 - Joueur contre Joueur\n\n");
                    printf("Quel est votre choix ?: ");
                    scanf("%ld", &choix);
                    
                    switch (choix)
                     {
                       case 1: //choix du mode joueur VS AI, choix de la difficultée
                      
                           printf("Choix de la difficultee\n");
                           printf("1 - Facile (nombre mystere de 1 a 100)\n\n");
                           printf("2 - Moyen (nombre mystere de 1 a 1000\n\n");
                           printf("3 - Difficile (nombre mystere de 1 a 10000\n\n");
                           printf("4 - Samourai (nombre mystere de 1 a 100000\n\n");
                           printf("Quel difficulte choisisez vous ?: ");
                           scanf("%d", &choix2);
                           
                           if(choix2==1)
                           nombreMaxi=100;
                           else if(choix2==2)
                           nombreMaxi=1000;
                           else if(choix2==3)
                           nombreMaxi=10000;
                           else if(choix2==4)
                           nombreMaxi=100000;
                           else
                           {
                            printf("Vu que tu est trop con pour pas comprendre que c'est un chiffre entre 1 et 4 qu'il faut choisir, tu vas faire le mode facile !");
                            nombreMaxi=100;
                            } 
                    
                          	 do
                                {
                                 nombreMystere=(rand() % (nombreMaxi - MIN + 1)) + MIN;
                            
                                 while (nombreChoisi != nombreMystere)
                                  {
                                       printf("Quel est le nombre mystere ?: ");
                                       scanf("%ld", &nombreChoisi); 	
                                     if (nombreChoisi < nombreMystere) 
                          		   {
                      	 	         printf("C'est plus !!\n\n");
                      	 	         compteur++;
                          		   }
                                 else if (nombreChoisi > nombreMystere) 
                          		   {
                       		 	     printf("c'est moins !!\n\n");
                       		 	     compteur++;
                          	       }
                      	       else if (nombreChoisi == nombreMystere)
                          	       {
                      				 printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                      				 printf("\n 0 - arreter\n");
                      				 printf("\n 1 - recommencer\n\n");
                      				 printf("Quel est votre choix ?: ");
                      				 scanf("%ld", &continuerPartie);        
                                      } 
                                
                                           
                          
                       case 2 : //joueur contre Joueur
                         do
                         {
                  	      printf("Joueur 1, choisisez le nombre mystere: ");
                  	      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\nA vous de jouer joueur 2 !\n\n\n");
                  	       
                  		       do
                  	           {
                  		         printf("Quel est le nombre mystere ?: ");
                  		         scanf("%ld", &nombreChoisi); 	
                  		           if (nombreChoisi < nombreMystere) 
                  				   {
                  			 	        printf("C'est plus !!\n\n");
                  			 	        compteur++;
                  				   }
                  		           else if (nombreChoisi > nombreMystere) 
                  				   {
                  		 		 	    printf("c'est moins !!\n\n");
                  		 		 	    compteur++;
                  			       }
                  			       else if (nombreChoisi == nombreMystere)
                  			       {
                  						printf("Bravo tu a trouver le nombre mystere en %ld coups\n\n", compteur);
                  						printf("\n 0 - arreter\n");
                  						printf("\n 1 - recommencer\n\n");
                  						printf("Quel est votre choix ?: ");
                  						scanf("%ld", &continuerPartie);
                  		           }		
                  		        } while (nombreChoisi != nombreMystere);		
                          }while (continuerPartie=1);
                            
                           default:
                           printf("Vous avez effectuer un mauvais choix !veuillez relancer l'exe\n");		  
                  	    		  
                            
                              
                      system("PAUSE");      	
                      return 0;
                  }
                  


                  si vous pouvez me dire d'ou vient cette ****** que j'ai chercher pendant 1 heure sa serait bien merci :/


                  problème regler, il manquait des accollade, merci a vous tous !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 août 2008 à 10:22:11

                    indente ton code correctement parce qu'on a du mal à voir ce qui va ensemble et toi aussi surement

                    do
                                  {
                                   nombreMystere=(rand() % (nombreMaxi - MIN + 1)) + MIN;
                              
                                   while (nombreChoisi != nombreMystere)
                                    {
                    

                    Je me trompe peut être mais je crois que tu a un do qui se ballade sans while. En corrigeant l'indentation, tu aurais pu voir les erreurs d'accolades et de groupes incomplets
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      13 août 2008 à 10:40:15

                      Moi je te conseil de revoir case par case sur un autre projet et ensuite de faire un copier coller de la case a toute les autres en changent juste le nom de la case et le nombreMax. (c ce que je fais quand j ai trop d'erreur ^^ ).

                      a+

                      Edit: quel IDE utilises-tu ?
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 août 2008 à 10:41:29

                        effectivement, j'avais une boucle non fermer.

                        excuser moi je vais passer pour ignare, mais intender c'est pas mettre en couleur de C le copié que j'ai fait ? si oui je l'ai corriger pour qu'il soit en couleur ...

                        J'utilise Dev C++
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 août 2008 à 10:45:50

                          Indenté, c'est organisé le code afin de facilité la relecture.
                          En gros voila comme je fais:
                          -dès que j'ouvre une accolade, le contenu est décale d'une tabulation. Comme ca, j'oublie surement d'autre astuce de l'indentation mais si tu fais déjà cela, ce sera un très bon début.

                          Peut tu reposte ton code complet?
                          Soit dit en passant, tu as un problème ici aussi:
                          }while (continuerPartie=1);
                          


                          • Partager sur Facebook
                          • Partager sur Twitter
                            13 août 2008 à 10:46:16

                            Citation : Blakphoenix

                            excuser moi je vais passer pour ignare, mais intender c'est pas mettre en couleur de C le copié que j'ai fait ? si oui je l'ai corriger pour qu'il soit en couleur ...


                            Non. Tu confonds indentation et coloration syntaxique.

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Music only !

                            Besoin d'aide pour 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