Création d'une Application Console de Jeu de Devinettes
Dans ce chapitre, préparez-vous à perfectionner vos compétences en développement d'applications console en créant une application de jeu captivante 🎮 Devine le Nombre 🔢. Ce jeu interactif mettra les joueurs au défi d'exercer leur intuition en devinant un nombre généré aléatoirement dans une plage prédéfinie. Au fil du chapitre, nous explorerons des concepts fondamentaux tels que :
- 🎲 Génération de nombres aléatoires ;
- ✅ Validation des entrées ;
- 🤝 Interaction avec l'utilisateur ;
- 💾 Enregistrement des résultats du jeu dans un fichier.
🏆 Un défi vous attend
Imaginez-vous plonger dans une application qui promet excitation et mystère. Les joueurs sont invités à deviner un nombre choisi de manière mystérieuse dans une plage prédéfinie. L'application fournit un retour instantané à chaque tentative et tient un compte précis des essais effectués.
Cet exemple pratique est l'occasion d'affiner vos compétences dans la création d'applications CLI et de mettre en avant l'art de concevoir des programmes interactifs.
🚀 Application finale
Découvrez la magie en action ! Ci-dessous, un GIF illustre l'application palpitante Devine le Nombre que vous allez réaliser :
Création d'une application console de jeu de devinettes
Deux chemins s'offrent à vous. La première option vous invite à vous lancer sans aide, tandis que la seconde propose un guide utile pour assurer votre réussite. Que vous plongiez avec audace ou suiviez le guide structuré, une expérience fascinante vous attend, au terme de laquelle vous disposerez d'une application console fonctionnelle et captivante.
Plan directeur
- 👉 Étape 1 : Configuration et initialisations ;
- 👉 Étape 2 : Définition des paramètres du jeu ;
- 👉 Étape 3 : Définition des fonctions utilitaires ;
- 👉 Étape 4 : Logique du jeu ;
- 👉 Étape 5 : Sauvegarde du résultat du jeu ;
- 👉 Étape 6 : Lancement du jeu ;
- 🎉 Conclusion ;
- 🏁 Code complet de l'application.
Étape 1 : Configuration et initialisations
Préparer le canevas en créant un nouveau répertoire et un fichier nommé app.js
. Dans ce fichier, nous invoquons les modules nécessaires :
const readline = require('readline');
const fs = require('fs').promises;
Créer une interface Readline :
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Explication : Importation des modules nécessaires : readline
pour l'interaction avec l'utilisateur et fs.promises
pour les opérations sur les fichiers. Création ensuite d'une interface Readline
nommée rl
pour gérer les entrées et sorties.
Étape 2 : Définir les paramètres du jeu
Définition des nombres minimum et maximum :
const minNumber = 1;
const maxNumber = 100;
Génération du nombre secret :
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Initialiser le compteur de tentatives :
let attempts = 0;
Explication : Nous définissons l'intervalle de nombres (minNumber
et maxNumber
) dans lequel le nombre secret sera généré. Le nombre secret est généré aléatoirement à l'aide de Math.random()
et assigné à secretNumber
. La variable attempts
est initialisée pour suivre le nombre de tentatives de l'utilisateur.
Étape 3 : Définir les fonctions utilitaires
Fournir une fonction utilitaire pour une validation irréprochable :
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Explication : La fonction isValidGuess
vérifie si la proposition de l'utilisateur est un nombre valide compris dans la plage spécifiée (minNumber
à maxNumber
).
Étape 4 : Logique du jeu
Les mécanismes principaux du jeu via la fonction playGame
:
function playGame() {
rl.question(`Guess a number between ${minNumber} and ${maxNumber}: `, guess => {
if (isValidGuess(guess)) {
attempts++;
const guessNumber = parseInt(guess);
if (guessNumber === secretNumber) {
console.log(`Congratulations! You guessed the number in ${attempts} attempts.`);
saveGameResult(`Player won in ${attempts} attempts.`);
rl.close();
} else if (guessNumber < secretNumber) {
console.log('Try higher.');
playGame();
} else {
console.log('Try lower.');
playGame();
}
} else {
console.log('Please enter a valid number within the specified range.');
playGame();
}
});
}
Explication : La fonction playGame
constitue la boucle principale du jeu. Elle utilise rl.question
pour demander une proposition à l'utilisateur. Si la proposition est valide, la fonction vérifie si elle correspond au nombre secret. Sinon, elle fournit un retour à l'utilisateur et poursuit la boucle du jeu de manière récursive.
Étape 5 : Enregistrer le résultat du jeu
Implémenter la logique d'enregistrement des performances de l'utilisateur dans le fichier game_results.txt
.
async function saveGameResult(result) {
try {
await fs.appendFile('game_results.txt', `${result}\n`);
console.log('Game result saved.');
} catch (err) {
console.log('Failed to save game result.');
}
}
Explication : La fonction saveGameResult
utilise fs.promises
pour ajouter le résultat du jeu à un fichier nommé game_results.txt
. Elle fournit un retour sur le succès ou l'échec de l'enregistrement du résultat.
Étape 6 : Démarrer le jeu
Créer le message de bienvenue et lancer le jeu :
console.log('Welcome to the Guess the Number game!');
playGame();
Explication : Un message de bienvenue est affiché et la boucle du jeu commence en appelant la fonction playGame
.
🎉 Conclusion : Tour d'honneur
En développant l'application Devine le nombre, vous avez acquis une expérience précieuse dans la conception d'applications console interactives et engageantes. Cet exemple met en avant la combinaison de la saisie utilisateur, de la génération de nombres aléatoires, de la validation et de la manipulation de fichiers, aboutissant à une expérience de jeu captivante.
👨💻 Code complet de l'application
const readline = require("readline");
const fs = require("fs").promises;
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const minNumber = 1;
const maxNumber = 100;
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
let attempts = 0;
function isValidGuess(guess) {
return !isNaN(guess) && guess >= minNumber && guess <= maxNumber;
}
function playGame() {
rl.question(
`Guess a number between ${minNumber} and ${maxNumber}: `,
(guess) => {
if (isValidGuess(guess)) {
attempts++;
const guessNumber = parseInt(guess);
if (guessNumber === secretNumber) {
console.log(
`Congratulations! You guessed the number in ${attempts} attempts.`
);
saveGameResult(`Player won in ${attempts} attempts.`);
rl.close();
} else if (guessNumber < secretNumber) {
console.log("Try higher.");
playGame();
} else {
console.log("Try lower.");
playGame();
}
} else {
console.log("Please enter a valid number within the specified range.");
playGame();
}
}
);
}
async function saveGameResult(result) {
try {
await fs.appendFile("game_results.txt", `${result}\n`);
console.log("Game result saved.");
} catch (err) {
console.log("Failed to save game result.");
}
}
console.log("Welcome to the Guess the Number game!");
playGame();
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain how the recursive game loop works in the playGame function?
What happens if the user enters an invalid input?
How does the game save the results to the file?
Awesome!
Completion rate improved to 2.56
Création d'une Application Console de Jeu de Devinettes
Glissez pour afficher le menu
Dans ce chapitre, préparez-vous à perfectionner vos compétences en développement d'applications console en créant une application de jeu captivante 🎮 Devine le Nombre 🔢. Ce jeu interactif mettra les joueurs au défi d'exercer leur intuition en devinant un nombre généré aléatoirement dans une plage prédéfinie. Au fil du chapitre, nous explorerons des concepts fondamentaux tels que :
- 🎲 Génération de nombres aléatoires ;
- ✅ Validation des entrées ;
- 🤝 Interaction avec l'utilisateur ;
- 💾 Enregistrement des résultats du jeu dans un fichier.
🏆 Un défi vous attend
Imaginez-vous plonger dans une application qui promet excitation et mystère. Les joueurs sont invités à deviner un nombre choisi de manière mystérieuse dans une plage prédéfinie. L'application fournit un retour instantané à chaque tentative et tient un compte précis des essais effectués.
Cet exemple pratique est l'occasion d'affiner vos compétences dans la création d'applications CLI et de mettre en avant l'art de concevoir des programmes interactifs.
🚀 Application finale
Découvrez la magie en action ! Ci-dessous, un GIF illustre l'application palpitante Devine le Nombre que vous allez réaliser :
Création d'une application console de jeu de devinettes
Deux chemins s'offrent à vous. La première option vous invite à vous lancer sans aide, tandis que la seconde propose un guide utile pour assurer votre réussite. Que vous plongiez avec audace ou suiviez le guide structuré, une expérience fascinante vous attend, au terme de laquelle vous disposerez d'une application console fonctionnelle et captivante.
Plan directeur
- 👉 Étape 1 : Configuration et initialisations ;
- 👉 Étape 2 : Définition des paramètres du jeu ;
- 👉 Étape 3 : Définition des fonctions utilitaires ;
- 👉 Étape 4 : Logique du jeu ;
- 👉 Étape 5 : Sauvegarde du résultat du jeu ;
- 👉 Étape 6 : Lancement du jeu ;
- 🎉 Conclusion ;
- 🏁 Code complet de l'application.
Étape 1 : Configuration et initialisations
Préparer le canevas en créant un nouveau répertoire et un fichier nommé app.js
. Dans ce fichier, nous invoquons les modules nécessaires :
const readline = require('readline');
const fs = require('fs').promises;
Créer une interface Readline :
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
Explication : Importation des modules nécessaires : readline
pour l'interaction avec l'utilisateur et fs.promises
pour les opérations sur les fichiers. Création ensuite d'une interface Readline
nommée rl
pour gérer les entrées et sorties.
Étape 2 : Définir les paramètres du jeu
Définition des nombres minimum et maximum :
const minNumber = 1;
const maxNumber = 100;
Génération du nombre secret :
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
Initialiser le compteur de tentatives :
let attempts = 0;
Explication : Nous définissons l'intervalle de nombres (minNumber
et maxNumber
) dans lequel le nombre secret sera généré. Le nombre secret est généré aléatoirement à l'aide de Math.random()
et assigné à secretNumber
. La variable attempts
est initialisée pour suivre le nombre de tentatives de l'utilisateur.
Étape 3 : Définir les fonctions utilitaires
Fournir une fonction utilitaire pour une validation irréprochable :
function isValidGuess(guess) {
return !isNaN(guess)
&& guess >= minNumber
&& guess <= maxNumber;
}
Explication : La fonction isValidGuess
vérifie si la proposition de l'utilisateur est un nombre valide compris dans la plage spécifiée (minNumber
à maxNumber
).
Étape 4 : Logique du jeu
Les mécanismes principaux du jeu via la fonction playGame
:
function playGame() {
rl.question(`Guess a number between ${minNumber} and ${maxNumber}: `, guess => {
if (isValidGuess(guess)) {
attempts++;
const guessNumber = parseInt(guess);
if (guessNumber === secretNumber) {
console.log(`Congratulations! You guessed the number in ${attempts} attempts.`);
saveGameResult(`Player won in ${attempts} attempts.`);
rl.close();
} else if (guessNumber < secretNumber) {
console.log('Try higher.');
playGame();
} else {
console.log('Try lower.');
playGame();
}
} else {
console.log('Please enter a valid number within the specified range.');
playGame();
}
});
}
Explication : La fonction playGame
constitue la boucle principale du jeu. Elle utilise rl.question
pour demander une proposition à l'utilisateur. Si la proposition est valide, la fonction vérifie si elle correspond au nombre secret. Sinon, elle fournit un retour à l'utilisateur et poursuit la boucle du jeu de manière récursive.
Étape 5 : Enregistrer le résultat du jeu
Implémenter la logique d'enregistrement des performances de l'utilisateur dans le fichier game_results.txt
.
async function saveGameResult(result) {
try {
await fs.appendFile('game_results.txt', `${result}\n`);
console.log('Game result saved.');
} catch (err) {
console.log('Failed to save game result.');
}
}
Explication : La fonction saveGameResult
utilise fs.promises
pour ajouter le résultat du jeu à un fichier nommé game_results.txt
. Elle fournit un retour sur le succès ou l'échec de l'enregistrement du résultat.
Étape 6 : Démarrer le jeu
Créer le message de bienvenue et lancer le jeu :
console.log('Welcome to the Guess the Number game!');
playGame();
Explication : Un message de bienvenue est affiché et la boucle du jeu commence en appelant la fonction playGame
.
🎉 Conclusion : Tour d'honneur
En développant l'application Devine le nombre, vous avez acquis une expérience précieuse dans la conception d'applications console interactives et engageantes. Cet exemple met en avant la combinaison de la saisie utilisateur, de la génération de nombres aléatoires, de la validation et de la manipulation de fichiers, aboutissant à une expérience de jeu captivante.
👨💻 Code complet de l'application
const readline = require("readline");
const fs = require("fs").promises;
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const minNumber = 1;
const maxNumber = 100;
const secretNumber =
Math.floor(Math.random() * (maxNumber - minNumber + 1)) + minNumber;
let attempts = 0;
function isValidGuess(guess) {
return !isNaN(guess) && guess >= minNumber && guess <= maxNumber;
}
function playGame() {
rl.question(
`Guess a number between ${minNumber} and ${maxNumber}: `,
(guess) => {
if (isValidGuess(guess)) {
attempts++;
const guessNumber = parseInt(guess);
if (guessNumber === secretNumber) {
console.log(
`Congratulations! You guessed the number in ${attempts} attempts.`
);
saveGameResult(`Player won in ${attempts} attempts.`);
rl.close();
} else if (guessNumber < secretNumber) {
console.log("Try higher.");
playGame();
} else {
console.log("Try lower.");
playGame();
}
} else {
console.log("Please enter a valid number within the specified range.");
playGame();
}
}
);
}
async function saveGameResult(result) {
try {
await fs.appendFile("game_results.txt", `${result}\n`);
console.log("Game result saved.");
} catch (err) {
console.log("Failed to save game result.");
}
}
console.log("Welcome to the Guess the Number game!");
playGame();
Merci pour vos commentaires !