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;