Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème boucle

tp plus ou moins votre premier jeu

Sujet résolu
    10 octobre 2019 à 19:24:55

    bonjour je rencontre un problème sur mon programme.

    En effet lorsque je le lance tout fonctionne nickel mais lorsque je veux refaire une partie, un bout de mon texte s'affiche mal.

    j'ai l'impression que mon scanf passe devant les printf... ( dans l'orde d'apparition sur l'écran).

    Je dois d'abord rentré un nombre pour qu'en suite tout s'affiche ??

    Je n'arrive pas à vous mettre de screenshot mais si vous arrive a comprendre ( bien que je pense que ce soit un peu brouillon)

    merci de m'aider :-)

    -
    Edité par on_L'apprenti 10 octobre 2019 à 19:26:14

    • Partager sur Facebook
    • Partager sur Twitter
      10 octobre 2019 à 20:02:14

      Hello,

      Ok pour le print screen qui montre le problème. Mais poste ton code au complet en utilisant le bouton </> de l'éditeur du site. Sans le code, pas évident de t'aider (quoique, peut-être le classique \n qui reste dans le buffer clavier....)

      • 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

        10 octobre 2019 à 20:22:41

        int main()  {
            
            int partie = 1;
            
            while(partie != 0)
            {                               
                
                int joueur = 1;
                printf("Choisissez le mode de jeu:\n");
                printf("1. Mode Solo\n");
                printf("2. Mode 2 joueurs\n");
                
                scanf("%d", &joueur);
                
                if(joueur == 1) {
                    
                    int niveau = 0;
                    
                    printf("Choisissez votre niveau\n");
                    printf("Niveau 1 : 1 à 100\n");
                    printf("Niveau 2 : 1 à 1000\n");
                    scanf("%d", &niveau);
                    if( niveau == 1){
                
                const int MAX = 100, MIN = 1;
                  int nombreMystere = 0;
                  
            srand(time(NULL));
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
            
            int nombre = 0;
            int nombredecoup = 0;
            
            while(nombre != nombreMystere)
            {
                printf("Quel est le nombre ?\n");
                scanf("%d", &nombre);
                
                if (nombre < nombreMystere){
                    printf("C'est plus !\n");
                    nombredecoup++;
                }
                
                else if (nombre > nombreMystere) {
                    printf("C'est moins !\n");
                    nombredecoup++;
                }
                
                else {
                    printf("BRAVOOOO !!\n");
                    nombredecoup++;
                    printf("Vous avez trouver en %d coups \n\n", nombredecoup);
                }
                }
                }
                    else {
                                   const int MAX = 1000, MIN = 1;
                                            int nombreMystere3 = 0;
                                            
                                      srand(time(NULL));
                                      nombreMystere3 = (rand() % (MAX - MIN + 1)) + MIN;
                                      
                                      int nombre3 = 0;
                                      int nombredecoup3 = 0;
                                      
                                      while(nombre3 != nombreMystere3)
                                      {
                                          printf("Quel est le nombre ?\n");
                                          scanf("%d", &nombre3);
                                          
                                          if (nombre3 < nombreMystere3){
                                              printf("C'est plus !\n");
                                              nombredecoup3++;
                                          }
                                          
                                          else if (nombre3 > nombreMystere3) {
                                              printf("C'est moins !\n");
                                              nombredecoup3++;
                                          }
                                          
                                          else {
                                              printf("BRAVOOOO !!\n");
                                              nombredecoup3++;
                                              printf("Vous avez trouver en %d coups \n\n", nombredecoup3);
                                          }
                }
                    }
                }
                
                 else {
                    int Pj2 = 0, nombre2 = 0, nombredecoup2 = 0;
                    printf("l'un des joueur tape un nombre et l'autre doit trouver en un minimum de coup\t Ne trichez Pas !!:\n");
                    printf("entrez le nombre:");
                    scanf("%d", &Pj2);
                    
                    while(Pj2 != nombre2)
                    {
                        printf("quel est le nombre ?\n");
                        scanf("%d", &nombre2);
                        
                        if(nombre2 < Pj2){
                            printf("c'est Plus !\n");
                            nombredecoup2++;
                        }
                        else if (nombre2 > Pj2){
                            printf("C'est Moins !\n");
                            nombredecoup2++;
                        }
                        else {
                            printf("Bravo Vous avez trouvé\t Sans triché j'espère !\n");
                            nombredecoup2++;
                            printf("Vous avez trouver en %d coups\n\n", nombredecoup2);
                        }
                    }
                    
                }
                printf("Voulez vous rejouer ? ecrivez 1 pour oui et 0 pour non");
                scanf("%d ", &partie);
            
            }
            
                return 0;
        }
        

        Merci bcp de ta réponse!

        je n'est pas bien compris le problème que tu signal avec le \n

        voilà le code merci :)

        • Partager sur Facebook
        • Partager sur Twitter
          11 octobre 2019 à 11:27:10

          Salut,

          printf n'affiche pas directement ce que tu lui passe en argument. Il va le stocker dans un buffer et l'afficher uniquement à la fin du programme ou quand le buffer est plein. C'est pour optimiser, cherche pas à comprendre pourquoi c'est magique. C'est pas le cas de write ou de scanf apparament c'est pour ça que quand tu fait printf et scanf après bah le scanf s'affiche avant le printf. Cependant quand printf rencontre un '\n' il vide son buffer et du coup affiche ce qu'il contient même s'il n'est pas plein.

          Et dans ton cas le \n parceque pourquoi pas ne force pas printf à vider le buffer.

          utilise write plutôt que printf ou fais fflush après printf

          -
          Edité par DarkJambon 11 octobre 2019 à 11:35:27

          • Partager sur Facebook
          • Partager sur Twitter
            11 octobre 2019 à 12:48:10

            Alors, ligne 118 tu enlèves l'espace dans le scanf, et ça devrait mieux marcher !
            • Partager sur Facebook
            • Partager sur Twitter
              11 octobre 2019 à 13:12:45

              mince de mince merci bcp en effet rouloude ça marche bcp mieux.

              Merci aussi Darkjambon bien que je n'est pas bien compris tout ce que tu es dis car mon niveau est très certainement insuffisant !

              Sujet Résolu.

              • Partager sur Facebook
              • Partager sur Twitter

              Problème boucle

              × 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