$(document).ready(function() { /****** CONFIGURATION ***********/ var max_questions = 15; var max_chrono = 5; var max_wait = 2; var max_infinite_errors = 5; /********************************/ /****** General variables ******/ var questions = 0; var good_answers = 0; var bad_answers = 0; var chrono = max_chrono; var infinite = false; // type of game var whole_set = false; // type of game var image_name; // preload var image_memory; // preload var gen_list = new Array(); var available_pokemon = new Array(); var domain = "https://poketest.marchal.dev/index.html"; /****** Generations ******/ var G1 = [1, 151]; var G2 = [152, 251]; var G3 = [252, 386]; var G4 = [387, 493]; var G5 = [494, 649]; var G6 = [650, 721]; var G7 = [722, 809]; var G8 = [810, 905]; var G9 = [906, 1025]; var MEGA = [1026, 1075]; var GIGA = [1076, 1107]; var REG = [1108, 1162]; var gen_number = 9; var extra_number = 3; // mega, giga, reg /************ UTIL *************/ /*******************************/ function random(min, max) { return Math.floor(Math.random()*(max-min+1)+min); } function shuffleArray(array) { for (var i = array.length - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); var temp = array[i]; array[i] = array[j]; array[j] = temp; } return array; } function findInArray(array, elem) { for (var j = 0; j < array.length; j++) { if (array[j] === elem) return true; } return false; } function normalizeString(string) { return string.toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, ""); } /************ GAME *************/ /*******************************/ // loading json file $.getJSON('pokemon.json', function(pk) { var pklist = pk; var pokemon_generation_list = new Array(); // starting the game for the first time and creating the layout function firstGame() { $('article #game').fadeToggle('quick', function() { document.removeEventListener('keydown', funcListener); $('article #container').append('
');
if (answertype == "choice")
{
$('article #container #answers').empty().append('');
$('article #container #answers').append('');
$('article #container #answers').append('');
$('article #container #answers').append('');
}
else
{
$('article #container #answers').empty().append('');
$('article #container #answers input').focus().select();
}
// timer setting
var clock = setInterval(function()
{
chrono--;
if (chrono === 0)
{
clearInterval(clock);
showAnswer(false); // timer has ended, so it's a bad answer
}
$('article #container .chrono').empty().append(chrono);
}, 1000);
// checking if the answer is good or not
$('article .option').click(function()
{
clearInterval(clock);
($(this).attr('value') == answer) ? showAnswer(true) : showAnswer(false);
});
if (answertype == "choice")
{
document.addEventListener('keydown', funcListener = function(event)
{
function checkAnswer(v)
{
clearInterval(clock);
($('#answers input.a'+v).attr('value') == answer) ? showAnswer(true) : showAnswer(false);
}
if (event.keyCode == 49 || event.keyCode == 72) checkAnswer(1);
else if (event.keyCode == 50 || event.keyCode == 74) checkAnswer(2);
else if (event.keyCode == 51 || event.keyCode == 75) checkAnswer(3);
else if (event.keyCode == 52 || event.keyCode == 76) checkAnswer(4);
});
}
else
{
$("form").submit(function(event)
{
clearInterval(clock);
pokemon_name = event.currentTarget[0].value;
event.preventDefault(); // do not submit form
if (normalizeString(answer) == normalizeString(pokemon_name))
showAnswer(true);
else
showAnswer(false);
});
}
function showAnswer(ok)
{
document.removeEventListener('keydown', funcListener);
$('article .pokemon img').removeClass('silhouette');
if (ok)
{
good_answers++;
$('article #answers').empty().append("That's right! \ The answer is "+ answer +"!
"); } else { bad_answers++; $('article #answers').empty().append("Too bad... \ The answer was "+ answer +"!
"); } var wait = max_wait; clock = setInterval(function() { wait--; if (wait === 0) { if (!infinite) questions < max_questions ? game() : score(); else bad_answers < max_infinite_errors ? game() : score(); } }, 1000); } function score() { function generateSeed() { gen = ''; if (gen_list.length < (gen_number + extra_number)) { for (i in gen_list) gen += gen_list[i].substring(0,1); } else gen += "all"; s_gen = "?gen=" + gen; s_lang = "&lang=" + lang; s_answertype = "&answertype=" + answertype; s_silhouette = "&silhouette=" + (silhouette == "silhouette" ? "true" : "false"); s_questions = "&questions=" + (!whole_set? max_questions : "set"); s_time = "&time=" + max_chrono; // save in the local storage for default use localStorage.setItem('generation', gen); localStorage.setItem('lang', lang); localStorage.setItem('answertype', answertype); localStorage.setItem('silhouette', silhouette); localStorage.setItem('questions', (!whole_set? max_questions : "set")); localStorage.setItem('time', max_chrono); return domain + s_gen + s_lang + s_answertype + s_silhouette + s_questions + s_time; } $('article #container #score .pokemon').empty().after(''); $('article #container').addClass('diploma'); $('article #container').removeClass('game_active'); $('article #container .chrono').hide(); if (!infinite) $('article #container .pokemon').empty().append("Score: "+(Math.floor(good_answers/max_questions*100))+"%
"); else $('article #container .pokemon').empty().append("Score: "+good_answers+" good answer"+(good_answers>1?("s"):"")+"!
"); $('article #container #seed').empty().append('Share your configuration
'); $('article #container #share').empty().append(''); $('article #container #answers').empty().append(''); // copy seed in clipboard $("article #container #copyseed").click(function() { $('article #container #seed input').select(); navigator.clipboard.writeText($('article #container #seed input').val()); }); $('article #container .button input.start_again').click(function() { score = questions = good_answers = bad_answers = 0; chrono = max_chrono; $('article #container .chrono').show(); $('article #container').removeClass('diploma'); $('article #container').addClass('game_active'); game(); }); } } }); });