Le jeu du 21

Résolu
Bonjour,

Je dois faire le jeu du 21, c'est à dire une simulation de lancés de dés entre 2 joueurs et le premier qui dépasse 21 points a gagné.

Voici mon code :

<SCRIPT LANGUAGE="JavaScript">
function has() 
{ 
n = Math.floor ( Math.random() * 6 ); 
} 

function jeu()
{

var scoreA=0;
var scoreB=0;
var icpt;
for(icpt=0; icpt<21; icpt++)
{
scoreA=scoreA+has();
scoreB=scoreB+has();
if(scoreA>=21||scoreB>=21)
{
if(scoreA>=21)
alert("Le joueur A a gagné");
else
alert("Le joueur B a gagné");
}
}

}
</SCRIPT>


La fonction jeu() s'exécute avec un bouton mais puisque ça fonctionne car j'ai testé en mettant alert("o"); juste avant la boucle for et l'alerte est apparu lorsque j'ai cliqué sur le bouton, je n'ai mis que le code JavaScript.

Pour moi ce code est juste mais je pense que l'erreur est toute bête.
Est ce que quelqu'un la voit ?

Merci beaucoup :)

2 réponses

  1. Salut,

    il faut que ta fonction has retourne une valeur :
    ajoute return n; à la fin de cette fonction
    1. Merci tidjool :)

      Puré ça se voit que j'ai pas programmé pendant toutes les vacances ... c'est une erreur de débutant ça ...
      J'ai également rajouté break; après chaque alert après qu'elle ne s'affiche pas infiniment.

      Pour ceux que ça intéresse, voici le code en entier :

      function has() 
      { 
      n = Math.floor ( Math.random() * 6 ); 
      return n;
      } 
      
      function jeu()
      {
      
      var scoreA=0;
      var scoreB=0;
      var nombre=0;
      
      for(var icpt=0; icpt<21; icpt++)
      {
      nombre = has();
      scoreA=scoreA+nombre;
      scoreB=scoreB+nombre;
      if(scoreA>=21||scoreB>=21)
      {
      if(scoreA>=21)
      {
      alert("Le joueur A a gagné");
      break;
      }
      else
      {
      alert("Le joueur B a gagné");
      break;
      }
      }
      }
      
      }
      </SCRIPT>
      
      <input type="button" value="Jouer" onclick="jeu();">
      
      <A HREF="jeu_du_21.html">Autre partie...</A> 
      
      
      </body>
      </html>


      C'est pas du codage d'informaticien mais bon pour un exo ça suffit largement.

      Bonne soirée :)
      Et peut être à bientôt
      1. Mais c'est bizarre, ça se joue à une personne ton truc :-)
      2. for(var icpt=0; icpt<21; icpt++)
        {
        nombre = has();
        scoreA=scoreA+nombre;
        scoreB=scoreB+nombre;
        if(scoreA>=21||scoreB>=21)
        {
        if(scoreA>=21)
        {
        alert("Le joueur A a gagné");
        }
        else
        {
        alert("Le joueur B a gagné");
        }
        break;
        }
        }
      3. Ah bon mais avec ma syntaxe ça a l'air de fonctionner.

        C'est normal ?
      4. c'est normal que ça fonctionne :) ça évite juste de le répéter, c'est plus "correcte". Puisque dans tout les cas, si score a ou b et >= 21 il faut stopper la boucle.
      5. Ah oui et c'est plus lisible ainsi je trouve.