перебор двухмерного массива n+1
Здравствуйте, есть такой код:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #game { padding-left: 15px; padding-top: 15px; width: 220px; height: 220px; background: orangered; } .block { width: 70px; height: 70px; float: left; border: 1px solid white; box-sizing: border-box; line-height: 70px; text-align: center; font-size: 50px; text-transform: uppercase; } </style> </head> <body> <div id="game"></div> <script> var kvadratiki = []; pole(); var i; var j; function pole() { for (var i=0; i<3; i++) { kvadratiki[i]=[]; for (var j=0; j<3; j++) { kvadratiki[i][j] = document.getElementById('game').innerHTML+='<div class="block"></div>'; }; }; }; var hod = 0; document.getElementById('game').onclick = function(event){ console.log(event); if (event.target.className == 'block'){ if (hod%2==0) { event.target.innerHTML = 'x'; } else { event.target.innerHTML = '0'; } hod++; checkWinner(); } } var n; var m; function checkWinner(){ var block = document.getElementsByClassName('block'); for (var n=0; n<i; n++) { for (var m=0; m<j; m++) { if (kvadratiki[n][m] == kvadratiki[n+1][m+1] && 'x') { alert('X WINS') } } } }; </script> </body> </html> Поле 3 на 3, при нажатии - ставится крестик или нолик, по правилам игры хочу сделать проверку, если в ряд, в столбик, или по диагонали крестики или нолики - выводить алерт. Допустим поле n-ное, оно может быть 3 на 3 или 100 на 100. Хочу сделать проверку. К примеру поле 3 на 3, получается поле ij: 00 01 02 10 11 12 20 21 22 - вроде правильно обозначил, не могу догнать как вытащить из этого массива на проверку элементы типа (по диагонали) - [0][0], [1][1], [2][2], получается здесь [i][j],[i+1][j+1] и так далее, беру в учет, если квадратов много. ну и наподобие в ряд или столбик: [i][j], [i][j+1] [i][j], [i+1][j] |
var a = document.querySelectorAll('div').length // количество ячеек var b = Math.sqrt(a); // количество строк или столбцов можете эти значения получить уже из имеющихся у вас переменных |
Цитата:
|
правильно ли я обращаюсь к блокам ?
первый столбик допустим: var block = document.getElementsByClassName('block'); if (block[0][0].innerHTML=='x' && block[1][0].innerHTML=='x' && block[2][0].innerHTML=='x') alert('Победили крестики'); но пишет что undefined |
все потому что к коллекции так не обращаются
var block = document.getElementsByClassName('block'); Это дня данного размера |
Цитата:
|
нужно для этого сначала создать такой массив
arr[a][b] = block[i]; потом можно будет обращаться как к многомерному массиву. |
Часовой пояс GMT +3, время: 16:04. |