1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
| document.addEventListener('DOMContentLoaded', function() {
var gameover = false;
var symbols = { l: '←', u: '↑', r: '→', d: '↓', ul: '↖', ur: '↗', dr: '↘', dl: '↙' }
var $table = $('#moc-18'); for (var i = 0; i < 10; i++) { var $row = $('<tr>'); for (var j = 0; j < 10; j++) { $row.append($('<td>')); } $table.append($row); }
var hiddenX = rand(10); var hiddenY = rand(10);
var indexOf = Array.prototype.indexOf; indexOf = indexOf.call.bind(indexOf);
$table.on('click', 'td', function (ev) { $td = $(ev.target); if (gameover) { return; } var p = this.parentNode; var x = indexOf(p.childNodes, this); var y = indexOf(p.parentNode.childNodes, p);
if (x === hiddenX && y === hiddenY) { $td.addClass('found').text('X'); $table.addClass('gameover'); gameover = true; return; }
var indication = ''; if (y !== hiddenY) { indication += (y < hiddenY ? 'd' : 'u'); } if (x !== hiddenX) { indication += (x < hiddenX ? 'r' : 'l'); }
$td.addClass('discovered').html(symbols[indication]); move(); });
function move() { var td = $($table.find('tr')[hiddenY]).find('td')[hiddenX]; $(td).addClass('was-here');
var available = [ [-1, -1], [-1, 0], [-1, 1], [ 0, -1], [ 0, 1], [ 1, -1], [ 1, 0], [ 1, 1] ]; available = available.filter(function (m) { var x = hiddenX + m[0]; var y = hiddenY + m[1]; var td = $($table.find('tr')[y]).find('td')[x];
return x >= 0 && x < 10 && y >= 0 && y < 10 && ! $(td).hasClass('discovered'); }); console.log(available) if (available.length) { var pick = available[rand(available.length)]; console.log(pick) hiddenX += pick[0]; hiddenY += pick[1]; } }
function rand(min, max) { if (max == null) { max = min; min = 0; } return min + Math.floor(Math.random() * (max - min)); } });
|