nodejs-guessing-game/questions.js
2025-03-22 14:32:43 +01:00

56 lines
1.4 KiB
JavaScript

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 };