Transaction 1efeb214f54ed24d1401eda41ccb2d5c640783fd343a685fddb571dab5d02ea6
1 Input
-
9f5a252cdfe94cfedc1e279815d4998a8951e6599bf2050c60be0e060185a8fa:15
OP_DATA_32(32) 117f692257b2331233b5705ce9c682be8719ff1b2b64cbca290bd6faeb54423eOP_CHECKSIG(172)OP_DATA_6(6) #„‰OP_DROP(117)OP_0(0)OP_IF(99)OP_DATA_3(3) ordOP_DATA_1(1)OP_DATA_23(23) text/html;charset=utf-8OP_0(0)OP_PUSHDATA2(77) <html lang="en"> <head> <meta charset="UTF-8"> <title>Simple JavaScript Snake Game| Webdevtrick.com</title> <style> canvas { display: block; position: absolute; border: 5px solid #ff0; margin: auto; top: 0; bottom: 0; right: 0; left: 0; } </style> </head> <body> <script> var COLS = 26, ROWS = 26, EMPTY = 0, SNAKE = 1, FRUIT = 2, LEFT = 0, UP = 1, RIGHT = 2, DOWN = 3, KEY_LEFT = 37, KEY_UP = 38, KEY_RIGHT = 39, KEY_DOWN = 40, canvas, ctx,OP_PUSHDATA2(77) keystate, frames, score; grid = { width: null, height: null, _grid: null, init: function(d, c, r) { this.width = c; this.height = r; this._grid = []; for (var x=0; x < c; x++) { this._grid.push([]); for (var y=0; y < r; y++) { this._grid[x].push(d); } } }, set: function(val, x, y) { this._grid[x][y] = val; }, get: function(x, y) { return this._grid[x][y]; } } snake = { direction: null, last: null, _queueOP_PUSHDATA2(77) : null, init: function(d, x, y) { this.direction = d; this._queue = []; this.insert(x, y); }, insert: function(x, y) { this._queue.unshift({x:x, y:y}); this.last = this._queue[0]; }, remove: function() { return this._queue.pop(); } }; function setFood() { var empty = []; for (var x=0; x < grid.width; x++) { for (var y=0; y < grid.height; y++) { if (grid.get(x, y) === EMPTY) { empty.push({x:x, y:y}); } } } var randpos =OP_PUSHDATA2(77) empty[Math.round(Math.random()*(empty.length - 1))]; grid.set(FRUIT, randpos.x, randpos.y); } function main() { canvas = document.createElement("canvas"); canvas.width = COLS*20; canvas.height = ROWS*20; ctx = canvas.getContext("2d"); document.body.appendChild(canvas); ctx.font = "12px Helvetica"; frames = 0; keystate = {}; document.addEventListener("keydown", function(evt) { keystate[evt.keyCode] = true; }); document.addEventListener("keyup", function(evt) {OP_PUSHDATA2(77) delete keystate[evt.keyCode]; }); init(); loop(); } function init() { score = 0; grid.init(EMPTY, COLS, ROWS); var sp = {x:Math.floor(COLS/2), y:ROWS-1}; snake.init(UP, sp.x, sp.y); grid.set(SNAKE, sp.x, sp.y); setFood(); } function loop() { update(); draw(); window.requestAnimationFrame(loop, canvas); } function update() { frames++; if (keystate[KEY_LEFT] && snake.direction !== RIGHT) { snake.direction = LEFT; } if (keystate[KEY_UP]OP_PUSHDATA2(77) && snake.direction !== DOWN) { snake.direction = UP; } if (keystate[KEY_RIGHT] && snake.direction !== LEFT) { snake.direction = RIGHT; } if (keystate[KEY_DOWN] && snake.direction !== UP) { snake.direction = DOWN; } if (frames%7 === 0) { var nx = snake.last.x; var ny = snake.last.y; switch (snake.direction) { case LEFT: nx--; break; case UP: ny--; break; case RIGHT: nx++; break; case DOWN: ny++; break; } if (0 > nx || nx > grid.width-1 ||OP_PUSHDATA2(77) 0 > ny || ny > grid.height-1 || grid.get(nx, ny) === SNAKE ) { return init(); } if (grid.get(nx, ny) === FRUIT) { score++; setFood(); } else { var tail = snake.remove(); grid.set(EMPTY, tail.x, tail.y); } grid.set(SNAKE, nx, ny); snake.insert(nx, ny); } } function draw() { var tw = canvas.width/grid.width; var th = canvas.height/grid.height; for (var x=0; x < grid.width; x++) { for (var y=0; y < grid.height; y++) { switch (grid.get(x, y)) { caOP_PUSHDATA2(77) se EMPTY: ctx.fillStyle = "#000"; break; case SNAKE: ctx.fillStyle = "#0ff"; break; case FRUIT: ctx.fillStyle = "#ff8c00"; break; } ctx.fillRect(x*tw, y*th, tw, th); } } ctx.fillStyle = "#fff"; ctx.fillText("SCORE: " + score, 10, canvas.height-16); } main(); </script> </body> </html>OP_ENDIF(104)
1 Outputs
- 1efeb214f54ed24d1401eda41ccb2d5c640783fd343a685fddb571dab5d02ea6:0
value 546
address bc1qx7cqr6qq8nxr4hh3x8j8dzfqmg67kx6mss6e9y