Pobleme pour recommencer une boucle d'un jeu

Résolu
Lsnd Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
Lsnd Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
if(reponse == "NON" || 
reponse ==      "Non" || 
reponse ==    "non")


0
Lsnd Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
wvile (rejouer  == true)



0
Lsnd Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
Ah oui en effet je n'avais pas vu cette erreur merci. Comment faire pour rappeler la fonction ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Faut mettre ton code dans une fonction...puis l'appeler...tout simplement
0
Lsnd Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Désolé, mais je ne sais pas faire ça, serais ce possible de me montrer ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Var qqchose = new Function(){

  // ici ton code

}

//appel de la fonction
qqchose();



0
Lsnd Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Ç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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention  
 
Merci beaucoup il fonctionne enfin, désolé de vous avoir autant embêté.
Bonne journée !
0