Créé dans le cadre du projet de fin d'année de la promo 2018 de CIR2 de l'ISEN Brest/Rennes, le Burger Quizz est une adaptation numérique du jeu télévisé éponyme, plus précisément d'une épreuve spécifique de ce jeu : le "Sel ou Poivre".

game.js 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. // IDs
  2. var id_cat = 0, id_theme = 0, id_quest = 0;
  3. // Shortcuts
  4. var json, category, theme;
  5. // Timer
  6. var timing = 5, secRestantes;
  7. var score = 0;
  8. var reponseUser = -1, bonneReponse;
  9. function apiReq() {
  10. $.ajax({
  11. async: false,
  12. url: "./api/",
  13. dataType: 'json',
  14. success: function(data) {
  15. json = data;
  16. }
  17. });
  18. }
  19. function loadCat(id) {
  20. if(id === 0) category = json.cat1;
  21. if(id === 1) category = json.cat2;
  22. console.log(category);
  23. $("#game").html("<p id=\"category\">Catégorie : "+category.nom_cat+"</p>");
  24. $("#game").append("<div id=\"theme\"></div>");
  25. loadTheme(id_theme);
  26. }
  27. function loadTheme(id) {
  28. theme = category.themes[id];
  29. $("#theme").html("<p id=\"question\"></p>");
  30. $("#theme").append("<ul id=\"answers\"><li id=\"rep1\">"+theme.reponse1+"</li>"
  31. +"<li id=\"rep2\">"+theme.reponse2+"</li><li id=\"both\">Les deux</li></ul>");
  32. $("#theme").append("<div id=\"timer\" style=\"width:100%\"></p>");
  33. quest(id_quest);
  34. }
  35. function quest(id) {
  36. $("#question").html(theme.questions[id].intitule);
  37. startTimer();
  38. bonneReponse = parseInt(theme.questions[id].bonneReponse);
  39. console.info('Question ' + (id_quest + 1) + '/' + theme.questions.length + ' : '
  40. +theme.questions[id].intitule);
  41. $("#rep1").off('click');
  42. $("#rep1").on("click", function() { reponseUser = 1; checkAnswer(); });
  43. $("#rep2").off('click');
  44. $("#rep2").on("click", function() { reponseUser = 2; checkAnswer(); });
  45. $("#both").off('click');
  46. $("#both").on("click", function() { reponseUser = 0; checkAnswer(); });
  47. }
  48. function checkAnswer() {
  49. stopTimer();
  50. if(reponseUser == bonneReponse) {
  51. score += secRestantes+1;
  52. }
  53. switch(bonneReponse) {
  54. case 0: $("#rep1").addClass("wrong-answer");
  55. $("#rep2").addClass("wrong-answer");
  56. $("#both").addClass("good-answer");
  57. break;
  58. case 1: $("#rep1").addClass("good-answer");
  59. $("#rep2").addClass("wrong-answer");
  60. $("#both").addClass("wrong-answer");
  61. break;
  62. case 2: $("#rep1").addClass("wrong-answer");
  63. $("#rep2").addClass("good-answer");
  64. $("#both").addClass("wrong-answer");
  65. break;
  66. }
  67. window.setTimeout(nextQuestion, 2000);
  68. }
  69. function nextQuestion() {
  70. $("#rep1").removeClass();
  71. $("#rep2").removeClass();
  72. $("#both").removeClass();
  73. // Dernière question du thème en cours
  74. if((id_quest+1) == theme.questions.length) {
  75. // Dernier thème de la catégorie en cours
  76. if((id_theme+1) == category.themes.length) {
  77. // Dernière catégorie
  78. if((id_cat+1) == 2) {
  79. endGame();
  80. } else {
  81. id_quest = 0;
  82. id_theme = 0;
  83. id_cat++;
  84. loadCat(id_cat);
  85. }
  86. } else {
  87. id_quest = 0;
  88. id_theme++;
  89. loadTheme(id_theme);
  90. }
  91. } else {
  92. id_quest++;
  93. quest(id_quest);
  94. }
  95. }
  96. function play() {
  97. $("#play").remove();
  98. apiReq();
  99. loadCat(id_cat);
  100. }
  101. function startTimer() {
  102. $("#timer").animate('{width : 0%}', timing*1000);
  103. window.setTimeout(checkAnswer, timing*1000);
  104. }
  105. function stopTimer() {
  106. secRestantes = Math.round($("#timer").width/100*timing);
  107. console.log(secRestantes);
  108. }
  109. function endGame() {
  110. $("#game").html("End of line. Score : "+score);
  111. }