Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP devinette -

impossible d'afficher le message lorsque le joueur a perdu

Sujet résolu
    14 janvier 2018 à 15:42:42

    Bonjour à tous,

    ça fait quelques heures que je planche sur la première activité du coup 'Apprenez à coder avec javascript'. ça a été plutôt rapide au début mais je bloque complètement sur la partie où le joueur a fait 6 essais et a perdu.

    En effet, au bout de 6 essais infructueux le jeu s'arrête bien, la fenêtre demandant au joueur de rentrer un nombre disparaît, mais dans le console le message de fin de jeu ne s'affiche pas.

    Tout le reste fonctionne je ne comprends vraiment pas quelle condition j'aurais pu oublier.

    Est-ce que quelqu'un aurait une piste?

    /* 
    Activité : jeu de devinette
    */
    
    // NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
    // COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
    
    console.log("Bienvenue dans ce jeu de devinette !");
    
    // Cette ligne génère aléatoirement un nombre entre 1 et 100
    var solution = Math.floor(Math.random() * 100) + 1;
    
    // Décommentez temporairement cette ligne pour mieux vérifier le programme
    console.log("(La solution est " + solution + ")");
    
    // TODO : complétez le programme
    
    var nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
    
    var essais = 1;
    
    while (essais < 7) {
        if (nombre == solution) {
            console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)");
            break;
        } else if (nombre < solution) {
            console.log(nombre + " est trop petit");
            nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
            essais++;
        } else if (nombre > solution) {
            console.log(nombre + " est trop grand");
            nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
            essais++;
        } else {
            console.log("Perdu... La solution était : " + solution);
        }
    }



    • Partager sur Facebook
    • Partager sur Twitter
      14 janvier 2018 à 15:49:52

      Mets la fin de ton console.log la solution était ... après ton while quand le jeu est fini

      while (essais < 7) {
          if (nombre == solution) {
              console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)");
              return;
          } else if (nombre < solution) {
              console.log(nombre + " est trop petit");
              nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
              essais++;
          } else if (nombre > solution) {
              console.log(nombre + " est trop grand");
              nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
              essais++;
          }
      }
      
      console.log('Perdu la solution est : ' + solution)



      -
      Edité par Stelyus 14 janvier 2018 à 15:52:36

      • Partager sur Facebook
      • Partager sur Twitter
      Si vous voulez me mp, venez sur Discord (username: Stelyus#8984)
        14 janvier 2018 à 16:01:26

        Merci Stelyus. Par contre le problème quand je fais ça c'est que même quand je trouve la bonne réponse, il m'affiche le message de bonne réponse et du coup ensuite le message de mauvaise réponse 

        En complément, si j'utilise return comme tu as fait dans la console j'ai ce message d'erreur : Illegal return statement

        -
        Edité par Ciri 14 janvier 2018 à 16:03:52

        • Partager sur Facebook
        • Partager sur Twitter
          14 janvier 2018 à 16:21:32

          Le return serait valable dans une fonction. sinon il suffit de mettre la variable essai à 7 (après avoir affiché sa valeur).

          Quant au console.log final, il suffit de ne l'afficher que si essai est supérieur ou égal à 7 avec un if (7<=essais) devant.

          • Partager sur Facebook
          • Partager sur Twitter
            14 janvier 2018 à 16:24:36

            /*
            Activité : jeu de devinette
            */
             
            // NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
            // COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
             
            console.log("Bienvenue dans ce jeu de devinette !");
             
            // Cette ligne génère aléatoirement un nombre entre 1 et 100
            var solution = Math.floor(Math.random() * 100) + 1;
             
            // Décommentez temporairement cette ligne pour mieux vérifier le programme
            console.log("(La solution est " + solution + ")");
             
            // TODO : complétez le programme
             
            var nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
             
            var essais = 1, found = false;
             
            while (essais < 7) {
                if (nombre == solution) {
                    found = true;
                    break;
                }
            
                if (nombre < solution) {
                    console.log(nombre + " est trop petit");
                }
                else {
                    console.log(nombre + " est trop grand");
                }
            
                nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
                essais++;
            
            }
            
            if (!found) {
                console.log("Perdu... La solution était : " + solution);
            }
            
            else {
                console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)");
            }
            
            
            
            
            
            
            /*
            Activité : jeu de devinette
            */
             
            // NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
            // COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
             
            console.log("Bienvenue dans ce jeu de devinette !");
             
            // Cette ligne génère aléatoirement un nombre entre 1 et 100
            var solution = Math.floor(Math.random() * 100) + 1;
             
            // Décommentez temporairement cette ligne pour mieux vérifier le programme
            console.log("(La solution est " + solution + ")");
             
            // TODO : complétez le programme
             
            var nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
             
            var essais = 0, found = false;
             
            while (essais++ < 7) {
                if (nombre == solution) {
                    found = true;
                    break;
                }
            
                nombre < solution ? console.log(nombre + " est trop petit") : console.log(nombre + " est trop grand");
                nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
            }
            
            found ? console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)"
                  : console.log("Perdu... La solution était : " + solution);
            
            J'ai essayé de factoriser ton code, le but ici est de créer une variable found qu'on le mette a true si la solution est valide puis à la fin on verifie si found est à true pour afficher le bon console.log, la premiere version utilise des if else et l'autre des ternaires

            -
            Edité par Stelyus 14 janvier 2018 à 16:28:05

            • Partager sur Facebook
            • Partager sur Twitter
            Si vous voulez me mp, venez sur Discord (username: Stelyus#8984)
              14 janvier 2018 à 17:00:28

              Merci à tous le 2. En rajoutant le if pour l'affichage du message lorsque l'on perd ça fonctionne parfaitement !
              • Partager sur Facebook
              • Partager sur Twitter

              TP devinette -

              × 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