if (typeof(sw) == 'undefined') { var sw = {}; sw.apiPrefix = '/'; } (function($) { //helper functions var shuffle = function(obj) { return obj.sort( function() { return 0.5 - Math.random(); } ); }; var getKey = function(obj) { var word = []; for(var k in obj) word.push(k); return word[0]; }; var selectWordsForGame = function() { //select a random word from the list var words = sw.words[Math.round(Math.random() * sw.words.length)]; var word = getKey(words); var similar = words[word]; //i really should include _ var filtered = []; for(var i=0; i 0 || sw.finaltime > 60) { result = 'You can do better!'; }; if (sw.wrongWords > 0 || sw.finaltime > 80) { result = 'meh...'; }; if (sw.wrongWords > 0 && sw.finaltime <= 80) { result = 'You are fast, but you made errors'; }; $("#main").empty().html('views/gameover.ejs', {result: result, time: sw.finaltime, wrong: sw.wrongWords, correct: sw.correctWords}); }; var startNewGame = function() { var playforrounds = 20; sw.correctWords = 0; sw.rounds = 1; sw.wrongWords = 0; sw.time = Math.round((new Date()).getTime() / 1000); sw.gameover = false; var updateBadges = function() { $('.num-of-words-wrong').html(sw.wrongWords + (sw.wrongWords == 1 ? ' word' : ' words')); $('.num-of-words').html(sw.correctWords + (sw.correctWords == 1 ? ' word' : ' words')); $('.time-words').html(Math.round((new Date()).getTime() / 1000) - sw.time); if(playforrounds >= sw.rounds) { setTimeout(function() { updateBadges(); }, 100); } else { sw.finaltime = Math.round((new Date()).getTime() / 1000) - sw.time; sw.gameover = true; } }; updateBadges(); startGame(); }; //start app var w = $.ajax({ url: sw.apiPrefix + "words.json", dataType: 'json' }); w.done(function(words) { var start = $('.start'); start.removeClass('disabled'); start.html(' Start '); start.animate({ opacity : 1 }, 1000, 'linear'); sw.words = words.words; }); //events $(document).on('click', '.start', function() { startNewGame(); }); $(document).on('click', '.word-button', function(ev, el) { el = $(ev.currentTarget); if (el.hasClass('disabled')) { return; } $('.word-button').addClass('disabled'); var wrongWord = undefined; if(sw.currentWord.word == el.html()) { sw.correctWords = sw.correctWords + 1; sw.rounds += 1; el.addClass('btn-success'); } else { wrongWord = sw.currentWord; sw.wrongWords = sw.wrongWords + 1; el.addClass('btn-danger'); } setTimeout(function() { if(sw.gameover) { gameOver(); } else { startGame(wrongWord); } }, 1000); }); //globals sw.words = []; sw.correctWords = 0; sw.wrongWords = 0; sw.rounds = 0; sw.time = 0; sw.finaltime = 0; sw.gameover = false; sw.currentWord; })(jQuery); //utils (function() { window.Utils = {}; Utils.ellipsis = function(text, maxLength){ if(typeof maxLength === 'undefined'){ maxLength = 9000; //a large number } if (text.length <= maxLength) return text; var xMaxFit = maxLength - 1; var xTruncateAt = text.lastIndexOf(' ', xMaxFit); if (xTruncateAt == -1 || xTruncateAt < maxLength / 2) xTruncateAt = xMaxFit; return text.substr(0, xTruncateAt) + "…"; }; })();