[[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, %, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ %, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ]]
У меня есть доска 8x8, и я хочу проверить, находятся ли знаки% на одной вертикальной линии. Я знаю, как проверить, находятся ли они на одной горизонтальной линии (в том же массиве), но я не могу понять, как проверить диагонали и вертикали.
Вот мой полный код:
var whiteQueen = [2, 5];
var blackQueen = [5, 0];
var danger = false;
var board =
[
[0, 1, 2, 3, 4, 5, 6, 7],
[1, 1, 2, 3, 4, 5, 6, 7],
[2, 1, 2, 3, 4, 5, 6, 7],
[3, 1, 2, 3, 4, 5, 6, 7],
[4, 1, 2, 3, 4, 5, 6, 7],
[5, 1, 2, 3, 4, 5, 6, 7],
[6, 1, 2, 3, 4, 5, 6, 7],
[7, 1, 2, 3, 4, 5, 6, 7]
];
for (i = 0; i < 8; i++) { //plot white queen
if (whiteQueen[0] === i) {
for (j = 0; j < 8; j ++) {
if (whiteQueen[1] === j) {
board[i][j] = 'x';
}
}
}
}
for (i = 0; i < 8; i++) { //plot black queen
if (blackQueen[0] === i) {
for (j = 0; j < 8; j ++) {
if (blackQueen[1] === j) {
board[i][j] = 'x';
}
}
}
}
for (i = 0; i < 8; i++) { //reset board number guide
for (j = 0; j < 8; j++) {
if (typeof board[i][j] == 'number') {
board[i][j] = 0;
}
}
}
for (i = 0; i < 8; i++) { //re-plot queens
for (j = 0; j < 8; j++) {
if (board[i][j] === 'x') {
board[i][j] = 1;
}
}
}
for (i = 0; i < 8; i++) {
var sameLineCount = 0;
for (x = 0; x < 8; x++) {
if (board[i][x] == 'x') {
if () // no idea how to register a matching line/diagonal
sameLineCount += 1;
}
}
}
/*[ [ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 1, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 1, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ],
[ 0, 0, 0, 0, 0, 0, 0, 0 ] ]*/
Так что, в основном, это шахматная доска, и я беру массив координат и проверяю, находится ли какая-либо из королев в опасности. Я путаюсь со всеми циклами for, и я не совсем уверен, правильно ли я поступаю по этому поводу.