diff options
author | IgrisBRC <[email protected]> | 2024-07-07 18:15:31 +0530 |
---|---|---|
committer | IgrisBRC <[email protected]> | 2024-07-07 18:15:31 +0530 |
commit | 7dc9f827f468640f565aec8e6f2909ead18d6cdb (patch) | |
tree | ebfc17c0cf6f99932e8fbc001c398dc78d5d740f /app.js | |
parent | 7b8aa8b8b1b3f4447b82e344693ebf5b1e60ffe2 (diff) |
added the source code so far
Diffstat (limited to 'app.js')
-rw-r--r-- | app.js | 239 |
1 files changed, 239 insertions, 0 deletions
@@ -0,0 +1,239 @@ +let board = [ + [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, 0, 0], +] + +console.log(board.length) + +console.log(amelia_move(board, 3, 3)) + +function king_move(board, y, x) { + let moves = [] + + for (let i = y - 1; i <= y + 1; i += 1) { + for (let j = x - 1; j <= x + 1; j += 1) { + if ((i == y && j == x) || i < 0 || j < 0 || i >= board.length || j >= board[i].length) { + continue + } + if (board[i][j] == 0) { + moves.push([i, j]) + } + } + } + + return moves +} + +function knight_move(board, y, x) { + let moves = [] + + let cand = [ + [y + 2, x + 1], + [y + 2, x - 1], + [y + 1, x - 2], + [y + 1, x + 2], + [y - 2, x + 1], + [y - 2, x - 1], + [y - 1, x + 2], + [y - 1, x - 2], + ] + + for (let k = 0; k < cand.length; k++) { + if (cand[k][0] < 0 || cand[k][1] < 0 || cand[k][0] >= board.length || cand[k][1] >= board[cand[k][0]].length) { + continue + } + + if (board[i][j] == 0) { + moves.push([i, j]) + } + } + + return moves +} + + +function rook_move(board, y, x) { + let moves = [] + + for (let i = x + 1; i < board[1].length; i++) { + if (board[y][i] != 0) { + break + } + moves.push([y, i]) + } + + for (let i = x - 1; i >= 0; i--) { + if (board[y][i] != 0) { + break + } + moves.push([y, i]) + } + + + for (let i = y + 1; i < board.length; i++) { + if (board[i][x] != 0) { + break + } + moves.push([i, x]) + } + + for (let i = y - 1; i >= 0; i--) { + if (board[i][x] != 0) { + break + } + moves.push([i, x]) + } + + return moves +} + +function bishop_move(board, y, x) { + let moves = [] + + let i = y + 1; + let j = x + 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i += 1 + j += 1 + } + + i = y - 1; + j = x - 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i -= 1 + j -= 1 + } + + i = y - 1; + j = x + 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i -= 1 + j += 1 + } + + i = y + 1; + j = x - 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i += 1 + j -= 1 + } + + return moves +} + +function amelia_move(board, y, x) { + let moves = [] + + for (let i = x + 1; i < board[0].length; i++) { + if (board[y][i] != 0) { + break + } + moves.push([y, i]) + } + + for (let i = x - 1; i >= 0; i--) { + if (board[y][i] != 0) { + break + } + moves.push([y, i]) + } + + + for (let i = y + 1; i < board.length; i++) { + if (board[i][x] != 0) { + break + } + moves.push([i, x]) + } + + for (let i = y - 1; i >= 0; i--) { + if (board[i][x] != 0) { + break + } + moves.push([i, x]) + } + + let i = y + 1; + let j = x + 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i += 1 + j += 1 + } + + i = y - 1; + j = x - 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i -= 1 + j -= 1 + } + + i = y - 1; + j = x + 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i -= 1 + j += 1 + } + + i = y + 1; + j = x - 1; + + while (!(i < 0 || j < 0 || i >= board.length || j >= board[i].length)) { + if (board[i][j] != 0) { + break + } + + moves.push([i, j]) + i += 1 + j -= 1 + } + + return moves +} |