Pobleme pour recommencer une boucle d'un jeu

Résolu/Fermé
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018
- Modifié le 30 sept. 2018 à 20:04
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018
- 1 oct. 2018 à 11:45
Bonjour, je débute en Javascript et j'utilise Notepad++. Le problème que j'ai est sur le célèbre jeu Le Juste Prix (trouver un nombre mystère généré aléatoirement, grâce des informations).

voici mon programme et je vous explique mon problème à la suite :

<script>
 
 var nombreMystere = Math.floor(100*Math.random()+1);
 var nombre = prompt("Entrez un nombre entre 0 et 100");
 var tentatives = 0;
 var reponse;
 var rejouer = true;
 do{
  do{
   document.write(nombre);
   document.write("<br />");
   if(nombreMystere < nombre){
   document.write("Votre nombre est plus grand que le nombre mystère ");
   nombre = prompt("-");
   tentatives = tentatives + 1;
   document.write("<br />");
   }else if(nombreMystere > nombre){
   document.write("Votre nombre est plus petit que le nombre mystère ");
   nombre = prompt("+");
   tentatives = tentatives + 1;
   document.write("<br />");
   }else{
   tentatives = tentatives + 1;
   document.write(" Bravo !! Le nombre mystère était bien " + nombreMystere + ". Il vous a fallu "+ tentatives + " tentatives.");
   }
   document.write("<br />");
  }while (nombre != nombreMystere);
   alert(" Bravo !!");
   reponse = prompt("Voulez vous rejouer ?");
     if(reponse == "NON" || "Non" || "non"){
      alert("A Bientôt !");
      rejouer = true;
     }else if(reponse == "OUI" || "Oui" || "oui"){
      alert("C'est reparti !");
      rejouer = false;
     }
 }while(rejouer = true)
</script>


Le début du programme fonctionne, mais lorsque je repond "oui" ou "non" à la question "Voulez vous rejouer ?" le programme me répond "A bientôt !" puis ne fait que de me redemander si je veux rejouer et de me dire "Bravo !!". Il ne s'arrête jamais et ne prend pas en compte ma réponse. De plus il continue d'ajouter +1 a la variable tentatives.

Je ne sais pas si mes explications sont clair, merci de votre aide et bonne soirée !

4 réponses

jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
4 200
30 sept. 2018 à 20:00
if(reponse == "NON" || 
reponse ==      "Non" || 
reponse ==    "non")


0
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018

30 sept. 2018 à 20:30
Bonjour, je viens de corriger le programme et maintenant il m'affiche bien c'est " C'est reparti !!" lorsque j'entre la réponse "OUI" mais après il me dis sans arrêt : "Bravo !!" puis "Voulez vous recommencer ?"
merci
0
jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
4 200
Modifié le 30 sept. 2018 à 20:36
wvile (rejouer  == true)



Cordialement, 
Jordane                                                                 
0
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018

30 sept. 2018 à 20:49
Merci, ceci corrige une partie du problème. Maintenant ma boucle s'arrête lorsque je rentre "OUI", mais ne fait pas redémarrer le programme. Par contre quand je rentre la réponse "NON" le problème n'as pas bouger, il continue de m'indiquer "Bravo!!" puis "Voulez vous rejouer ?" sans arrêt.
0
jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
4 200
30 sept. 2018 à 21:51
Déjà...tu as inversé les valeurs de
rejouer = true; danston if
Ensuite...ben..tu ne rappelles pas la fonctiin qui lance le jeu...donc normal...
0
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018

30 sept. 2018 à 22:00
Ah oui en effet je n'avais pas vu cette erreur merci. Comment faire pour rappeler la fonction ?
0
jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
4 200
30 sept. 2018 à 22:28
Faut mettre ton code dans une fonction...puis l'appeler...tout simplement
0
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018

30 sept. 2018 à 22:36
Désolé, mais je ne sais pas faire ça, serais ce possible de me montrer ?
0
jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
4 200
1 oct. 2018 à 07:37

Var qqchose = new Function(){

  // ici ton code

}

//appel de la fonction
qqchose();



0
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018

Modifié le 1 oct. 2018 à 08:30
Ça ne fonctionne toujours pas, le programme n'est même pas exécutable.
<script>
 
 var nombreMystere = Math.floor(100*Math.random()+1);
 var nombre = prompt("Entrez un nombre entre 0 et 100");
 var tentatives = 0;
 var reponse;
 var rejouer = true;
 var boucle = new Function(){ // création de la fonction
  do{
   do{
    document.write("le nombre mystrere est " + nombreMystere);
    document.write("<br />")
    document.write(nombre);
    document.write("<br />");
    if(nombreMystere < nombre){
    document.write("Votre nombre est plus grand que le nombre mystère ");
    nombre = prompt("-");
    tentatives = tentatives + 1;
    document.write("<br />");
    }else if(nombreMystere > nombre){
    document.write("Votre nombre est plus petit que le nombre mystère ");
    nombre = prompt("+");
    tentatives = tentatives + 1;
    document.write("<br />");
    }else{
    tentatives = tentatives + 1;
    document.write(" Bravo !! Le nombre mystère était bien " + nombreMystere + ". Il vous a fallu "+ tentatives + " tentatives.");
    }
    document.write("<br />");
   }while (nombre != nombreMystere);
    alert(" Bravo !!");
    reponse = prompt("Voulez vous recommencer ?");
    if(reponse == "NON" || reponse == "Non" || reponse == "non"){
     alert("A Bientôt !");
     rejouer = false;
    }else if(reponse == "OUI" || reponse == "Oui" || reponse == "oui"){
     alert("C'est reparti !");
     rejouer = true;
     boucle(); // Je rappel la fonction
    }
  }
 }   
 }while(rejouer == true)
</script>


Même en déplacent l'appel de ma fonction ça ne fonctionne pas.
0
jordane45
Messages postés
35767
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
1 juillet 2022
4 200
1 oct. 2018 à 09:07
regarde donc tes ouvertures/fermetures d'acolades....
Ton "While" est en dehors de ta fonction ...
Tu regardes dans la console de ton navigateur au moins pour voir les érreurs JS ?????

Bon...

Voila une solution juste en organisant correctement tes boucles


do{

  var nombreMystere = Math.floor(100*Math.random()+1);
  var nombre = prompt("Entrez un nombre entre 0 et 100");
  var tentatives = 0;
  var reponse;
  var rejouer = true;
  do{
    document.write("<br />")
    document.write(nombre);
    document.write("<br />");
    if(nombreMystere < nombre){
      document.write("Votre nombre est plus grand que le nombre mystère ");
      nombre = prompt("-");
      tentatives = tentatives + 1;
      document.write("<br />");
    }else if(nombreMystere > nombre){
      document.write("Votre nombre est plus petit que le nombre mystère ");
      nombre = prompt("+");
      tentatives = tentatives + 1;
      document.write("<br />");
    }else{
      tentatives = tentatives + 1;
      document.write(" Bravo !! Le nombre mystère était bien " + nombreMystere + ". Il vous a fallu "+ tentatives + " tentatives.");
      alert(" Bravo !!");
      reponse = prompt("Voulez vous rejouer commencer ?");
      if(reponse == "NON" || reponse == "Non" || reponse == "non"){
        alert("A Bientôt !");
        rejouer = false;
      }else if(reponse == "OUI" || reponse == "Oui" || reponse == "oui"){
        alert("C'est reparti !");
        rejouer = true;
      }
    }
    document.write("<br />");
  }while (nombre != nombreMystere);
}while(rejouer == true);


Et une solution en utilisant la fonction :
 function jouer(){
  var nombreMystere = Math.floor(100*Math.random()+1);
  var nombre = prompt("Entrez un nombre entre 0 et 100");
  var tentatives = 0;
  var reponse;
  var rejouer = true;
  do{
    document.write("<br />")
    document.write(nombre);
    document.write("<br />");
    if(nombreMystere < nombre){
      document.write("Votre nombre est plus grand que le nombre mystère ");
      nombre = prompt("-");
      tentatives = tentatives + 1;
      document.write("<br />");
    }else if(nombreMystere > nombre){
      document.write("Votre nombre est plus petit que le nombre mystère ");
      nombre = prompt("+");
      tentatives = tentatives + 1;
      document.write("<br />");
    }else{
      tentatives = tentatives + 1;
      document.write(" Bravo !! Le nombre mystère était bien " + nombreMystere + ". Il vous a fallu "+ tentatives + " tentatives.");
     
    }
    document.write("<br />");
  }while (nombre != nombreMystere);
   alert(" Bravo !!");
   reponse = prompt("Voulez vous rejouer commencer ?");
      if(reponse == "NON" || reponse == "Non" || reponse == "non"){
        alert("A Bientôt !");
      }else if(reponse == "OUI" || reponse == "Oui" || reponse == "oui"){
        alert("C'est reparti !");
        jouer();
      }
}

jouer();
0
Lsnd
Messages postés
13
Date d'inscription
samedi 4 novembre 2017
Statut
Membre
Dernière intervention
2 octobre 2018

1 oct. 2018 à 11:45
Merci beaucoup il fonctionne enfin, désolé de vous avoir autant embêté.
Bonne journée !
0