112 lines
2.8 KiB
JavaScript
112 lines
2.8 KiB
JavaScript
const readline = require('readline');
|
|
|
|
// interface pporu écriture et lecture
|
|
const rl = readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout
|
|
});
|
|
|
|
// tableau de devinettes
|
|
const devinettes = [
|
|
{
|
|
question: "Quelle est la capitale de la France ?",
|
|
reponse: "paris"
|
|
},
|
|
{
|
|
question: "Quel est le plus grand océan de la planète ?",
|
|
reponse: "pacifique"
|
|
},
|
|
{
|
|
question: "Combien de continents y a-t-il sur Terre ?",
|
|
reponse: "7"
|
|
},
|
|
{
|
|
question: "Quelle planète est connue comme la planète rouge ?",
|
|
reponse: "mars"
|
|
},
|
|
{
|
|
question: "Quel est l'animal le plus rapide du monde ?",
|
|
reponse: "guepard"
|
|
}
|
|
];
|
|
|
|
// variable pour le jeu
|
|
let devinetteActuelle = 0;
|
|
let score = 0;
|
|
let tentatives = 0;
|
|
|
|
// fonction pour rendre le jeu plus naturel
|
|
const afficherAvecDelai = (message, delai = 1000) => {
|
|
return new Promise(resolve => {
|
|
setTimeout(() => {
|
|
console.log(message);
|
|
resolve();
|
|
}, delai);
|
|
});
|
|
};
|
|
|
|
// démarre le jeu avec un message d'accueil
|
|
const demarrerJeu = async () => {
|
|
await afficherAvecDelai("Bienvenue au jeu de devinettes !");
|
|
await afficherAvecDelai("Répondez aux questions suivantes :", 500);
|
|
|
|
poserDevinette();
|
|
};
|
|
|
|
|
|
//prend en paramètre la réponse et la devinette
|
|
//re'utilise la fonction délai pour une interaction fluide
|
|
const verifierReponse = async (reponse, devinette) => {
|
|
const reponseNormalisee = reponse.trim().toLowerCase();
|
|
|
|
if (reponseNormalisee === devinette.reponse) {
|
|
await afficherAvecDelai("Bonne réponse !", 300);
|
|
score++;
|
|
devinetteActuelle++;
|
|
tentatives = 0;
|
|
poserDevinette();
|
|
} else {
|
|
tentatives++;
|
|
|
|
let message = "Incorrecte ";
|
|
if (tentatives === 1) {
|
|
message += "Réessayez !";
|
|
} else if (tentatives === 3) {
|
|
message += "Un dernier essai !";
|
|
} else {
|
|
message += `La bonne réponse était "${devinette.reponse}".`;
|
|
await afficherAvecDelai(message, 300);
|
|
tentatives = 0;
|
|
devinetteActuelle++;
|
|
poserDevinette();
|
|
return;
|
|
}
|
|
|
|
await afficherAvecDelai(message, 300);
|
|
poserDevinette();
|
|
}
|
|
};
|
|
|
|
// fonction qui gère pose les devinette, se termine qand la taille du tableau
|
|
// dépasse l'index (débute à 0)
|
|
const poserDevinette = () => {
|
|
if (devinettes.length > devinetteActuelle) {
|
|
const devinette = devinettes[devinetteActuelle];
|
|
|
|
rl.question(`${devinette.question} `, (reponse) => {
|
|
verifierReponse(reponse, devinette);
|
|
});
|
|
} else {
|
|
terminerJeu();
|
|
}
|
|
};
|
|
|
|
// fonction pour terminer le jeu
|
|
const terminerJeu = async () => {
|
|
await afficherAvecDelai("\n Bien joué ! Tu as terminé les deveinettes.", 500);
|
|
await afficherAvecDelai(`Voici ton score : ${score}/${devinettes.length}`, 500);
|
|
rl.close();
|
|
};
|
|
|
|
// démarrer le jeu
|
|
demarrerJeu(); |