PhieuLang

Snake

Jan 12th, 2014
556
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var _0x515d = ["addEventListener", "attachEvent", "on", "removeEventListener", "detachEvent", "Snake", "elm", "elmStyle", "row", "col", "xPos", "yPos", "next", "prev", "currentStyle", "z-index", "style", "getComputedStyle", "getPropertyValue", "defaultView", "playingBoard", "snakeBody", "b0", "startRow", "startCol", "getBlockWidth", "getBlockHeight", "appendChild", "getBoardContainer", "left", "px", "top", "snakeLength", "snakeHead", "snakeTail", "className", "", "replace", " snake-snakebody-alive", "div", "createElement", "snake-snakebody-block", "-1000px", "width", "height", "cloneNode", "length", "handleArrowKeys", "unshift", "go", "grid", "pop", "handleDeath", "getGridFoodValue", "eatFood", "splice", "b", "foodEaten", "zIndex", " snake-snakebody-dead", "rebirth", "reset", "push", "concat", "Food", "random", "floor", "id", "snake-food-", "setAttribute", "snake-food-block", "getFoodElement", "randomlyPlaceFood", "Board", "innerWidth", "number", "documentElement", "clientWidth", "clientHeight", "body", "innerHeight", "playingField", "snake-playing-field", "click", "focus", "snake-panel-component", "innerHTML", "Length: 1", "keyup", "event", "cancelBubble", "stopPropagation", "preventDefault", "snake-game-container", "sbWelcome", "snake-welcome-dialog", "fullScreen", "On Windows, press F11 to play in Full Screen mode.", "Welcome!<p></p><p>You need to be registered user to be able to save game results and manage personal statistics. <b><a href=\"./cgi-bin/index.pl\">Register here</a></b></p>", "button", "Play Game", "createTextNode", "display", "none", "setBoardState", "which", "keyCode", "sbTryAgain", "snake-try-again-dialog", "<b>Submit score</b><br>Your login:", "input", "playername", "Submit", "resetBoard", "getElementById", "playerName=", "value", "&playerScore=", "&hash=", "pc8XW2xUJcWMFVGkZ5PL", "POST", "/cgi-bin/save.pl", "open", "Content-Type", "application/x-www-form-urlencoded", "setRequestHeader", "send", "responseText", "block", "keydown", "setupPlayingField", "getBoardState", "getPlayingFieldElement", "setBoardContainer", "string", "backgroundColor", "#FC5454", "min", "round", "450px", "Length: ", "max", "removeChild", "undefined", "resize", "boardContainer"];
  2. var SNAKE = SNAKE || {};
  3. SNAKE["addEventListener"] = (function () {
  4.     if (window["addEventListener"]) {
  5.         return function (_0xcef5x2, _0xcef5x3, _0xcef5x4, _0xcef5x5) {
  6.             _0xcef5x2["addEventListener"](_0xcef5x3, _0xcef5x4, _0xcef5x5);
  7.         };
  8.     } else {
  9.         if (window["attachEvent"]) {
  10.             return function (_0xcef5x2, _0xcef5x3, _0xcef5x4) {
  11.                 _0xcef5x2["attachEvent"]("on" + _0xcef5x3, _0xcef5x4);
  12.             };
  13.         };
  14.     };
  15. })();
  16. SNAKE["removeEventListener"] = (function () {
  17.     if (window["removeEventListener"]) {
  18.         return function (_0xcef5x2, _0xcef5x3, _0xcef5x4, _0xcef5x5) {
  19.             _0xcef5x2["removeEventListener"](_0xcef5x3, _0xcef5x4, _0xcef5x5);
  20.         };
  21.     } else {
  22.         if (window["detachEvent"]) {
  23.             return function (_0xcef5x2, _0xcef5x3, _0xcef5x4) {
  24.                 _0xcef5x2["detachEvent"]("on" + _0xcef5x3, _0xcef5x4);
  25.             };
  26.         };
  27.     };
  28. })();
  29. SNAKE["Snake"] = SNAKE["Snake"] || (function () {
  30.     var _0xcef5x6 = 0;
  31.     var _0xcef5x7 = [];
  32.     var _0xcef5x8 = function () {
  33.         this["elm"] = null;
  34.         this["elmStyle"] = null;
  35.         this["row"] = -1;
  36.         this["col"] = -1;
  37.         this["xPos"] = -1000;
  38.         this["yPos"] = -1000;
  39.         this["next"] = null;
  40.         this["prev"] = null;
  41.     };
  42.  
  43.     function _0xcef5x9(_0xcef5xa) {
  44.         var _0xcef5xb = 0,
  45.             _0xcef5xc = 0,
  46.             _0xcef5xd;
  47.         for (_0xcef5xd in _0xcef5xa) {
  48.             if (_0xcef5xa[_0xcef5xd]["elm"]["currentStyle"]) {
  49.                 _0xcef5xc = parseFloat(_0xcef5xa[_0xcef5xd]["elm"]["style"]["z-index"], 10);
  50.             } else {
  51.                 if (window["getComputedStyle"]) {
  52.                     _0xcef5xc = parseFloat(document["defaultView"]["getComputedStyle"](_0xcef5xa[_0xcef5xd]["elm"], null)["getPropertyValue"]("z-index"), 10);
  53.                 };
  54.             }; if (!isNaN(_0xcef5xc) && _0xcef5xc > _0xcef5xb) {
  55.                 _0xcef5xb = _0xcef5xc;
  56.             };
  57.         };
  58.         return (_0xcef5xb + 1);
  59.     };
  60.     return function (_0xcef5xe) {
  61.         if (!_0xcef5xe || !_0xcef5xe["playingBoard"]) {
  62.             return;
  63.         };
  64.         var _0xcef5xf = this,
  65.             _0xcef5x10 = _0xcef5xe["playingBoard"],
  66.             _0xcef5x11 = _0xcef5x6++,
  67.             _0xcef5x12 = 5,
  68.             _0xcef5x13 = [],
  69.             _0xcef5x14 = 1,
  70.             _0xcef5x15 = [0, 1, 0, -1],
  71.             _0xcef5x16 = [-1, 0, 1, 0],
  72.             _0xcef5x17 = [],
  73.             _0xcef5x18 = [],
  74.             _0xcef5x19 = 75,
  75.             _0xcef5x1a = false;
  76.         _0xcef5xf["snakeBody"] = {};
  77.         _0xcef5xf["snakeBody"]["b0"] = new _0xcef5x8();
  78.         _0xcef5xf["snakeBody"]["b0"]["row"] = _0xcef5xe["startRow"] || 1;
  79.         _0xcef5xf["snakeBody"]["b0"]["col"] = _0xcef5xe["startCol"] || 1;
  80.         _0xcef5xf["snakeBody"]["b0"]["xPos"] = _0xcef5xf["snakeBody"]["b0"]["row"] * _0xcef5x10["getBlockWidth"]();
  81.         _0xcef5xf["snakeBody"]["b0"]["yPos"] = _0xcef5xf["snakeBody"]["b0"]["col"] * _0xcef5x10["getBlockHeight"]();
  82.         _0xcef5xf["snakeBody"]["b0"]["elm"] = _0xcef5x1b();
  83.         _0xcef5xf["snakeBody"]["b0"]["elmStyle"] = _0xcef5xf["snakeBody"]["b0"]["elm"]["style"];
  84.         _0xcef5x10["getBoardContainer"]()["appendChild"](_0xcef5xf["snakeBody"]["b0"]["elm"]);
  85.         _0xcef5xf["snakeBody"]["b0"]["elm"]["style"]["left"] = _0xcef5xf["snakeBody"]["b0"]["xPos"] + "px";
  86.         _0xcef5xf["snakeBody"]["b0"]["elm"]["style"]["top"] = _0xcef5xf["snakeBody"]["b0"]["yPos"] + "px";
  87.         _0xcef5xf["snakeBody"]["b0"]["next"] = _0xcef5xf["snakeBody"]["b0"];
  88.         _0xcef5xf["snakeBody"]["b0"]["prev"] = _0xcef5xf["snakeBody"]["b0"];
  89.         _0xcef5xf["snakeLength"] = 1;
  90.         _0xcef5xf["snakeHead"] = _0xcef5xf["snakeBody"]["b0"];
  91.         _0xcef5xf["snakeTail"] = _0xcef5xf["snakeBody"]["b0"];
  92.         _0xcef5xf["snakeHead"]["elm"]["className"] = _0xcef5xf["snakeHead"]["elm"]["className"]["replace"](/\bsnake-snakebody-dead\b/, "");
  93.         _0xcef5xf["snakeHead"]["elm"]["className"] += " snake-snakebody-alive";
  94.  
  95.         function _0xcef5x1b() {
  96.             var _0xcef5x1c = document["createElement"]("div");
  97.             _0xcef5x1c["className"] = "snake-snakebody-block";
  98.             _0xcef5x1c["style"]["left"] = "-1000px";
  99.             _0xcef5x1c["style"]["top"] = "-1000px";
  100.             _0xcef5x1c["style"]["width"] = _0xcef5x10["getBlockWidth"]() + "px";
  101.             _0xcef5x1c["style"]["height"] = _0xcef5x10["getBlockHeight"]() + "px";
  102.             return _0xcef5x1c;
  103.         };
  104.  
  105.         function _0xcef5x1d(_0xcef5x1e) {
  106.             var _0xcef5x1f;
  107.             var _0xcef5x1c = _0xcef5x1b();
  108.             for (var _0xcef5xd = 1; _0xcef5xd < _0xcef5x1e; _0xcef5xd++) {
  109.                 _0xcef5x1f = new _0xcef5x8();
  110.                 _0xcef5x1f["elm"] = _0xcef5x1c["cloneNode"](true);
  111.                 _0xcef5x1f["elmStyle"] = _0xcef5x1f["elm"]["style"];
  112.                 _0xcef5x10["getBoardContainer"]()["appendChild"](_0xcef5x1f["elm"]);
  113.                 _0xcef5x7[_0xcef5x7["length"]] = _0xcef5x1f;
  114.             };
  115.             _0xcef5x1f = new _0xcef5x8();
  116.             _0xcef5x1f["elm"] = _0xcef5x1c;
  117.             _0xcef5x10["getBoardContainer"]()["appendChild"](_0xcef5x1f["elm"]);
  118.             _0xcef5x7[_0xcef5x7["length"]] = _0xcef5x1f;
  119.         };
  120.         _0xcef5xf["handleArrowKeys"] = function (_0xcef5x20) {
  121.             if (_0xcef5x1a) {
  122.                 return;
  123.             };
  124.             var _0xcef5x21 = _0xcef5xf["snakeLength"];
  125.             var _0xcef5x22 = _0xcef5x13[0] || _0xcef5x14;
  126.             switch (_0xcef5x20) {
  127.             case 37:
  128.                 if (_0xcef5x22 !== 1 || _0xcef5x21 === 1) {
  129.                     _0xcef5x13["unshift"](3);
  130.                 };
  131.                 break;;
  132.             case 38:
  133.                 if (_0xcef5x22 !== 2 || _0xcef5x21 === 1) {
  134.                     _0xcef5x13["unshift"](0);
  135.                 };
  136.                 break;;
  137.             case 39:
  138.                 if (_0xcef5x22 !== 3 || _0xcef5x21 === 1) {
  139.                     _0xcef5x13["unshift"](1);
  140.                 };
  141.                 break;;
  142.             case 40:
  143.                 if (_0xcef5x22 !== 0 || _0xcef5x21 === 1) {
  144.                     _0xcef5x13["unshift"](2);
  145.                 };
  146.                 break;;
  147.             };
  148.         };
  149.         _0xcef5xf["go"] = function () {
  150.             var _0xcef5x23 = _0xcef5xf["snakeHead"],
  151.                 _0xcef5x24 = _0xcef5xf["snakeTail"],
  152.                 _0xcef5x25 = _0xcef5x14,
  153.                 _0xcef5x26 = _0xcef5x10["grid"];
  154.             _0xcef5xf["snakeTail"] = _0xcef5x24["prev"];
  155.             _0xcef5xf["snakeHead"] = _0xcef5x24;
  156.             if (_0xcef5x26[_0xcef5x24["row"]] && _0xcef5x26[_0xcef5x24["row"]][_0xcef5x24["col"]]) {
  157.                 _0xcef5x26[_0xcef5x24["row"]][_0xcef5x24["col"]] = 0;
  158.             };
  159.             if (_0xcef5x13["length"]) {
  160.                 _0xcef5x25 = _0xcef5x14 = _0xcef5x13["pop"]();
  161.             };
  162.             _0xcef5x24["col"] = _0xcef5x23["col"] + _0xcef5x15[_0xcef5x25];
  163.             _0xcef5x24["row"] = _0xcef5x23["row"] + _0xcef5x16[_0xcef5x25];
  164.             _0xcef5x24["xPos"] = _0xcef5x23["xPos"] + _0xcef5x17[_0xcef5x25];
  165.             _0xcef5x24["yPos"] = _0xcef5x23["yPos"] + _0xcef5x18[_0xcef5x25];
  166.             if (!_0xcef5x24["elmStyle"]) {
  167.                 _0xcef5x24["elmStyle"] = _0xcef5x24["elm"]["style"];
  168.             };
  169.             _0xcef5x24["elmStyle"]["left"] = _0xcef5x24["xPos"] + "px";
  170.             _0xcef5x24["elmStyle"]["top"] = _0xcef5x24["yPos"] + "px";
  171.             if (_0xcef5x26[_0xcef5x24["row"]][_0xcef5x24["col"]] === 0) {
  172.                 _0xcef5x26[_0xcef5x24["row"]][_0xcef5x24["col"]] = 1;
  173.                 setTimeout(function () {
  174.                     _0xcef5xf["go"]();
  175.                 }, _0xcef5x19);
  176.             } else {
  177.                 if (_0xcef5x26[_0xcef5x24["row"]][_0xcef5x24["col"]] > 0) {
  178.                     _0xcef5xf["handleDeath"]();
  179.                 } else {
  180.                     if (_0xcef5x26[_0xcef5x24["row"]][_0xcef5x24["col"]] === _0xcef5x10["getGridFoodValue"]()) {
  181.                         _0xcef5x26[_0xcef5x24["row"]][_0xcef5x24["col"]] = 1;
  182.                         _0xcef5xf["eatFood"]();
  183.                         setTimeout(function () {
  184.                             _0xcef5xf["go"]();
  185.                         }, _0xcef5x19);
  186.                     };
  187.                 };
  188.             };
  189.         };
  190.         _0xcef5xf["eatFood"] = function () {
  191.             if (_0xcef5x7["length"] <= _0xcef5x12) {
  192.                 _0xcef5x1d(_0xcef5x12 * 2);
  193.             };
  194.             var _0xcef5x27 = _0xcef5x7["splice"](0, _0xcef5x12);
  195.             var _0xcef5xd = _0xcef5x27["length"],
  196.                 _0xcef5x28, _0xcef5x29 = _0xcef5xf["snakeTail"];
  197.             while (_0xcef5xd--) {
  198.                 _0xcef5x28 = "b" + _0xcef5xf["snakeLength"]++;
  199.                 _0xcef5xf["snakeBody"][_0xcef5x28] = _0xcef5x27[_0xcef5xd];
  200.                 _0xcef5xf["snakeBody"][_0xcef5x28]["prev"] = _0xcef5x29;
  201.                 _0xcef5xf["snakeBody"][_0xcef5x28]["elm"]["className"] = _0xcef5xf["snakeHead"]["elm"]["className"]["replace"](/\bsnake-snakebody-dead\b/, "");
  202.                 _0xcef5xf["snakeBody"][_0xcef5x28]["elm"]["className"] += " snake-snakebody-alive";
  203.                 _0xcef5x29["next"] = _0xcef5xf["snakeBody"][_0xcef5x28];
  204.                 _0xcef5x29 = _0xcef5xf["snakeBody"][_0xcef5x28];
  205.             };
  206.             _0xcef5xf["snakeTail"] = _0xcef5xf["snakeBody"][_0xcef5x28];
  207.             _0xcef5xf["snakeTail"]["next"] = _0xcef5xf["snakeHead"];
  208.             _0xcef5xf["snakeHead"]["prev"] = _0xcef5xf["snakeTail"];
  209.             _0xcef5x10["foodEaten"]();
  210.         };
  211.         _0xcef5xf["handleDeath"] = function () {
  212.             _0xcef5xf["snakeHead"]["elm"]["style"]["zIndex"] = _0xcef5x9(_0xcef5xf["snakeBody"]);
  213.             _0xcef5xf["snakeHead"]["elm"]["className"] = _0xcef5xf["snakeHead"]["elm"]["className"]["replace"](/\bsnake-snakebody-alive\b/, "");
  214.             _0xcef5xf["snakeHead"]["elm"]["className"] += " snake-snakebody-dead";
  215.             _0xcef5x1a = true;
  216.             _0xcef5x10["handleDeath"]();
  217.             _0xcef5x13["length"] = 0;
  218.         };
  219.         _0xcef5xf["rebirth"] = function () {
  220.             _0xcef5x1a = false;
  221.         };
  222.         _0xcef5xf["reset"] = function () {
  223.             if (_0xcef5x1a === false) {
  224.                 return;
  225.             };
  226.             var _0xcef5x27 = [],
  227.                 _0xcef5x2a = _0xcef5xf["snakeHead"]["next"],
  228.                 _0xcef5x2b;
  229.             while (_0xcef5x2a !== _0xcef5xf["snakeHead"]) {
  230.                 _0xcef5x2b = _0xcef5x2a["next"];
  231.                 _0xcef5x2a["prev"] = null;
  232.                 _0xcef5x2a["next"] = null;
  233.                 _0xcef5x27["push"](_0xcef5x2a);
  234.                 _0xcef5x2a = _0xcef5x2b;
  235.             };
  236.             _0xcef5xf["snakeHead"]["next"] = _0xcef5xf["snakeHead"];
  237.             _0xcef5xf["snakeHead"]["prev"] = _0xcef5xf["snakeHead"];
  238.             _0xcef5xf["snakeTail"] = _0xcef5xf["snakeHead"];
  239.             _0xcef5xf["snakeLength"] = 1;
  240.             for (var _0xcef5xd = 0; _0xcef5xd < _0xcef5x27["length"]; _0xcef5xd++) {
  241.                 _0xcef5x27[_0xcef5xd]["elm"]["style"]["left"] = "-1000px";
  242.                 _0xcef5x27[_0xcef5xd]["elm"]["style"]["top"] = "-1000px";
  243.                 _0xcef5x27[_0xcef5xd]["elm"]["className"] = _0xcef5xf["snakeHead"]["elm"]["className"]["replace"](/\bsnake-snakebody-dead\b/, "");
  244.                 _0xcef5x27[_0xcef5xd]["elm"]["className"] += " snake-snakebody-alive";
  245.             };
  246.             _0xcef5x7["concat"](_0xcef5x27);
  247.             _0xcef5xf["snakeHead"]["elm"]["className"] = _0xcef5xf["snakeHead"]["elm"]["className"]["replace"](/\bsnake-snakebody-dead\b/, "");
  248.             _0xcef5xf["snakeHead"]["elm"]["className"] += " snake-snakebody-alive";
  249.             _0xcef5xf["snakeHead"]["row"] = _0xcef5xe["startRow"] || 1;
  250.             _0xcef5xf["snakeHead"]["col"] = _0xcef5xe["startCol"] || 1;
  251.             _0xcef5xf["snakeHead"]["xPos"] = _0xcef5xf["snakeHead"]["row"] * _0xcef5x10["getBlockWidth"]();
  252.             _0xcef5xf["snakeHead"]["yPos"] = _0xcef5xf["snakeHead"]["col"] * _0xcef5x10["getBlockHeight"]();
  253.             _0xcef5xf["snakeHead"]["elm"]["style"]["left"] = _0xcef5xf["snakeHead"]["xPos"] + "px";
  254.             _0xcef5xf["snakeHead"]["elm"]["style"]["top"] = _0xcef5xf["snakeHead"]["yPos"] + "px";
  255.         };
  256.         _0xcef5x1d(_0xcef5x12 * 2);
  257.         _0xcef5x17[0] = 0;
  258.         _0xcef5x17[1] = _0xcef5x10["getBlockWidth"]();
  259.         _0xcef5x17[2] = 0;
  260.         _0xcef5x17[3] = -1 * _0xcef5x10["getBlockWidth"]();
  261.         _0xcef5x18[0] = -1 * _0xcef5x10["getBlockHeight"]();
  262.         _0xcef5x18[1] = 0;
  263.         _0xcef5x18[2] = _0xcef5x10["getBlockHeight"]();
  264.         _0xcef5x18[3] = 0;
  265.     };
  266. })();
  267. SNAKE["Food"] = SNAKE["Food"] || (function () {
  268.     var _0xcef5x6 = 0;
  269.  
  270.     function _0xcef5x2c(_0xcef5x2d, _0xcef5x2e) {
  271.         return Math["floor"](Math["random"]() * (_0xcef5x2e + 1 - _0xcef5x2d)) + _0xcef5x2d;
  272.     };
  273.     return function (_0xcef5xe) {
  274.         if (!_0xcef5xe || !_0xcef5xe["playingBoard"]) {
  275.             return;
  276.         };
  277.         var _0xcef5xf = this;
  278.         var _0xcef5x10 = _0xcef5xe["playingBoard"];
  279.         var _0xcef5x2f, _0xcef5x30;
  280.         var _0xcef5x11 = _0xcef5x6++;
  281.         var _0xcef5x31 = document["createElement"]("div");
  282.         _0xcef5x31["setAttribute"]("id", "snake-food-" + _0xcef5x11);
  283.         _0xcef5x31["className"] = "snake-food-block";
  284.         _0xcef5x31["style"]["width"] = _0xcef5x10["getBlockWidth"]() + "px";
  285.         _0xcef5x31["style"]["height"] = _0xcef5x10["getBlockHeight"]() + "px";
  286.         _0xcef5x31["style"]["left"] = "-1000px";
  287.         _0xcef5x31["style"]["top"] = "-1000px";
  288.         _0xcef5x10["getBoardContainer"]()["appendChild"](_0xcef5x31);
  289.         _0xcef5xf["getFoodElement"] = function () {
  290.             return _0xcef5x31;
  291.         };
  292.         _0xcef5xf["randomlyPlaceFood"] = function () {
  293.             if (_0xcef5x10["grid"][_0xcef5x2f] && _0xcef5x10["grid"][_0xcef5x2f][_0xcef5x30] === _0xcef5x10["getGridFoodValue"]()) {
  294.                 _0xcef5x10["grid"][_0xcef5x2f][_0xcef5x30] = 0;
  295.             };
  296.             var _0xcef5x32 = 0,
  297.                 _0xcef5x33 = 0,
  298.                 _0xcef5x34 = 0;
  299.             var _0xcef5x35 = _0xcef5x10["grid"]["length"] - 1;
  300.             var _0xcef5x36 = _0xcef5x10["grid"][0]["length"] - 1;
  301.             while (_0xcef5x10["grid"][_0xcef5x32][_0xcef5x33] !== 0) {
  302.                 _0xcef5x32 = _0xcef5x2c(1, _0xcef5x35);
  303.                 _0xcef5x33 = _0xcef5x2c(1, _0xcef5x36);
  304.                 _0xcef5x34++;
  305.                 if (_0xcef5x34 > 20000) {
  306.                     _0xcef5x32 = -1;
  307.                     _0xcef5x33 = -1;
  308.                     break;
  309.                 };
  310.             };
  311.             _0xcef5x10["grid"][_0xcef5x32][_0xcef5x33] = _0xcef5x10["getGridFoodValue"]();
  312.             _0xcef5x2f = _0xcef5x32;
  313.             _0xcef5x30 = _0xcef5x33;
  314.             _0xcef5x31["style"]["top"] = _0xcef5x32 * _0xcef5x10["getBlockHeight"]() + "px";
  315.             _0xcef5x31["style"]["left"] = _0xcef5x33 * _0xcef5x10["getBlockWidth"]() + "px";
  316.         };
  317.     };
  318. })();
  319. SNAKE["Board"] = SNAKE["Board"] || (function () {
  320.     var _0xcef5x6 = 0;
  321.  
  322.     function _0xcef5x9(_0xcef5xa) {
  323.         var _0xcef5xb = 0,
  324.             _0xcef5xc = 0,
  325.             _0xcef5xd;
  326.         for (_0xcef5xd in _0xcef5xa) {
  327.             if (_0xcef5xa[_0xcef5xd]["elm"]["currentStyle"]) {
  328.                 _0xcef5xc = parseFloat(_0xcef5xa[_0xcef5xd]["elm"]["style"]["z-index"], 10);
  329.             } else {
  330.                 if (window["getComputedStyle"]) {
  331.                     _0xcef5xc = parseFloat(document["defaultView"]["getComputedStyle"](_0xcef5xa[_0xcef5xd]["elm"], null)["getPropertyValue"]("z-index"), 10);
  332.                 };
  333.             }; if (!isNaN(_0xcef5xc) && _0xcef5xc > _0xcef5xb) {
  334.                 _0xcef5xb = _0xcef5xc;
  335.             };
  336.         };
  337.         return (_0xcef5xb + 1);
  338.     };
  339.  
  340.     function _0xcef5x37() {
  341.         var _0xcef5x38 = 0;
  342.         if (typeof window["innerWidth"] === "number") {
  343.             _0xcef5x38 = window["innerWidth"];
  344.         } else {
  345.             if (document["documentElement"] && (document["documentElement"]["clientWidth"] || document["documentElement"]["clientHeight"])) {
  346.                 _0xcef5x38 = document["documentElement"]["clientWidth"];
  347.             } else {
  348.                 if (document["body"] && (document["body"]["clientWidth"] || document["body"]["clientHeight"])) {
  349.                     _0xcef5x38 = document["body"]["clientWidth"];
  350.                 };
  351.             };
  352.         };
  353.         return _0xcef5x38;
  354.     };
  355.  
  356.     function _0xcef5x39() {
  357.         var _0xcef5x3a = 0;
  358.         if (typeof window["innerHeight"] === "number") {
  359.             _0xcef5x3a = window["innerHeight"];
  360.         } else {
  361.             if (document["documentElement"] && (document["documentElement"]["clientWidth"] || document["documentElement"]["clientHeight"])) {
  362.                 _0xcef5x3a = document["documentElement"]["clientHeight"];
  363.             } else {
  364.                 if (document["body"] && (document["body"]["clientWidth"] || document["body"]["clientHeight"])) {
  365.                     _0xcef5x3a = document["body"]["clientHeight"];
  366.                 };
  367.             };
  368.         };
  369.         return _0xcef5x3a;
  370.     };
  371.     return function (_0xcef5x3b) {
  372.         var _0xcef5xf = this,
  373.             _0xcef5x11 = _0xcef5x6++,
  374.             _0xcef5xe = _0xcef5x3b || {}, _0xcef5x3c = 250,
  375.             _0xcef5x3d = 250,
  376.             _0xcef5x3e = 20,
  377.             _0xcef5x3f = 20,
  378.             _0xcef5x40 = -1,
  379.             _0xcef5x41, _0xcef5x42, _0xcef5x43 = 1,
  380.             _0xcef5x44, _0xcef5x45, _0xcef5x46, _0xcef5x47, _0xcef5x48, _0xcef5x49, _0xcef5x4a;
  381.         _0xcef5xf["grid"] = [];
  382.  
  383.         function _0xcef5x4b() {
  384.             _0xcef5x46 = document["createElement"]("div");
  385.             _0xcef5x46["setAttribute"]("id", "playingField");
  386.             _0xcef5x46["className"] = "snake-playing-field";
  387.             SNAKE["addEventListener"](_0xcef5x46, "click", function () {
  388.                 _0xcef5x45["focus"]();
  389.             }, false);
  390.             _0xcef5x47 = document["createElement"]("div");
  391.             _0xcef5x47["className"] = "snake-panel-component";
  392.             _0xcef5x47["innerHTML"] = "";
  393.             _0xcef5x48 = document["createElement"]("div");
  394.             _0xcef5x48["className"] = "snake-panel-component";
  395.             _0xcef5x48["innerHTML"] = "Length: 1";
  396.             _0xcef5x49 = _0xcef5x4f();
  397.             _0xcef5x4a = _0xcef5x56();
  398.             SNAKE["addEventListener"](_0xcef5x45, "keyup", function (_0xcef5x4c) {
  399.                 if (!_0xcef5x4c) {
  400.                     var _0xcef5x4c = window["event"];
  401.                 };
  402.                 _0xcef5x4c["cancelBubble"] = true;
  403.                 if (_0xcef5x4c["stopPropagation"]) {
  404.                     _0xcef5x4c["stopPropagation"]();
  405.                 };
  406.                 if (_0xcef5x4c["preventDefault"]) {
  407.                     _0xcef5x4c["preventDefault"]();
  408.                 };
  409.                 return false;
  410.             }, false);
  411.             _0xcef5x45["className"] = "snake-game-container";
  412.             _0xcef5x45["appendChild"](_0xcef5x46);
  413.             _0xcef5x45["appendChild"](_0xcef5x47);
  414.             _0xcef5x45["appendChild"](_0xcef5x48);
  415.             _0xcef5x45["appendChild"](_0xcef5x49);
  416.             _0xcef5x45["appendChild"](_0xcef5x4a);
  417.             _0xcef5x42 = new SNAKE.Snake({
  418.                 playingBoard: _0xcef5xf,
  419.                 startRow: 2,
  420.                 startCol: 2
  421.             });
  422.             _0xcef5x41 = new SNAKE.Food({
  423.                 playingBoard: _0xcef5xf
  424.             });
  425.             _0xcef5x49["style"]["zIndex"] = 1000;
  426.         };
  427.  
  428.         function _0xcef5x4d() {
  429.             return _0xcef5x3c * _0xcef5xf["getBlockWidth"]();
  430.         };
  431.  
  432.         function _0xcef5x4e() {
  433.             return _0xcef5x3d * _0xcef5xf["getBlockHeight"]();
  434.         };
  435.  
  436.         function _0xcef5x4f() {
  437.             var _0xcef5x50 = document["createElement"]("div");
  438.             _0xcef5x50["id"] = "sbWelcome" + _0xcef5x11;
  439.             _0xcef5x50["className"] = "snake-welcome-dialog";
  440.             var _0xcef5x51 = document["createElement"]("div");
  441.             var _0xcef5x52 = "";
  442.             if (_0xcef5xe["fullScreen"]) {
  443.                 _0xcef5x52 = "On Windows, press F11 to play in Full Screen mode.";
  444.             };
  445.             _0xcef5x51["innerHTML"] = "Welcome!<p></p><p>You need to be registered user to be able to save game results and manage personal statistics. <b><a href=\"./cgi-bin/index.pl\">Register here</a></b></p>";
  446.             var _0xcef5x53 = document["createElement"]("button");
  447.             _0xcef5x53["appendChild"](document["createTextNode"]("Play Game"));
  448.             var _0xcef5x54 = function () {
  449.                 SNAKE["removeEventListener"](window, "keyup", _0xcef5x55, false);
  450.                 _0xcef5x50["style"]["display"] = "none";
  451.                 _0xcef5xf["setBoardState"](1);
  452.                 _0xcef5xf["getBoardContainer"]()["focus"]();
  453.             };
  454.             var _0xcef5x55 = function (_0xcef5x4c) {
  455.                 if (!_0xcef5x4c) {
  456.                     var _0xcef5x4c = window["event"];
  457.                 };
  458.                 var _0xcef5x20 = (_0xcef5x4c["which"]) ? _0xcef5x4c["which"] : _0xcef5x4c["keyCode"];
  459.                 if (_0xcef5x20 === 32 || _0xcef5x20 === 13) {
  460.                     _0xcef5x54();
  461.                 };
  462.             };
  463.             SNAKE["addEventListener"](window, "keyup", _0xcef5x55, false);
  464.             SNAKE["addEventListener"](_0xcef5x53, "click", _0xcef5x54, false);
  465.             _0xcef5x50["appendChild"](_0xcef5x51);
  466.             _0xcef5x50["appendChild"](_0xcef5x53);
  467.             return _0xcef5x50;
  468.         };
  469.  
  470.         function _0xcef5x56() {
  471.             var _0xcef5x50 = document["createElement"]("div");
  472.             _0xcef5x50["id"] = "sbTryAgain" + _0xcef5x11;
  473.             _0xcef5x50["className"] = "snake-try-again-dialog";
  474.             var _0xcef5x57 = document["createElement"]("div");
  475.             _0xcef5x57["innerHTML"] = "<b>Submit score</b><br>Your login:";
  476.             var _0xcef5x58 = document["createElement"]("input");
  477.             _0xcef5x58["setAttribute"]("id", "playername");
  478.             var _0xcef5x59 = document["createElement"]("button");
  479.             _0xcef5x59["appendChild"](document["createTextNode"]("Submit"));
  480.             var _0xcef5x5a = function () {
  481.                 _0xcef5x50["style"]["display"] = "none";
  482.                 _0xcef5xf["resetBoard"]();
  483.                 _0xcef5xf["setBoardState"](1);
  484.                 _0xcef5xf["getBoardContainer"]()["focus"]();
  485.             };
  486.             var _0xcef5x5b = function () {
  487.                 var _0xcef5x5c = new XMLHttpRequest();
  488.                 var _0xcef5x5d = document["getElementById"]("playername");
  489.                 var _0xcef5x5e = _0xcef5x42["snakeLength"];
  490.                 var _0xcef5x5f = "playerName=" + encodeURIComponent(_0xcef5x5d["value"]) + "&playerScore=" + encodeURIComponent(_0xcef5x5e) + "&hash=" + hex_md5(_0xcef5x5e + _0xcef5x5d["value"] + "pc8XW2xUJcWMFVGkZ5PL");
  491.                 _0xcef5x5c["open"]("POST", "/cgi-bin/save.pl", false);
  492.                 _0xcef5x5c["setRequestHeader"]("Content-Type", "application/x-www-form-urlencoded");
  493.                 _0xcef5x5c["send"](_0xcef5x5f);
  494.                 var _0xcef5x60 = _0xcef5x5c["responseText"];
  495.                 _0xcef5x5d["value"] = "";
  496.                 _0xcef5x5a();
  497.             };
  498.             var _0xcef5x61 = function (_0xcef5x4c) {
  499.                 if (_0xcef5x43 !== 0 || _0xcef5x50["style"]["display"] !== "block") {
  500.                     return;
  501.                 };
  502.                 if (!_0xcef5x4c) {
  503.                     var _0xcef5x4c = window["event"];
  504.                 };
  505.                 var _0xcef5x20 = (_0xcef5x4c["which"]) ? _0xcef5x4c["which"] : _0xcef5x4c["keyCode"];
  506.                 if (_0xcef5x20 === 32 || _0xcef5x20 === 13) {
  507.                     _0xcef5x5a();
  508.                 };
  509.             };
  510.             SNAKE["addEventListener"](window, "keyup", _0xcef5x61, true);
  511.             SNAKE["addEventListener"](_0xcef5x59, "click", _0xcef5x5b, false);
  512.             _0xcef5x50["appendChild"](_0xcef5x57);
  513.             _0xcef5x50["appendChild"](_0xcef5x58);
  514.             _0xcef5x50["appendChild"](_0xcef5x59);
  515.             return _0xcef5x50;
  516.         };
  517.         _0xcef5xf["resetBoard"] = function () {
  518.             SNAKE["removeEventListener"](_0xcef5x45, "keydown", _0xcef5x44, false);
  519.             _0xcef5x42["reset"]();
  520.             _0xcef5x48["innerHTML"] = "Length: 1";
  521.             _0xcef5xf["setupPlayingField"]();
  522.         };
  523.         _0xcef5xf["getBoardState"] = function () {
  524.             return _0xcef5x43;
  525.         };
  526.         _0xcef5xf["setBoardState"] = function (_0xcef5x62) {
  527.             _0xcef5x43 = _0xcef5x62;
  528.         };
  529.         _0xcef5xf["getGridFoodValue"] = function () {
  530.             return _0xcef5x40;
  531.         };
  532.         _0xcef5xf["getPlayingFieldElement"] = function () {
  533.             return _0xcef5x46;
  534.         };
  535.         _0xcef5xf["setBoardContainer"] = function (_0xcef5x63) {
  536.             if (typeof _0xcef5x63 === "string") {
  537.                 _0xcef5x63 = document["getElementById"](_0xcef5x63);
  538.             };
  539.             if (_0xcef5x63 === _0xcef5x45) {
  540.                 return;
  541.             };
  542.             _0xcef5x45 = _0xcef5x63;
  543.             _0xcef5x46 = null;
  544.             _0xcef5xf["setupPlayingField"]();
  545.         };
  546.         _0xcef5xf["getBoardContainer"] = function () {
  547.             return _0xcef5x45;
  548.         };
  549.         _0xcef5xf["getBlockWidth"] = function () {
  550.             return _0xcef5x3e;
  551.         };
  552.         _0xcef5xf["getBlockHeight"] = function () {
  553.             return _0xcef5x3f;
  554.         };
  555.         _0xcef5xf["setupPlayingField"] = function () {
  556.             if (!_0xcef5x46) {
  557.                 _0xcef5x4b();
  558.             };
  559.             var _0xcef5x64, _0xcef5x65;
  560.             if (_0xcef5xe["fullScreen"] === true) {
  561.                 cTop = 0;
  562.                 cLeft = 0;
  563.                 _0xcef5x64 = _0xcef5x37() - 5;
  564.                 _0xcef5x65 = _0xcef5x39() - 5;
  565.                 document["body"]["style"]["backgroundColor"] = "#FC5454";
  566.             } else {
  567.                 cTop = _0xcef5xe["top"];
  568.                 cLeft = _0xcef5xe["left"];
  569.                 _0xcef5x64 = _0xcef5xe["width"];
  570.                 _0xcef5x65 = _0xcef5xe["height"];
  571.             };
  572.             var _0xcef5x66 = _0xcef5xf["getBlockWidth"]() * 2 + (_0xcef5x64 % _0xcef5xf["getBlockWidth"]());
  573.             var _0xcef5x67 = Math["min"](_0xcef5x4d() - _0xcef5x66, _0xcef5x64 - _0xcef5x66);
  574.             var _0xcef5x68 = _0xcef5xf["getBlockHeight"]() * 3 + (_0xcef5x65 % _0xcef5xf["getBlockHeight"]());
  575.             var _0xcef5x69 = Math["min"](_0xcef5x4e() - _0xcef5x68, _0xcef5x65 - _0xcef5x68);
  576.             _0xcef5x45["style"]["left"] = cLeft + "px";
  577.             _0xcef5x45["style"]["top"] = cTop + "px";
  578.             _0xcef5x45["style"]["width"] = _0xcef5x64 + "px";
  579.             _0xcef5x45["style"]["height"] = _0xcef5x65 + "px";
  580.             _0xcef5x46["style"]["left"] = _0xcef5xf["getBlockWidth"]() + "px";
  581.             _0xcef5x46["style"]["top"] = _0xcef5xf["getBlockHeight"]() + "px";
  582.             _0xcef5x46["style"]["width"] = _0xcef5x67 + "px";
  583.             _0xcef5x46["style"]["height"] = _0xcef5x69 + "px";
  584.             var _0xcef5x6a = _0xcef5x68 - _0xcef5xf["getBlockHeight"]();
  585.             var _0xcef5x6b = _0xcef5xf["getBlockHeight"]() + _0xcef5x69 + Math["round"]((_0xcef5x6a - 30) / 2) + "px";
  586.             _0xcef5x47["style"]["top"] = _0xcef5x6b;
  587.             _0xcef5x47["style"]["width"] = "450px";
  588.             _0xcef5x47["style"]["left"] = Math["round"](_0xcef5x64 / 2) - Math["round"](450 / 2) + "px";
  589.             _0xcef5x48["style"]["top"] = _0xcef5x6b;
  590.             _0xcef5x48["style"]["left"] = _0xcef5x64 - 120 + "px";
  591.             if (_0xcef5x64 < 700) {
  592.                 _0xcef5x47["style"]["display"] = "none";
  593.             } else {
  594.                 _0xcef5x47["style"]["display"] = "block";
  595.             };
  596.             _0xcef5xf["grid"] = [];
  597.             var _0xcef5x6c = _0xcef5x67 / _0xcef5xf["getBlockWidth"]() + 2;
  598.             var _0xcef5x6d = _0xcef5x69 / _0xcef5xf["getBlockHeight"]() + 2;
  599.             for (var _0xcef5x32 = 0; _0xcef5x32 < _0xcef5x6d; _0xcef5x32++) {
  600.                 _0xcef5xf["grid"][_0xcef5x32] = [];
  601.                 for (var _0xcef5x33 = 0; _0xcef5x33 < _0xcef5x6c; _0xcef5x33++) {
  602.                     if (_0xcef5x33 === 0 || _0xcef5x32 === 0 || _0xcef5x33 === (_0xcef5x6c - 1) || _0xcef5x32 === (_0xcef5x6d - 1)) {
  603.                         _0xcef5xf["grid"][_0xcef5x32][_0xcef5x33] = 1;
  604.                     } else {
  605.                         _0xcef5xf["grid"][_0xcef5x32][_0xcef5x33] = 0;
  606.                     };
  607.                 };
  608.             };
  609.             _0xcef5x41["randomlyPlaceFood"]();
  610.             _0xcef5x44 = function (_0xcef5x4c) {
  611.                 if (!_0xcef5x4c) {
  612.                     var _0xcef5x4c = window["event"];
  613.                 };
  614.                 var _0xcef5x20 = (_0xcef5x4c["which"]) ? _0xcef5x4c["which"] : _0xcef5x4c["keyCode"];
  615.                 if (_0xcef5xf["getBoardState"]() === 1) {
  616.                     if (!(_0xcef5x20 >= 37 && _0xcef5x20 <= 40)) {
  617.                         return;
  618.                     };
  619.                     SNAKE["removeEventListener"](_0xcef5x45, "keydown", _0xcef5x44, false);
  620.                     _0xcef5x44 = function (_0xcef5x4c) {
  621.                         if (!_0xcef5x4c) {
  622.                             var _0xcef5x4c = window["event"];
  623.                         };
  624.                         var _0xcef5x20 = (_0xcef5x4c["which"]) ? _0xcef5x4c["which"] : _0xcef5x4c["keyCode"];
  625.                         _0xcef5x42["handleArrowKeys"](_0xcef5x20);
  626.                         _0xcef5x4c["cancelBubble"] = true;
  627.                         if (_0xcef5x4c["stopPropagation"]) {
  628.                             _0xcef5x4c["stopPropagation"]();
  629.                         };
  630.                         if (_0xcef5x4c["preventDefault"]) {
  631.                             _0xcef5x4c["preventDefault"]();
  632.                         };
  633.                         return false;
  634.                     };
  635.                     SNAKE["addEventListener"](_0xcef5x45, "keydown", _0xcef5x44, false);
  636.                     _0xcef5x42["rebirth"]();
  637.                     _0xcef5x42["handleArrowKeys"](_0xcef5x20);
  638.                     _0xcef5xf["setBoardState"](2);
  639.                     _0xcef5x42["go"]();
  640.                 };
  641.                 _0xcef5x4c["cancelBubble"] = true;
  642.                 if (_0xcef5x4c["stopPropagation"]) {
  643.                     _0xcef5x4c["stopPropagation"]();
  644.                 };
  645.                 if (_0xcef5x4c["preventDefault"]) {
  646.                     _0xcef5x4c["preventDefault"]();
  647.                 };
  648.                 return false;
  649.             };
  650.             SNAKE["addEventListener"](_0xcef5x45, "keydown", _0xcef5x44, false);
  651.         };
  652.         _0xcef5xf["foodEaten"] = function () {
  653.             _0xcef5x48["innerHTML"] = "Length: " + _0xcef5x42["snakeLength"];
  654.             _0xcef5x41["randomlyPlaceFood"]();
  655.         };
  656.         _0xcef5xf["handleDeath"] = function () {
  657.             var _0xcef5x28 = Math["max"](_0xcef5x9(_0xcef5x42["snakeBody"]), _0xcef5x9({
  658.                 tmp: {
  659.                     elm: _0xcef5x41["getFoodElement"]()
  660.                 }
  661.             }));
  662.             _0xcef5x45["removeChild"](_0xcef5x4a);
  663.             _0xcef5x45["appendChild"](_0xcef5x4a);
  664.             SNAKE["removeEventListener"](_0xcef5x45, "keydown", _0xcef5x44, false);
  665.             _0xcef5x4a["style"]["zIndex"] = _0xcef5x28;
  666.             _0xcef5x4a["style"]["display"] = "block";
  667.             _0xcef5xf["setBoardState"](0);
  668.         };
  669.         _0xcef5xe["fullScreen"] = (typeof _0xcef5xe["fullScreen"] === "undefined") ? false : _0xcef5xe["fullScreen"];
  670.         _0xcef5xe["top"] = (typeof _0xcef5xe["top"] === "undefined") ? 0 : _0xcef5xe["top"];
  671.         _0xcef5xe["left"] = (typeof _0xcef5xe["left"] === "undefined") ? 0 : _0xcef5xe["left"];
  672.         _0xcef5xe["width"] = (typeof _0xcef5xe["width"] === "undefined") ? 400 : _0xcef5xe["width"];
  673.         _0xcef5xe["height"] = (typeof _0xcef5xe["height"] === "undefined") ? 400 : _0xcef5xe["height"];
  674.         if (_0xcef5xe["fullScreen"]) {
  675.             SNAKE["addEventListener"](window, "resize", function () {
  676.                 _0xcef5xf["setupPlayingField"]();
  677.             }, false);
  678.         };
  679.         _0xcef5xf["setBoardState"](0);
  680.         if (_0xcef5xe["boardContainer"]) {
  681.             _0xcef5xf["setBoardContainer"](_0xcef5xe["boardContainer"]);
  682.         };
  683.     };
  684. })();
Advertisement
Add Comment
Please, Sign In to add comment