Le jeu Pierre, feuille, ciseaux est un jeu classique à deux joueurs
Transcription
Le jeu Pierre, feuille, ciseaux est un jeu classique à deux joueurs
Le jeu Pierre, feuille, ciseaux est un jeu classique à deux joueurs. Chaque joueur choisit soit pierre, soit feuille, soit ciseaux. Les issues possibles sont: • La pierre détruit les ciseaux. • Les ciseaux coupent la feuille. • La feuille couvre la pierre. Notre code va diviser le jeu en 3 phases : a. L'utilisateur fait un choix b. L'ordinateur fait un choix c. Une fonction de comparaison détermine le gagnant. Le choix de l'utilisateur Nous commençons par demander à l'utilisateur quelle option il veut choisir. Nous utiliserons ensuite ce choix dans la fonction de comparaison pour déterminer le gagnant. Instructions 1. Déclarez une variable appelée choixUtilisateur. 2. Faites en sorte que la valeur contenue par la variable soit la réponse à la question posée à l'utilisateur : "Choisissez-vous pierre, feuille, ou ciseaux ?" var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); Choix ordi, partie 1 Terrible ! Maintenant, nous avons besoin que l'ordinateur fasse un choix. Le jeu ne sera drôle que si l'ordinateur choisit au hasard. Heureusement, JavaScript a quelque chose qui peut nous aider pour ça. Si nous déclarons une variable et lui donnons pour valeur Math.random(), cette variable aura pour valeur un nombre entre 0 et 1. Instructions 1. Sous votre code précédent, déclarez une variable appelée choixOrdi et donnez-lui pour valeur Math.random(). 2. Affichez choixOrdi pour pouvoir voir comment Math.random() fonctionne. Cette étape n'est pas utile pour le jeu - elle est simplement là pour apprendre ! var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); var choixOrdi = Math.random(); console.log(choixOrdi); Choix ordi, partie 2 Nous avons choixOrdi mais il vaut maintenant une valeur aléatoire entre 0 et 1. Nous devons trouver un moyen de traduire ce nombre aléatoire en un choix aléatoire entre pierre, feuille, ou ciseaux. Comment faire ?! 1. Si choixOrdi est entre 0 et 0.33, redéfinir choixOrdi comme étant égal à "pierre". 2. Si choixOrdi est entre 0.34 et 0.66, redéfinir choixOrdi comme étant égal à "feuille". 3. Si choixOrdi est entre 0.67 et 1, redéfinir choixOrdi comme étant égal à "ciseaux". Mais il y a trois possibilités ! Les if / else ne permettent de prendre en compte que deux possibilités. Que faire ? Nous devons utiliser if / else if / else. Regardez l'indice pour la totalité de la syntaxe. Vous allez rire tellement c'est simple. Instructions 1. Sous votre code existant, écrivez la déclaration if / else if / else. 2. Sous les blocs respectifs, changez la valeur de choixOrdi en fonction des règles énoncées plus haut. Rappelez-vous, vous NE devez PAS utiliser var pour changer la valeur d'une variable qui existe déjà. var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); var choixOrdi = Math.random(); if (choixOrdi<=0.33){ choixOrdi="pierre"; } else if (choixOrdi>=0.34 && choixOrdi<=0.66){ choixOrdi="feuille"; } else{ choixOrdi="ciseaux"; } Les deux choix sont les mêmes ! Et là, on va s'amuser ! Nous devons créer une fonction. Elle prendra deux paramètres (les deux choix) puis retournera le choix gagnant. En programmant un jeu comme celui-ci, vous devez d'abord définir toutes les issues possibles. L'une d'elles est que l'utilisateur et l'ordinateur aient fait le même choix. Instructions 1. Nous avons gardé le code de la section précédente, mais c'est un commentaire. Laissez-le là pour l'instant. 2. Sous le commentaire, déclarez une fonction appelée comparer. 3. Elle prend deux paramètres, choix1 et choix2. 4. Dans la fonction, écrire une déclaration if. if choix1 === choix2, alors return "Egalité !" /*var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); var choixOrdi = Math.random(); if (choixOrdi < 0.34) { choixOrdi = "pierre"; } else if(choixOrdi <= 0.67) { choixOrdi = "feuille"; } else { choixOrdi = "ciseaux"; } console.log("Ordinateur : " + choixOrdi);*/ var comparer = function(choix1, choix2){ if (choix1===choix2){ return "Egalité !"; } } Si choix1 est pierre... Vous vous en sortez bien ! Maintenant, nous devons considérer les autres scénarios. Divisons un peu le problème. Et si choix1 était "pierre" ? Si choix1 vaut "pierre", a. si choix2 === "ciseaux", alors "pierre" gagne. b. si choix2 === "feuille", alors "feuille" gagne. Comment structurer ceci ? C'est un peu différent de ce que nous avons vu jusqu'ici. Nous allons d'abord avoir une déclaration if. Puis le code dans la déclaration if sera... une autre déclaration if ! Instructions Codons le cadre de notre code précédent : 1. Dans la fonction comparer(), sous le code existant, écrivez un cas else if où la condition est choix1 === "pierre". 2. Dans ce cas else if, écrivez une déclaration if / else. Si (if) choix2 === "ciseaux", retournez (return) "pierre gagne". Sinon (else), retourner "feuille gagne". /*var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); var choixOrdi = Math.random(); if (choixOrdi < 0.34) { choixOrdi = "pierre"; } else if(choixOrdi <= 0.67) { choixOrdi = "feuille"; } else { choixOrdi = "ciseaux"; } console.log("Ordinateur : " + choixOrdi);*/ var comparer = function(choix1, choix2){ if (choix1===choix2){ return "Egalité !"; } else if (choix1==="pierre"){ if (choix2==="ciseaux"){ return "pierre gagne !"; } else{ return "feuille gagne !"; } } } Et si choix1 vaut feuille ? Et mainteant, si choix1 vaut "feuille" ? Sachant que choix1 vaut "feuille", a. si (if) choix2 === "pierre", alors "feuille" gagne. b. si (if) choix2 === "ciseaux", alors "ciseaux" gagne. Instructions 1. Dans la fonction comparer(), sous le code existant, écrivez un autre cas else if où la condition est choix1 === "feuille". 2. Dans ce cas else if, écrivez une déclaration if / else. Si (if) choix2 === "pierre", retournez "feuille gagne". Sinon (else), retourner "ciseaux gagnent". /*var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); var choixOrdi = Math.random(); if (choixOrdi < 0.34) { choixOrdi = "pierre"; } else if(choixOrdi <= 0.67) { choixOrdi = "feuille"; } else { choixOrdi = "ciseaux"; } console.log("Ordinateur : " + choixOrdi);*/ var comparer = function(choix1, choix2){ if (choix1===choix2){ return "Egalité !"; } else if (choix1==="pierre"){ if (choix2==="ciseaux"){ return "pierre gagne !"; } else{ return "feuille gagne !"; } } if (choix1===choix2){ return "Egalité !"; } else if (choix1==="feuille"){ if (choix2==="pierre"){ return "feuille gagne !"; } else{ return "ciseaux gagne !"; } } } Et si choix1 vaut ciseaux ? Enfin, et si choix1 valait "ciseaux" ? Sachant que choix1 vaut "ciseaux", a. si choix2 === "pierre", alors "pierre" gagne. b. si choix2 === "feuille", alors "ciseaux" gagnent. Instructions 1. Sous votre ancien code, utilisez la même structure que dans les deux exercices précédents et finissez votre fonction. 2. Nous avons besoin des variables choixUtilisateur et choixOrdi. "Décommentez" les premières lignes de code en supprimant /*, ligne 1, et */, ligne 9. Les variables sont maintenant actives et peuvent être appelées. 3. Appelez votre fonction et passez-lui choixUtilisateur et choixOrdi en arguments. 4. Cliquez sur Vérifier vos réponses, et votre jeu devrait fonctionner ! Félicitations ! /*var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); var choixOrdi = Math.random(); if (choixOrdi < 0.34) { choixOrdi = "pierre"; } else if(choixOrdi <= 0.67) { choixOrdi = "feuille"; } else { choixOrdi = "ciseaux"; } console.log("Ordinateur : " + choixOrdi);*/ var comparer = function(choix1, choix2){ if (choix1===choix2){ return "Egalité !"; } else if (choix1==="pierre"){ if (choix2==="ciseaux"){ return "pierre gagne !"; } else{ return "feuille gagne !"; } } if (choix1===choix2){ return "Egalité !"; } else if (choix1==="feuille"){ if (choix2==="pierre"){ return "feuille gagne !"; } else{ return "ciseaux gagne !"; } } if (choix1===choix2){ return "Egalité !"; } else if (choix1==="ciseaux"){ if (choix2==="feuille"){ return "ciseaux gagne !"; } else{ return "pierre gagne !"; } } } CODE : var choixUtilisateur = prompt("Choisissez-vous pierre, feuille, ou ciseaux ?"); var choixOrdi = Math.random(); if (choixOrdi < 0.34) { choixOrdi = "pierre"; } else if(choixOrdi <= 0.67) { choixOrdi = "feuille"; } else { choixOrdi = "ciseaux"; } console.log("Ordinateur : " + choixOrdi); var comparer = function(choix1, choix2){ if (choix1===choix2){ return "Egalité !"; } else if (choix1==="pierre"){ if (choix2==="ciseaux"){ return "pierre gagne !"; } else{ return "feuille gagne !"; } } if (choix1===choix2){ return "Egalité !"; } else if (choix1==="feuille"){ if (choix2==="pierre"){ return "feuille gagne !"; } else{ return "ciseaux gagne !"; } } if (choix1===choix2){ return "Egalité !"; } else if (choix1==="ciseaux"){ if (choix2==="feuille"){ return "ciseaux gagne !"; } else{ return "pierre gagne !"; } } } À vous de jouer en appliquant ce code à des champs de formulaires html ;)