Pierre Feuille Ciseaux
Résolu
Bonjour,
Je débute en programmation et j'ai entrepris de construire un petit jeu de «Pierre Feuille Ciseaux». J'ai beau me creuser la tête et fouiner un peu partout sur internet, je n'arrive pas à comprendre où est mon erreur dans le code suivant, et pourquoi, quoi qu'il advienne, il est toujours inscrit: «Vous avez gagné la partie».
Voici le code (Html/JavaScript)
HTML:
JavaScript
Merci infiniment
Je débute en programmation et j'ai entrepris de construire un petit jeu de «Pierre Feuille Ciseaux». J'ai beau me creuser la tête et fouiner un peu partout sur internet, je n'arrive pas à comprendre où est mon erreur dans le code suivant, et pourquoi, quoi qu'il advienne, il est toujours inscrit: «Vous avez gagné la partie».
Voici le code (Html/JavaScript)
HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>RochePapierCiseaux</title>
<script src="JS.js"></script>
<link rel="stylesheet" type="text/css" href="CSS.css" />
</head>
<body>
<center><h1>Roche Papier Ciseau</h1></center><br/>
<center>
Roche <input type="radio" id="roche" name='roche'/>Papier <input type="radio" id="papier" name='papier'/>Ciseau <input type="radio" id="ciseau" name='ciseau'/><br/>
<input type="text" id="message" /><br/>
<input type="button" id="bouton" value="Bataille"onclick="validation()"/><br/>
</center>
</body>
</html>
JavaScript
function validation(){
var message=document.getElementById("message");
var roche=document.getElementById("roche");
var papier=document.getElementById("papier");
var ciseau=document.getElementById("ciseau");
var chiffre= Math.floor(Math.random()*100+1);
if (chiffre <= 34) {
chiffre = "roche";
} else if(chiffre <= 67) {
chiffre = "papier";
} else {
chiffre = "ciseau";
}
if(roche.checked||papier.checked||ciseau.checked){
if(roche==chiffre){
message.value="Égalité";
}
else if(roche<chiffre){
message.value="Tu as gagné";
} else {
message.value="Tu as perdu";
}
if(papier==chiffre){
message.value="Égalité";
}
else if(papier<chiffre){
message.value="Tu as gagné";
} else {
message.value="Tu as perdu";
}
if(ciseau==chiffre){
message.value="Égalité";
}
else if(ciseau<chiffre){
message.value="Tu as gagné";
} else {
message.value="Tu as perdu";
}
}
}
Merci infiniment
2 réponses
-
Salut,
Tes conditions pour vérifier qui a gagné ne sont pas correctes.
if(roche==chiffre)
Ici la variable chiffre est une chaine de caractère égal à "papier", "roche" ou "ciseau", or la variable roche à un élément html (getElementById), la comparaison ne sera donc jamais vraie.
Tes conditions devraient plus ressembler à :if(roche.checked || papier.checked || ciseau.checked){ // si l'ordinateur a choisi roche if (chiffre == 'roche') { if (roche.checked) { // et que l'utilisateur a choisi roche message.value="Égalité"; } else if (papier.checked) { // et que l'utilisateur a choisi papier message.value="Tu as gagné"; } else if (ciseau.checked) { // et que l'utilisateur a choisi ciseau message.value="Tu as perdu"; } } // si l'ordinateur a choisi papier ... if (chiffre == 'papier') { if (papier.checked) { message.value="Égalité"; } else if (ciseau.checked) { message.value="Tu as gagné"; } else if (roche.checked) { message.value="Tu as perdu"; } } if (chiffre == 'ciseau') { if (ciseau.checked) { message.value="Égalité"; } else if (roche.checked) { message.value="Tu as gagné"; } else if (papier.checked) { message.value="Tu as perdu"; } } }
PS : Pour éviter que l'utilisateur puisse cocher plusieurs radio, il faudrait définir le même attribut name pour toutes les radio et leurs définir un attribut value unique pour les différencier.
Et au passage la balise <center> est obsolète, il faut utiliser le css avec margin: 0 auto; ou text-align: center; sur le parent.
Bonne journée