Game sederhana latihan penjumlahan dan pengurangan untuk anak TK/SD
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

167 lines
3.3 KiB

/**
* Inisialisasi variabel global / konfigurasi
*/
var level = 1, // level awal
max_digit = 2, // digit jawaban maksimal
delay = 3, // delay dalam detik jika benar
strike, kunci, jawab; // variabel global
/**
* Main function
*/
$(function() {
/**
* Inisialisasi program
*/
strikeZero();
kunci = initialize();
/**
* Mencegah fokus keluar dari input jawaban
*/
$('#jawaban').blur(function(){
$(this).focus();
});
/**
* Cek yang diketik oleh user
*/
$("#jawaban").on('keyup', function(e) {
var string_val = $(this).val();
/**
* Menyembunyikan tanda cek jawaban jika jawaban dihapus
*/
if(string_val.length<1) {
$('#sign img').hide();
}
/**
* Memastikan jawaban tidak melebihi maksimal digit
*/
if(string_val.length>max_digit) {
$('#jawaban').val(string_val.substring(0,max_digit));
}
/**
* User menekan tombol enter
*/
if (e.keyCode === 13) {
jawab = parseInt(string_val);
/**
* Jawaban benar
*/
if(kunci==jawab) {
$('#cross-sign').hide();
$('#check-sign').show();
$('#footer').append('<img src="img/check.png">');
strike++;
setTimeout(function() {
/**
* Naik level
*/
if(strike>=rules[level-1].strike) {
level++;
strikeZero();
}
kunci = initialize();
}, (delay * 1000));
/**
* Jawaban salah
*/
} else {
$('#cross-sign').show();
strikeZero();
}
};
/**
* Ulang dari awal
*/
$(document).on('click', '#restart', function(){
location.reload();
});
});
});
/**
* Fungsi inisialisasi program
* @returns {Number} kunci jawaban
*/
function initialize() {
/**
* Membuat soal
*/
var bil01 = randomInt(rules[level-1].min, rules[level-1].max),
bil02 = randomInt(rules[level-1].min, rules[level-1].max),
bil03; // kunci jawaban
/**
* Soal penjumlahan
*/
if(rules[level-1].type) {
$('#soal').text(bil01 + ' + ' + bil02 + ' = ');
bil03 = bil01 + bil02;
/**
* Soal pengurangan
*/
} else {
if(bil01<bil02) {
var tmp=bil01;bil01=bil02;bil02=tmp;
}
$('#soal').text(bil01 + ' - ' + bil02 + ' = ');
bil03 = bil01 - bil02;
}
/**
* Set tampilan awal
*/
$('#sign img').hide();
$('#level').text('Level ' + level);
$('#jawaban').focus().val('');
return bil03;
}
/**
* Fungsi mereset strike, sekaligus pengecekan level maksimal
* @returns {void}
*/
function strikeZero() {
/**
* Level maksimal
*/
if(level>rules.length) {
$('body').css('background-color', '#000');
$('#container').html('<img id="fireworks" src="img/fireworks.gif">');
$('#footer').html('<button id="restart">RESTART</button>');
level = 1;
/**
* Reset strike
*/
} else {
$('#footer').html('<div id="level">Level ' + level + '</div>');
strike = 0;
}
}
/**
* Fungsi membuat angka acak
* @param {Number} min nilai minimum
* @param {Number} max nilai maksimum
* @returns {Number} nilai acak
*/
function randomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}