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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 30 sept. 2018 à 20:36
wvile (rejouer  == true)



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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
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 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
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