Affichage du score
Indiquer au joueur s’il a bien répondu… et suivre sa progression en temps réel !

Objectifs de la séance
- Créer un composant React pour afficher le score
- Mettre à jour le score à chaque réponse
- Afficher immédiatement si la réponse est correcte ou non
- Afficher le score actuel sur l’interface, en haut de la page
Notions théoriques
Pourquoi afficher un score en direct ?
Un quiz est plus motivant si l’on voit :
- le nombre de bonnes réponses
- la progression au fil des questions
- une correction immédiate
Cela permet au joueur de :
- savoir où il en est
- se corriger en temps réel
- se challenger
Comment gérer un score dans React ?
On utilise un état (useState) pour stocker le score :
const [score, setScore] = useState(0);

À chaque bonne réponse, on incrémente ce score :
if (reponse.est_correcte) {
setScore(score + 1);
}
Où afficher le score ?
On crée un composant dédié, par exemple Score.tsx, pour l’afficher :
<Score actuel={score} total={questions.length} />
Ce composant affiche quelque chose comme :
Score : 3 / 10
Correction instantanée
On affiche immédiatement un message :
- ✅ Bonne réponse !
- ❌ Mauvaise réponse…
suivi par l’explication.
const message = estBonneReponse ? "✅ Bonne réponse !" : "❌ Mauvaise réponse.";
const explicationTexte = message + " " + (question.explication || "");
setExplication(explicationTexte);
setAfficherExplication(true);
Exemple de logique complète
function handleClick(reponse: any) {
if (!question || afficherExplication) return;
const estBonneReponse = reponse.est_correcte;
if (estBonneReponse) {
setScore(prev => {
const nouveauScore = prev + 1;
return nouveauScore;
});
}
const message = estBonneReponse ? "✅ Bonne réponse !" : "❌ Mauvaise réponse.";
const explicationTexte = message + " " + (question.explication || "");
setExplication(explicationTexte);
setAfficherExplication(true);
setTimeout(() => {
setAfficherExplication(false);
setExplication("");
setQuestionIndex((prev) => prev + 1);
}, 4000);
}
Quelques méthodes à connaître
| Méthode / outil | Utilité |
|---|---|
useState(0) | Stocker un compteur (score) |
setScore(score + 1) | Incrémenter le score |
props | Transmettre des données (ex : score) à un composant |
useEffect | Déclencher une action à un moment précis |
disabled={...} | Désactiver les boutons pendant la correction |