Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Création d'une Application Console de Jeu de Devinettes | Création d'Applications Console avec Node.js
Développement Backend avec Node.js et Express.js

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 plongeant dans la création d'un jeu captivant Devinez le Nombre. Ce jeu interactif mettra les joueurs au défi de faire preuve d'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 utilisateur ;
  • Enregistrement des résultats du jeu dans un fichier.

Défi

Imaginez-vous explorer une application qui promet excitation et mystère. Les joueurs sont invités à deviner un nombre choisi secrètement dans une plage prédéfinie. L'application fournit un retour instantané sur chaque proposition et tient un compte précis du nombre de tentatives effectuées.

Cet exemple pratique est l'occasion idéale d'affiner vos compétences dans la création d'applications CLI et de découvrir l'art de concevoir des programmes interactifs.

Application finale

Découvrez la magie en action ! Ci-dessous, un GIF illustre l'application palpitante Devinez le Nombre que vous allez réaliser :

Création d'une application console de jeu de devinettes

Deux chemins s'offrent à vous. Le premier vous invite à vous lancer dans l'aventure sans aide, tandis que le second propose un guide utile pour assurer votre réussite. Que vous plongiez avec audace ou suiviez le guide structuré, vous vivrez une expérience fascinante qui vous permettra de créer 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éparation de l'environnement en créant un nouveau répertoire et un fichier nommé app.js. Dans ce fichier, nous importons les modules nécessaires :

const readline = require('readline');
const fs = require('fs').promises;

Création d'une interface Readline :

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
Description du code
expand arrow
  • readline : fournit une interface pour lire les entrées et écrire les sorties dans la console ;

  • readline.createInterface({ ... }) : crée une instance de la classe readline.Interface. Elle accepte un objet avec les propriétés input et output ;

  • input: process.stdin : définit le flux d'entrée sur process.stdin, permettant au programme de lire les saisies utilisateur depuis le clavier ;

  • output: process.stdout : définit le flux de sortie sur process.stdout, permettant au programme d'afficher du texte dans la console.

Explication : Importation des modules nécessaires : readline pour l'interaction avec l'utilisateur et fs.promises pour les opérations sur les fichiers. Ensuite, création 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éfinir les 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;
Description du code
expand arrow
  • Math.random(): génère un nombre à virgule flottante aléatoire compris entre 0 (inclus) et 1 (exclus) ;

  • maxNumber - minNumber + 1: calcule l'étendue des nombres possibles. L'ajout de 1 garantit que minNumber et maxNumber sont inclus dans l'intervalle ;

  • Math.random() * (maxNumber - minNumber + 1): génère un nombre aléatoire compris entre 0 et l'étendue calculée ;

  • Math.floor(...): arrondit à l'entier inférieur le nombre à virgule flottante généré, garantissant que le résultat est un nombre entier dans l'intervalle souhaité ;

  • ... + minNumber: décale le nombre généré afin que l'intervalle commence à minNumber au lieu de 0.

Initialisation du compteur de tentatives :

let attempts = 0;

Explication : Définition de la plage de nombres (minNumber et maxNumber) dans laquelle 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 des fonctions utilitaires

Utilisation d'une fonction utilitaire pour une validation irréprochable :

function isValidGuess(guess) {
  return !isNaN(guess)
    && guess >= minNumber
    && guess <= maxNumber;
}
Description du code
expand arrow
  • !isNaN(guess) : vérifie si guess est un nombre valide. La fonction isNaN() retourne false pour les nombres valides, et l'opérateur ! inverse le résultat en true ;

  • guess >= minNumber : vérifie que guess est supérieur ou égal à minNumber, garantissant qu'il n'est pas en dessous de la plage autorisée ;

  • guess <= maxNumber : vérifie que guess est inférieur ou égal à maxNumber, garantissant qu'il n'est pas au-dessus de la plage autorisée ;

  • && : combine toutes les conditions à l'aide de l'opérateur logique AND. Chaque condition doit être true pour que l'expression entière soit évaluée à true.

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();
    }
  });
}
Description du code
expand arrow
  • rl.question(\Guess a number between ${minNumber} and ${maxNumber}: `, guess => { ... }): prompts the user to enter a number within the specified range. The user's input is passed to the callback function as the guess` ;

  • if (isValidGuess(guess)) { ... } : vérifie si la valeur saisie est une proposition valide à l'aide de la fonction isValidGuess() ;

  • attempts++; : incrémente le compteur attempts pour suivre le nombre de tentatives effectuées par le joueur ;

  • const guessNumber = parseInt(guess); : convertit la saisie de l'utilisateur d'une chaîne de caractères en entier à l'aide de parseInt() ;

  • if (guessNumber === secretNumber) { ... } : vérifie si la proposition du joueur correspond au nombre secret. Si c'est le cas, le jeu affiche un message de réussite, enregistre le résultat, ferme l'interface readline et termine la partie ;

  • else if (guessNumber < secretNumber) { ... } : informe le joueur que le nombre secret est plus grand et appelle à nouveau playGame() pour continuer la partie ;

  • else { ... } : informe le joueur que le nombre secret est plus petit et appelle à nouveau playGame() pour continuer la partie ;

  • else { ... } (après la vérification de validation) : gère les entrées invalides en demandant au joueur de saisir un nombre valide dans la plage autorisée, puis appelle à nouveau playGame().

Explication : La fonction playGame constitue la boucle principale du jeu. Elle utilise rl.question pour demander à l'utilisateur de deviner un nombre. Si la proposition est valide, la fonction vérifie si la réponse correspond au nombre secret. Sinon, elle fournit un retour à l'utilisateur et continue la boucle du jeu de manière récursive.

Étape 5 : Sauvegarder le résultat du jeu

Implémentation de la logique permettant d'enregistrer les réussites 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.');
  }
}
Description du code
expand arrow
  • async function saveGameResult(result) { ... } : définit une fonction asynchrone nommée saveGameResult() qui accepte un paramètre result et permet l'utilisation du mot-clé await dans le corps de la fonction ;

  • try { ... } catch (err) { ... } : gère les erreurs potentielles pouvant survenir lors de l'opération asynchrone sur le fichier ;

  • await fs.appendFile('game_results.txt', \${result}\n`) ;: appends the provided resultfollowed by a newline character to thegame_results.txtfile. Theawait` suspend l'exécution jusqu'à la réussite de l'opération sur le fichier ;

  • console.log('Game result saved.'); : affiche un message de confirmation lorsque le résultat du jeu est correctement écrit dans le fichier ;

  • console.log('Failed to save game result.'); : affiche un message d'erreur si l'opération échoue et qu'une exception est capturée par le bloc catch.

Explication : La fonction saveGameResult utilise fs.promises pour ajouter le résultat de la partie à 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.

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();
Description du code
expand arrow
  • Lignes 1-2 : importation du module natif readline et de l'API fs du module promises pour les opérations de fichiers asynchrones ;

  • Lignes 4-7 : création d'une interface readline nommée rl pour lire les entrées utilisateur et afficher la sortie dans la console ;

  • Lignes 9-10 : définition des valeurs minimale et maximale pour la plage de nombres à deviner ;

  • Lignes 12-13 : génération d'un nombre secret aléatoire dans la plage spécifiée à l'aide de Math.random() ;

  • Ligne 14 : initialisation du compteur attempts pour suivre le nombre d'essais effectués par le joueur ;

  • Lignes 16-18 : définition de la fonction isValidGuess() pour valider que la valeur saisie est un nombre dans la plage autorisée ;

  • Lignes 20-47 : définition de la fonction récursive playGame() qui :

    • invite le joueur à saisir une proposition ;
    • valide la valeur saisie ;
    • vérifie si la proposition correspond au nombre secret ;
    • fournit un retour si la proposition est trop élevée ou trop basse ;
    • poursuit le jeu en s'appelant à nouveau si nécessaire ;
    • enregistre le résultat et termine le jeu lorsque le bon nombre est trouvé ;
  • Lignes 49-56 : définition de la fonction asynchrone saveGameResult() qui enregistre le résultat de la partie dans le fichier game_results.txt et gère les erreurs potentielles ;

  • Ligne 58 : affichage d'un message de bienvenue au joueur ;

  • Ligne 59 : démarrage du jeu en appelant la fonction playGame().

Résumé

Ce programme crée un jeu de devinette de nombre. Le joueur tente de deviner un nombre généré aléatoirement dans une plage spécifiée. Le jeu fournit un retour après chaque proposition, compte le nombre d'essais et enregistre les résultats réussis dans un fichier texte à l'aide d'opérations de fichiers asynchrones.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 8

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

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 plongeant dans la création d'un jeu captivant Devinez le Nombre. Ce jeu interactif mettra les joueurs au défi de faire preuve d'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 utilisateur ;
  • Enregistrement des résultats du jeu dans un fichier.

Défi

Imaginez-vous explorer une application qui promet excitation et mystère. Les joueurs sont invités à deviner un nombre choisi secrètement dans une plage prédéfinie. L'application fournit un retour instantané sur chaque proposition et tient un compte précis du nombre de tentatives effectuées.

Cet exemple pratique est l'occasion idéale d'affiner vos compétences dans la création d'applications CLI et de découvrir l'art de concevoir des programmes interactifs.

Application finale

Découvrez la magie en action ! Ci-dessous, un GIF illustre l'application palpitante Devinez le Nombre que vous allez réaliser :

Création d'une application console de jeu de devinettes

Deux chemins s'offrent à vous. Le premier vous invite à vous lancer dans l'aventure sans aide, tandis que le second propose un guide utile pour assurer votre réussite. Que vous plongiez avec audace ou suiviez le guide structuré, vous vivrez une expérience fascinante qui vous permettra de créer 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éparation de l'environnement en créant un nouveau répertoire et un fichier nommé app.js. Dans ce fichier, nous importons les modules nécessaires :

const readline = require('readline');
const fs = require('fs').promises;

Création d'une interface Readline :

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
Description du code
expand arrow
  • readline : fournit une interface pour lire les entrées et écrire les sorties dans la console ;

  • readline.createInterface({ ... }) : crée une instance de la classe readline.Interface. Elle accepte un objet avec les propriétés input et output ;

  • input: process.stdin : définit le flux d'entrée sur process.stdin, permettant au programme de lire les saisies utilisateur depuis le clavier ;

  • output: process.stdout : définit le flux de sortie sur process.stdout, permettant au programme d'afficher du texte dans la console.

Explication : Importation des modules nécessaires : readline pour l'interaction avec l'utilisateur et fs.promises pour les opérations sur les fichiers. Ensuite, création 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éfinir les 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;
Description du code
expand arrow
  • Math.random(): génère un nombre à virgule flottante aléatoire compris entre 0 (inclus) et 1 (exclus) ;

  • maxNumber - minNumber + 1: calcule l'étendue des nombres possibles. L'ajout de 1 garantit que minNumber et maxNumber sont inclus dans l'intervalle ;

  • Math.random() * (maxNumber - minNumber + 1): génère un nombre aléatoire compris entre 0 et l'étendue calculée ;

  • Math.floor(...): arrondit à l'entier inférieur le nombre à virgule flottante généré, garantissant que le résultat est un nombre entier dans l'intervalle souhaité ;

  • ... + minNumber: décale le nombre généré afin que l'intervalle commence à minNumber au lieu de 0.

Initialisation du compteur de tentatives :

let attempts = 0;

Explication : Définition de la plage de nombres (minNumber et maxNumber) dans laquelle 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 des fonctions utilitaires

Utilisation d'une fonction utilitaire pour une validation irréprochable :

function isValidGuess(guess) {
  return !isNaN(guess)
    && guess >= minNumber
    && guess <= maxNumber;
}
Description du code
expand arrow
  • !isNaN(guess) : vérifie si guess est un nombre valide. La fonction isNaN() retourne false pour les nombres valides, et l'opérateur ! inverse le résultat en true ;

  • guess >= minNumber : vérifie que guess est supérieur ou égal à minNumber, garantissant qu'il n'est pas en dessous de la plage autorisée ;

  • guess <= maxNumber : vérifie que guess est inférieur ou égal à maxNumber, garantissant qu'il n'est pas au-dessus de la plage autorisée ;

  • && : combine toutes les conditions à l'aide de l'opérateur logique AND. Chaque condition doit être true pour que l'expression entière soit évaluée à true.

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();
    }
  });
}
Description du code
expand arrow
  • rl.question(\Guess a number between ${minNumber} and ${maxNumber}: `, guess => { ... }): prompts the user to enter a number within the specified range. The user's input is passed to the callback function as the guess` ;

  • if (isValidGuess(guess)) { ... } : vérifie si la valeur saisie est une proposition valide à l'aide de la fonction isValidGuess() ;

  • attempts++; : incrémente le compteur attempts pour suivre le nombre de tentatives effectuées par le joueur ;

  • const guessNumber = parseInt(guess); : convertit la saisie de l'utilisateur d'une chaîne de caractères en entier à l'aide de parseInt() ;

  • if (guessNumber === secretNumber) { ... } : vérifie si la proposition du joueur correspond au nombre secret. Si c'est le cas, le jeu affiche un message de réussite, enregistre le résultat, ferme l'interface readline et termine la partie ;

  • else if (guessNumber < secretNumber) { ... } : informe le joueur que le nombre secret est plus grand et appelle à nouveau playGame() pour continuer la partie ;

  • else { ... } : informe le joueur que le nombre secret est plus petit et appelle à nouveau playGame() pour continuer la partie ;

  • else { ... } (après la vérification de validation) : gère les entrées invalides en demandant au joueur de saisir un nombre valide dans la plage autorisée, puis appelle à nouveau playGame().

Explication : La fonction playGame constitue la boucle principale du jeu. Elle utilise rl.question pour demander à l'utilisateur de deviner un nombre. Si la proposition est valide, la fonction vérifie si la réponse correspond au nombre secret. Sinon, elle fournit un retour à l'utilisateur et continue la boucle du jeu de manière récursive.

Étape 5 : Sauvegarder le résultat du jeu

Implémentation de la logique permettant d'enregistrer les réussites 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.');
  }
}
Description du code
expand arrow
  • async function saveGameResult(result) { ... } : définit une fonction asynchrone nommée saveGameResult() qui accepte un paramètre result et permet l'utilisation du mot-clé await dans le corps de la fonction ;

  • try { ... } catch (err) { ... } : gère les erreurs potentielles pouvant survenir lors de l'opération asynchrone sur le fichier ;

  • await fs.appendFile('game_results.txt', \${result}\n`) ;: appends the provided resultfollowed by a newline character to thegame_results.txtfile. Theawait` suspend l'exécution jusqu'à la réussite de l'opération sur le fichier ;

  • console.log('Game result saved.'); : affiche un message de confirmation lorsque le résultat du jeu est correctement écrit dans le fichier ;

  • console.log('Failed to save game result.'); : affiche un message d'erreur si l'opération échoue et qu'une exception est capturée par le bloc catch.

Explication : La fonction saveGameResult utilise fs.promises pour ajouter le résultat de la partie à 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.

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();
Description du code
expand arrow
  • Lignes 1-2 : importation du module natif readline et de l'API fs du module promises pour les opérations de fichiers asynchrones ;

  • Lignes 4-7 : création d'une interface readline nommée rl pour lire les entrées utilisateur et afficher la sortie dans la console ;

  • Lignes 9-10 : définition des valeurs minimale et maximale pour la plage de nombres à deviner ;

  • Lignes 12-13 : génération d'un nombre secret aléatoire dans la plage spécifiée à l'aide de Math.random() ;

  • Ligne 14 : initialisation du compteur attempts pour suivre le nombre d'essais effectués par le joueur ;

  • Lignes 16-18 : définition de la fonction isValidGuess() pour valider que la valeur saisie est un nombre dans la plage autorisée ;

  • Lignes 20-47 : définition de la fonction récursive playGame() qui :

    • invite le joueur à saisir une proposition ;
    • valide la valeur saisie ;
    • vérifie si la proposition correspond au nombre secret ;
    • fournit un retour si la proposition est trop élevée ou trop basse ;
    • poursuit le jeu en s'appelant à nouveau si nécessaire ;
    • enregistre le résultat et termine le jeu lorsque le bon nombre est trouvé ;
  • Lignes 49-56 : définition de la fonction asynchrone saveGameResult() qui enregistre le résultat de la partie dans le fichier game_results.txt et gère les erreurs potentielles ;

  • Ligne 58 : affichage d'un message de bienvenue au joueur ;

  • Ligne 59 : démarrage du jeu en appelant la fonction playGame().

Résumé

Ce programme crée un jeu de devinette de nombre. Le joueur tente de deviner un nombre généré aléatoirement dans une plage spécifiée. Le jeu fournit un retour après chaque proposition, compte le nombre d'essais et enregistre les résultats réussis dans un fichier texte à l'aide d'opérations de fichiers asynchrones.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 8
some-alt