Tout d'abord : Merci pour ce site qui est une mine d'or.
Je m'amuse à monter un quizz en JavaScript, mais la je bloque complétement.
Besoin de votre aide s'il vous plaît,
Comment faire pour faire une synthèse des questions et des réponses à la fin du quizz ?
Merci à vous !
Code : Tout sélectionner
class Question {
constructor(text, choices, answer) {
this.text = text;
this.choices = choices;
this.answer = answer;
}
isCorrectAnswer(choice) {
return this.answer === choice;
}
}
let questions = [
new Question("La Terre est-elle ronde ?", ["Oui", "Non"], "Oui"),
new Question("Le jeu de Belote fait-il 32 cartes ?", ["Oui", "Non"], "Oui")
];
console.log(questions);
class Quiz {
constructor(questions) {
this.score = 0;
this.questions = questions;
this.currentQuestionIndex = 0;
}
getCurrentQuestion() {
return this.questions[this.currentQuestionIndex];
}
guess(answer) {
if (this.getCurrentQuestion().isCorrectAnswer(answer)) {
this.score++;
}
this.currentQuestionIndex++;
}
hasEnded() {
return this.currentQuestionIndex >= this.questions.length;
}
}
// Regroup all functions relative to the App Display
const display = {
elementShown: function(id, text) {
let element = document.getElementById(id);
element.innerHTML = text;
},
endQuiz: function() {
endQuizHTML = `
<h1>Conformité Terminée !</h1>
<h1>Imprimez le Résulat</h1>
<h3> Votre score est de : ${quiz.score} / ${quiz.questions.length}</h3>`;
this.elementShown("quiz", endQuizHTML);
},
question: function() {
this.elementShown("question", quiz.getCurrentQuestion().text);
},
choices: function() {
let choices = quiz.getCurrentQuestion().choices;
guessHandler = (id, guess) => {
document.getElementById(id).onclick = function() {
quiz.guess(guess);
quizApp();
}
}
// display choices and handle guess
for(let i = 0; i < choices.length; i++) {
this.elementShown("choice" + i, choices[i]);
guessHandler("guess" + i, choices[i]);
}
},
progress: function() {
let currentQuestionNumber = quiz.currentQuestionIndex + 1;
this.elementShown("progress", "Question " + currentQuestionNumber + " sur " + quiz.questions.length);
},
};
// Game logic
quizApp = () => {
if (quiz.hasEnded()) {
display.endQuiz();
window.print();
} else {
display.question();
display.choices();
display.progress();
}
}
// Create Quiz
let quiz = new Quiz(questions);
quizApp();
console.log(quiz);