burger-quizz/scripts/question_manager.js

136 lines
3.7 KiB
JavaScript

/*Fonction scripts gérant les questions
*Est appelée et chargé uniquement dans le fichier run de view/game
*
**/
var auto_next_time = 30; //Temps de passage automatique à la fonction suivante en secondes
var save_next_time = 0; //Temps sauvegardé, variable inter-fonctions
var num = 0; //Numéro de la question en cours
/*
* Affiche la question suivante
* Args : identifiant de l'appelant
*/
function shownext(args)
{
//On réinitialise le temps de l'autonext
save_next_time = 0;
//On parse le numéro de la question
var num_ori = args.toString().substring(args.toString().indexOf("q", 0) + 1, args.toString().indexOf("a", 0));
//Sauvegarde du numéro de la question
num = num_ori;
//On parse la réponse
var rep = args.toString().substring(args.toString().indexOf("a", 0) + 1, args.toString().length);
//Si la réponse est null, le joueur n'a pas répondu
//Par défaut, c'est le code d'une mauvaise réponse => -1
if(rep == null)
{
rep = -1;
}
//On sauvegarde la réponse dans le champ associé
document.getElementById("saveq" + num).value = rep;
num++;
//On met à jour les attribut des boutons
document.getElementById("form_q_b0").setAttribute("onclick", "javascript:shownext('q" + num + "a0')");
document.getElementById("form_q_b1").setAttribute("onclick", "javascript:shownext('q" + num + "a1')");
document.getElementById("form_q_b2").setAttribute("onclick", "javascript:shownext('q" + num + "a2')");
try
{
document.getElementById("form_q_text").innerHTML = document.getElementById("form_q" + num).innerHTML;
}
catch (error)
{
//Il n'y a plus de question
//On envoi le formulaire
document.getElementById("form_q").submit();
}
}
/*
*Démarre la partie
*Rend visible les premier éléments
*/
function startgame()
{
//On récupère le formulaire de démarrae
var form = document.getElementById("form_start");
//On supprime tous ses noeuds enfants
while (form.firstChild)
{
form.removeChild(form.firstChild);
}
//On affiche le formulaire finale
document.getElementById("form_q").setAttribute("style", "visibility : auto");
//On lance le chrono
starttimer();
}
/*
* Démarre et affiche le temps du chrono
*/
function starttimer()
{
var time = 0;
//On lance aussi le timer qui passe automatiquement à la question suivante
start_autonexttimer();
//On lance le timer
setInterval(function()
{
//On met à jour le temps
time +=100;
var timer_date = new Date(time);
var timer = new Date(time).toLocaleTimeString();
//On parse les minutes et les secondes pour l'affichage'
var minuts = timer.split(":")[1];
var seconds = timer.split(":")[2];
//On affiche la chaîne modifiée
document.getElementById("time").innerHTML = minuts + "m " + seconds + "s " + timer_date.getMilliseconds() + "ms";
//On stocke le temps en millisecondes dans le champ caché
document.getElementById("form_q_time").setAttribute("value", time);
}, 100);
}
/*
* Lance le timer chargé de passer automatiquement à la question suivante au bout de 3 secondes
*/
function start_autonexttimer()
{
//On lance le timer
setInterval(function()
{
save_next_time +=1;
//Si le temps est un multiple de 3s, on passe à la question suivante
if((save_next_time % 30) == 0)
{
num++;
shownext('q' + num + 'a3');
}
}, 1000);
}