diff --git a/share/goodie/game2048/content.handlebars b/share/goodie/game2048/content.handlebars index 2f693c1a7..f9769d2dd 100644 --- a/share/goodie/game2048/content.handlebars +++ b/share/goodie/game2048/content.handlebars @@ -3,6 +3,5 @@ 0 Points
- -
+
diff --git a/share/goodie/game2048/game2048.js b/share/goodie/game2048/game2048.js index e1157ddf5..cf96ca080 100644 --- a/share/goodie/game2048/game2048.js +++ b/share/goodie/game2048/game2048.js @@ -2,265 +2,299 @@ DDH.game2048 = DDH.game2048 || {}; DDH.game2048.build = function(ops) { + // Global Variables Declaration + + var tempArea; + var container; + var WINNUM; + var SIZE; + var goOn; + var area; + var color; + + + // This function ( using 'transpose' and 'swapRows' ) + // moves the numbers + + function mov(dir, area) { + tempArea.focus(); + var i; + var points = 0; + var moves = 0; + var flag = false; + var exit; + + if (dir == 'a' || dir == 'd') { + area = transpose(area); + } + if (dir == 's' || dir == 'd') { + area = swapRows(area); + } + + for (var c = 0; c').attr("id","area").attr("class","area"); + + for (var i = 0; i < SIZE; i++) { + nCell += ''; + } + for(var r = 0; r < SIZE; r++){ + table.append('' + nCell + ''); + } + $(container).append(table); + } + + + function start() { + getArea(tempArea,area); + getRand(area); + } + return { onShow: function() { - var tempArea = document.getElementById('area'); - var WINNUM = document.getElementById('game').innerHTML; - var SIZE = parseInt(document.getElementById('dimension').innerHTML); - var goOn = true; - var dir; - var area = new Array(); - var color = {'' : '#BBADA0', - '2' : '#EEE4DA', - '4' : '#EDE0C8', - '8' : '#F2B179', - '16' : '#F59563', - '32' : '#F67C5F', - '64' : '#F65E3B', - '128' : '#EDCF72', - '256' : '#EDCC61', - '512' : '#EDC850', - '1024' : '#EDC53F', - '2048' : '#EDC22E', - '4096' : '#D5AE29', - '8192' : '#AA8B21'}; + tempArea = $('#area'); + container = $('#2048-area'); + WINNUM = $('#game').html(); + SIZE = parseInt($("#dimension").html(), 10); + goOn = true; + area = new Array(); + color = {'' : '#BBADA0', + '2' : '#EEE4DA', + '4' : '#EDE0C8', + '8' : '#F2B179', + '16' : '#F59563', + '32' : '#F67C5F', + '64' : '#F65E3B', + '128' : '#EDCF72', + '256' : '#EDCC61', + '512' : '#EDC850', + '1024' : '#EDC53F', + '2048' : '#EDC22E', + '4096' : '#D5AE29', + '8192' : '#AA8B21'}; - createTable(tempArea); + createTable(container); start(tempArea,area); - document.addEventListener("keydown", function(event){checkMov(event)}, true); + $('html').keydown(function(event){ + + event.stopPropagation(); + event.preventDefault(); - function checkMov(event) { var move = false; if (goOn) { - switch(event.which) { - case 38: { - dir = 'w'; - break; - } - case 37: { - dir = 'a'; - break; - } - case 40: { - dir = 's'; - break; - } - case 39: { - dir = 'd'; - break; - } - default: return; + if (event.keyCode == 87 || event.keyCode == 38) { // w or up arrow + move = mov('w', area); + } else if (event.keyCode == 65 || event.keyCode == 37) { // a or left arrow + move = mov('a', area); + } else if (event.keyCode == 83 || event.keyCode == 40) { // s or dowm arrow + move = mov('s', area); + } else if (event.keyCode == 68 || event.keyCode == 39) { // d or right arrow + move = mov('d', area); } - move = mov(dir,area); - // if move is true, a move has been made if (move) { getRand(area); } } - event.defaultPrevented; - } - - function mov(dir, area) { - var i; - var points = 0; - var moves = 0; - var flag = false; - var exit; - - if (dir == 'a' || dir == 'd') { - area = transpose(area); - } - if (dir == 's' || dir == 'd') { - area = swapRows(area); - } - - for (var c = 0; c 2048; -zci is_cached => 1; - - -ddg_goodie_test( - [qw( DDG::Goodie::2048 )], - - 'play 2048' => test_zci( - 'Play 2048', html => '-ANY-' - ), - 'play 256 7' => test_zci( - 'Play 256', html => '-ANY-' - ), - '2048 online' => undef -); - -done_testing; diff --git a/t/Game2048.t b/t/Game2048.t new file mode 100644 index 000000000..000242e1d --- /dev/null +++ b/t/Game2048.t @@ -0,0 +1,60 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use Test::More; +use DDG::Test::Goodie; + +zci answer_type => 2048; +zci is_cached => 1; + + +ddg_goodie_test( + [qw( DDG::Goodie::Game2048 )], + + 'play 2048' => test_zci( + 'Play 2048', + structured_answer => { + + data => '-ANY-', + + # data => [{ + # dimension => 4, + # inputNum => 2048 + # }], + id => "game2048", + name => 2048, + templates => { + group => "base", + item => 0, + options => { + content => "DDH.game2048.content" + }, + } + } + ), + 'play 256 7' => test_zci( + 'Play 256', + structured_answer => { + + data => '-ANY-', + + # data => [{ + # dimension => 7, + # inputNum => 256 + # }], + id => "game2048", + name => 2048, + templates => { + group => "base", + item => 0, + options => { + content => "DDH.game2048.content" + }, + } + } + ), + '2048 online' => undef +); + +done_testing;