Annuaire › Code ouvert
Code publié par son auteur, en lecture seule. « Copier dans mon espace » crée un nouveau site à vous (non publié) que vous pouvez modifier librement.
js/main.js · 2.7 Ko
/* ============================================================
Fichier : js/main.js
Rôle : le CHEF D'ORCHESTRE. Il relie les trois autres couches :
données (data/questions.js), logique (Quiz), affichage (UI)
et sons (Sons). Il ne contient presque aucune règle : il
dit seulement « quand ceci arrive, fais cela ».
Dépend de : Quiz (js/quiz.js), UI (js/ui.js), Sons (js/sons.js).
Doit donc être chargé EN DERNIER.
------------------------------------------------------------
Schéma du flux :
clic de l'utilisateur -> UI -> (actions ci-dessous) -> Quiz
Quiz change son état -> notifie -> (abonnement ci-dessous) -> UI + Sons
============================================================ */
(function () {
"use strict";
/* ----------------------------------------------------------
1. DU QUIZ VERS L'ÉCRAN ET LES SONS
Chaque fois que le Quiz signale un événement, on redessine
l'écran, puis on joue le son qui correspond.
---------------------------------------------------------- */
Quiz.abonner(function (evenement, state) {
UI.afficher(evenement, state);
switch (evenement) {
case "question":
Sons.jouer("pop");
break;
case "reponse":
// Un son différent selon que la réponse est bonne ou non
Sons.jouer(state.correct ? "succes" : "erreur");
break;
case "fin":
// Fanfare si la moitié des réponses au moins sont bonnes
if (state.bonnes * 2 >= state.questions.length) { Sons.jouer("victoire"); }
break;
}
});
/* ----------------------------------------------------------
2. DE L'UTILISATEUR VERS LE QUIZ
UI nous donne ces fonctions à appeler quand l'utilisateur agit.
Les sons déclenchés ici le sont juste après un clic : c'est ce
qui les rend autorisés par le navigateur (règle anti-autoplay).
---------------------------------------------------------- */
UI.init({
surDemarrer: function (niveau) {
Sons.jouer("clic");
Quiz.demarrer(niveau);
},
surChoix: function (position) {
Quiz.repondre(position);
},
surSuivante: function () {
Quiz.suivante();
},
surAbandon: function () {
Sons.jouer("clic");
Quiz.retourAccueil();
},
surSon: function (actif) {
Sons.activer(actif);
if (actif) { Sons.jouer("clic"); } // petit retour sonore à l'activation
}
});
/* ----------------------------------------------------------
3. DÉMARRAGE : le Quiz charge les records et annonce l'accueil
---------------------------------------------------------- */
Quiz.init();
})();