ça fait quelques heures que je planche sur la première activité du coup 'Apprenez à coder avec javascript'. ça a été plutôt rapide au début mais je bloque complètement sur la partie où le joueur a fait 6 essais et a perdu.
En effet, au bout de 6 essais infructueux le jeu s'arrête bien, la fenêtre demandant au joueur de rentrer un nombre disparaît, mais dans le console le message de fin de jeu ne s'affiche pas.
Tout le reste fonctionne je ne comprends vraiment pas quelle condition j'aurais pu oublier.
Est-ce que quelqu'un aurait une piste?
/*
Activité : jeu de devinette
*/
// NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
// COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
console.log("Bienvenue dans ce jeu de devinette !");
// Cette ligne génère aléatoirement un nombre entre 1 et 100
var solution = Math.floor(Math.random() * 100) + 1;
// Décommentez temporairement cette ligne pour mieux vérifier le programme
console.log("(La solution est " + solution + ")");
// TODO : complétez le programme
var nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
var essais = 1;
while (essais < 7) {
if (nombre == solution) {
console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)");
break;
} else if (nombre < solution) {
console.log(nombre + " est trop petit");
nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
essais++;
} else if (nombre > solution) {
console.log(nombre + " est trop grand");
nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
essais++;
} else {
console.log("Perdu... La solution était : " + solution);
}
}
Mets la fin de ton console.log la solution était ... après ton while quand le jeu est fini
while (essais < 7) {
if (nombre == solution) {
console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)");
return;
} else if (nombre < solution) {
console.log(nombre + " est trop petit");
nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
essais++;
} else if (nombre > solution) {
console.log(nombre + " est trop grand");
nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
essais++;
}
}
console.log('Perdu la solution est : ' + solution)
- Edité par Stelyus 14 janvier 2018 à 15:52:36
Si vous voulez me mp, venez sur Discord (username: Stelyus#8984)
Merci Stelyus. Par contre le problème quand je fais ça c'est que même quand je trouve la bonne réponse, il m'affiche le message de bonne réponse et du coup ensuite le message de mauvaise réponse
En complément, si j'utilise return comme tu as fait dans la console j'ai ce message d'erreur : Illegal return statement
/*
Activité : jeu de devinette
*/
// NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
// COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
console.log("Bienvenue dans ce jeu de devinette !");
// Cette ligne génère aléatoirement un nombre entre 1 et 100
var solution = Math.floor(Math.random() * 100) + 1;
// Décommentez temporairement cette ligne pour mieux vérifier le programme
console.log("(La solution est " + solution + ")");
// TODO : complétez le programme
var nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
var essais = 1, found = false;
while (essais < 7) {
if (nombre == solution) {
found = true;
break;
}
if (nombre < solution) {
console.log(nombre + " est trop petit");
}
else {
console.log(nombre + " est trop grand");
}
nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
essais++;
}
if (!found) {
console.log("Perdu... La solution était : " + solution);
}
else {
console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)");
}
/*
Activité : jeu de devinette
*/
// NE PAS MODIFIER OU SUPPRIMER LES LIGNES CI-DESSOUS
// COMPLETEZ LE PROGRAMME UNIQUEMENT APRES LE TODO
console.log("Bienvenue dans ce jeu de devinette !");
// Cette ligne génère aléatoirement un nombre entre 1 et 100
var solution = Math.floor(Math.random() * 100) + 1;
// Décommentez temporairement cette ligne pour mieux vérifier le programme
console.log("(La solution est " + solution + ")");
// TODO : complétez le programme
var nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
var essais = 0, found = false;
while (essais++ < 7) {
if (nombre == solution) {
found = true;
break;
}
nombre < solution ? console.log(nombre + " est trop petit") : console.log(nombre + " est trop grand");
nombre = Number(prompt("Entrez un nombre entre 1 et 100 :"));
}
found ? console.log("Bravo ! La solution est " + solution + "\n Vous avez trouvé en " + essais + " essai(s)"
: console.log("Perdu... La solution était : " + solution);
J'ai essayé de factoriser ton code, le but ici est de créer une variable found qu'on le mette a true si la solution est valide puis à la fin on verifie si found est à true pour afficher le bon console.log, la premiere version utilise des if else et l'autre des ternaires
- Edité par Stelyus 14 janvier 2018 à 16:28:05
Si vous voulez me mp, venez sur Discord (username: Stelyus#8984)
Merci à tous le 2. En rajoutant le if pour l'affichage du message lorsque l'on perd ça fonctionne parfaitement !
TP devinette -
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
J'ai essayé de factoriser ton code, le but ici est de créer une variable found qu'on le mette a true si la solution est valide puis à la fin on verifie si found est à true pour afficher le bon console.log, la premiere version utilise des if else et l'autre des ternaires