Introduction
Je vous laisse découvrir en image la fabuleuse histoire du programme GUESS.
Soyez attentif aux noms des variables.
Ainsi, après la lecture de la vidéo, vous devriez être capable de décrire votre algorithme (en pseudo-code).
Il nous resterait donc à réaliser la partie implémentation en JS.
Mais, revenons une minute au code écrit en Python. Au passage, je vous rappelle que Python est un langage de haut niveau.
Code python
Python dispose d'une condition de type :
while (condition)
else:
Cette condition est très utile dans notre jeu, elle nous permet en effet de coder simplement la sortie du while :
while (guessCount < guessLimit):
.
else:
print ("You failed !") ..
Regardons les possibilités d'écriture offertes en JS.
Javascript
JS ne dispose pas d'une condition de type
while (condition)
else:
Rappels
Continue
🧠 Pourquoi continue est utile
evites un if...else inutile
le flux de traitement clair
plusieurs filtres peuvent s'enchaîner avec plusieurs continue
async function processLines(lines) {
for await (const line of lines) {
if (line.startsWith('#')) continue; // ignore les commentaires
console.log(`Traitement : ${line}`);
}
}
const lines = [
'# Ceci est un commentaire',
'Ligne 1',
'Ligne 2',
'# Autre commentaire',
'Ligne 3'
];
processLines(lines);
Cas du Break
async function* getLines() {
const data = [
"# Commentaire ignoré",
"Ligne utile 1",
"Ligne utile 2",
"# Autre commentaire",
"STOP",
"Ligne après STOP",
];
for (const line of data) {
await new Promise((resolve) => setTimeout(resolve, 100)); // simule un délai
yield line;
}
}
async function processUntilStop(lines) {
for await (const line of lines) {
if (line === "STOP") break;
if (line.startsWith("#")) continue;
console.log(`Traitement : ${line}`);
}
console.log("🔚 Fin du traitement.");
}
processUntilStop(getLines());
Améliorez le code suivant
const guess_limit = 3;
const secret_number = 3;
let guess_count = 0;
let guess = 1; // valeur initiale
while (guess_count < guess_limit) {
guess++; // simule un nouveau choix
guess_count++;
console.log(`Essai ${guess_count} : guess = ${guess}`);
if (guess === secret_number) {
console.log(`✅ You WIN in ${guess_count} guesses!`);
break; // quitte la boucle immédiatement
}
}
// Ce bloc s'exécute uniquement si la boucle n'a pas été interrompue par un break
if (guess_count === guess_limit && guess !== secret_number) {
console.log("❌ GAME OVER");
}
Attention ligne 20 : trop long.
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script type="module" src="guess.mjs"></script>
</head>
<body>
</body>
</html>
guess.mjs
const secretNumber = Math.floor(Math.random() * 10) + 1;
let attempts = 3;
while (attempts > 0) {
const guess = parseInt(
prompt(
`Guess a number between 1 and 10. You have ${attempts} attempt(s) left:`
),
10
);
if (guess === secretNumber) {
alert("🎉 Correct! You guessed the number!");
break;
} else if (guess < secretNumber) {
alert("Too low!");
} else if (guess > secretNumber) {
alert("Too high!");
} else {
alert("Invalid input. Please enter a number.");
}
attempts--;
} //while
if (attempts === 0) {
alert(`😢 Game over! The number was ${secretNumber}.`);
}