|
|
- /**
- * 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);
- }
|