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 1 || sw.finaltime > 60) { result = 'geht so...'; }; if (sw.wrongWords > 1 || sw.finaltime > 50) { result = 'Du kannst das besser!'; }; if (sw.wrongWords > 1 && sw.finaltime < 40) { result = 'Du bist sehr schnell, aber du hast Fehler gemacht'; }; $("#main").empty().html('views/gameover.ejs', {result: result, time: sw.finaltime, wrong: sw.wrongWords, correct: sw.correctWords}); }; var startNewGame = function() { var playforwords = 10; sw.correctWords = 0; 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(playforwords > sw.correctWords + sw.wrongWords) { 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'); if(sw.currentWord == el.html()) { sw.correctWords = sw.correctWords + 1; el.addClass('btn-success'); } else { sw.wrongWords = sw.wrongWords + 1; el.addClass('btn-danger'); } setTimeout(function() { $('.word-button[data-word="' + sw.currentWord + '"]').addClass('btn-success'); if(sw.gameover) { setTimeout(function() { gameOver(); }, 1000); } else { setTimeout(function() { startGame(); }, 1000); } }, 1000); }); //globals sw.words = []; sw.correctWords = 0; sw.wrongWords = 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) + "…"; }; })();