Probleme dans le codage en JS [Résolu]

Signaler
Messages postés
5
Date d'inscription
lundi 27 juillet 2020
Statut
Membre
Dernière intervention
7 août 2020
-
Messages postés
5
Date d'inscription
lundi 27 juillet 2020
Statut
Membre
Dernière intervention
7 août 2020
-
Bonsoir/Bonjour à tout le monde.
Je suis débutant et c'est mon premier programme en JS. Mon programme consiste a donner d'une manière aléatoire des opérations de (+ ou - ou x ou /) afin d'améliorer le calcule mentale de l'utilisateur.
Voici mon programme et merci d'avance :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
     <head>
          <title>TD : Jeu du "plus ou moins"</title>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

          <script type="text/javascript">
          <!--

          function nb1_aleatoire(min, max)
          {
               var nb1 = min + (max-min+1)*Math.random();
               return Math.floor(nb);
          }
    function nb2_aleatoire(min, max)
          {
               var nb2 = min + (max-min+1)*Math.random();
               return Math.floor(nb);
          }

          function PoM_manche(min, max)
          {
               var nb1 = nb1_aleatoire(min, max);        // nb1 a deviner
               var nb2 = nb2_aleatoire(min, max);        // nb2 a deviner
      var nb3 = nb1 + nb2;
      var cps = 0;    // nb de coups pour la trouver
               var saisie ;     // nb tape par le joueur
               var msg = "l'operation a calculer est\n" +nb1+ '+' +nb2+ '=' +nb3+;

               do
               {
                    saisie = prompt(msg);

                    // si "Annuler"
                    if(saisie == null)
                         return 0;

                    cpt++;
                    if(saisie > nb3)
                         msg = "C'est moins";
                    else
                         msg = "C'est plus";
               }
               while(saisie != nb3);

               return cpt;
          }

          function PoM_partie(min, max)
          {
               var cpt = 0;    // nb de manches jouees
               var best_score = 0;     // meilleur score
               var score;      // score de la partie en cours
               var continuer;

               do
               {
                    score = PoM_manche(min, max);   // joue la manche
                    if(score)
                    {
                         cpt++;
                         if(score < best_score || best_score == 0)
                              best_score = score;
                         continuer = confirm("Bravo, tu as gagne en " + score + " coups.\n Veux-tu rejouer ?");
                    }
                    else
                         continuer = false;
               }
               while(continuer);

               alert("Tu as joue " + cpt + " manche(s).\n Ton meilleur score est de " + best_score + " coups.");
               return best_score;
          }

          //-->
          </script>

     </head>
     <body>

          <p>
               <a href="#" onclick="javascript:PoM_partie(1,63)">Niveau Zér0</a><br />
               <a href="#" onclick="javascript:PoM_partie(1,100)">Niveau Normal</a><br />
               <a href="#" onclick="javascript:PoM_partie(0,250)">Niveau Geek</a>
          </p>

     </body>
</html>


EDIT : Ajout des balises de code

3 réponses

Messages postés
30283
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
3 012
Bonjour,

J'ai édité ton message pour y mettre les balises de code.
A l'avenir, merci de le faire toi même.
Explications à lire ici :

Ensuite :
Tu postes ton code... sans nous indiquer le souci rencontré......!!!

Et donc, si on prend la peine de tester ton code, on voit qu'il ne fonctionne pas..
En ouvrant la console de ton navigateur lorsque tu charges ta page, tu aurai du voir un message d'erreur qui indique un souci à la ligne
var msg = "l'operation a calculer est\n" +nb1+ '+' +nb2+ '=' +nb3+;

Tu as, en effet, un + en trop à la fin.

Une fois ce souci corrigé et les <!-- //--> retiré de ton JS
on voir qu'il met une nouvelle erreur dans la console lorsqu'on clique sur un de tes menu
Il indique que la variable nb n'existe pas
 return Math.floor(nb);

Normal.. vu que tu as mis
 var nb1 = min + (max-min+1)*Math.random();

et donc.. c'est nb1 et non nb que tu aurais du utiliser...

Même chose avec ton autre fonction... nb2

function nb1_aleatoire(min, max)
{
    var nb1 = min + (max-min+1)*Math.random();
   return Math.floor(nb1);
}
function nb2_aleatoire(min, max)
{
     var nb2 = min + (max-min+1)*Math.random();
     return Math.floor(nb2);
}


Il y a ensuite un nouvelle erreur... la variable cpt qui n'est pas initialisée...

Je te laisse poursuivre par toi même.
Pense juste à ouvrir la console Javascript de ton navigateur puis à recharger la page (en vidant le cache de celle ci ) à chaque fois que tu fais une modification dans ton code afin de voir les éventuelles erreurs dans ton code...



Messages postés
5
Date d'inscription
lundi 27 juillet 2020
Statut
Membre
Dernière intervention
7 août 2020

Bonjour

grâce à vous mon programme marche, je voulais faire quelque amélioration afin qu'il soit meilleur et pour cela je voulais mettre une boucle qui répète certain nombre d' operations avant d'afficher le score.

j'ai placé la fonction "for" dans le programme mais je ne suis pas au point la dessus.

est ce que vous pouvez m'aider SVP et merci d'avance ?.
Messages postés
30283
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
3 012
Ouvre une nouvelle discussion propre à cette nouvelle question et n'oublie pas de poster ton code en utilisant les balises de code.
Messages postés
5
Date d'inscription
lundi 27 juillet 2020
Statut
Membre
Dernière intervention
7 août 2020

d'accord