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 ;)