Le jeu du 21

Résolu
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   -  
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   -
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 :)
A voir également:

2 réponses

tidjool
 
Salut,

il faut que ta fonction has retourne une valeur :
ajoute return n; à la fin de cette fonction
0
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
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
0
tidjool
 
Mais c'est bizarre, ça se joue à une personne ton truc :-)
0
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
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;
}
}
0
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
Ah bon mais avec ma syntaxe ça a l'air de fonctionner.

C'est normal ?
0
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
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.
0
cocodu67... Messages postés 3178 Date d'inscription   Statut Membre Dernière intervention   145
 
Ah oui et c'est plus lisible ainsi je trouve.
0