From 7649dcdcedefca7d4e6f68263d9cc0c01c1df4d7 Mon Sep 17 00:00:00 2001 From: GauthierWebDev Date: Sat, 22 Mar 2025 14:32:43 +0100 Subject: [PATCH] init --- .gitignore | 1 + game.js | 27 ++++++++++++++++++++++++++ index.js | 11 +++++++++++ package.json | 11 +++++++++++ questions.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 105 insertions(+) create mode 100644 .gitignore create mode 100644 game.js create mode 100644 index.js create mode 100644 package.json create mode 100644 questions.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..40b878d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/game.js b/game.js new file mode 100644 index 0000000..ecddebe --- /dev/null +++ b/game.js @@ -0,0 +1,27 @@ +module.exports = class GuessingGame { + constructor(min, max) { + // TODO + } + + /** + * Génère un nombre aléatoire entre les valeurs min et max. + * + * @returns {number} - Retourne un nombre aléatoire. + */ + generateRandomNumber() { + // TODO + } + + /** + * Compare la valeur saisie par l'utilisateur + * au nombre à deviner. + * + * Retourne un booléen correspondant à la réussite de la devinette. + * + * @param {number} userNumber - Nombre saisi par l'utilisateur. + * @returns {boolean} - Retourne true si la devinette est correcte, sinon false. + */ + guess(userNumber) { + // TODO + } +}; diff --git a/index.js b/index.js new file mode 100644 index 0000000..c0e8e59 --- /dev/null +++ b/index.js @@ -0,0 +1,11 @@ +const { askNumber } = require("./questions"); +const GuessingGame = require("./game"); + +const MIN = 0; +const MAX = 5; + +async function app() { + // TODO +} + +app(); diff --git a/package.json b/package.json new file mode 100644 index 0000000..49f123b --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "name": "guessing-game", + "description": "Un simple jeu de devinette où l'utilisateur doit trouver un nombre mystère.", + "version": "1.0.0", + "main": "index.js", + "scripts": { + "start": "node index.js" + }, + "author": "GauthierWebDev", + "license": "ISC" +} diff --git a/questions.js b/questions.js new file mode 100644 index 0000000..770a896 --- /dev/null +++ b/questions.js @@ -0,0 +1,55 @@ +const readline = require("readline"); + +function createInterface() { + return readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); +} + +async function askNumber(min, max) { + // On attend que l'utilisateur entre un nombre + const number = await new Promise((resolve) => { + // On crée une interface pour lire la réponse + const interface = createInterface(); + + // On affiche un message à l'utilisateur + interface.question( + `Entrez un nombre entre ${min} et ${max} : `, + (answer) => { + // On convertit la réponse en nombre entier (base 10) + const number = parseInt(answer, 10); + + // Si la saisie n'est pas un nombre + if (isNaN(number)) { + console.log("Erreur : Vous devez entrer un nombre"); + + // On ferme l'interface + interface.close(); + + // On relance la saisie + return resolve(askNumber(min, max)); + } + + // On ferme l'interface + interface.close(); + + // On retourne le nombre + resolve(number); + } + ); + }); + + // Si le nombre est inférieur au minimum ou supérieur au maximum + if (number < min || number > max) { + console.log(`Erreur : Vous devez entrer un nombre entre ${min} et ${max}`); + + // On relance la saisie + return await askNumber(min, max); + } + + // On retourne le nombre + return number; +} + +module.exports = { askNumber };