diff options
Diffstat (limited to 'public')
-rw-r--r-- | public/board.js | 21 | ||||
-rw-r--r-- | public/make_move.js | 45 | ||||
-rw-r--r-- | public/move.js | 26 |
3 files changed, 80 insertions, 12 deletions
diff --git a/public/board.js b/public/board.js index bd39363..785efff 100644 --- a/public/board.js +++ b/public/board.js @@ -56,8 +56,7 @@ function handle_move(from_id, to_id) { prev_y_x.push([from_y, from_x]) new_y_x.push([to_y, to_x]) - if(Math.abs(from) == 1 && to == 0){ - console.log("valid") + if (Math.abs(from) == 1 && to == 0) { if (castle_white_short && from_color && to_y == 7 && to_x == 6) { //white short prev_y_x.push([7, 7]) new_y_x.push([7, 5]) @@ -101,6 +100,24 @@ function handle_move(from_id, to_id) { make_move(board, prev_y_x, new_y_x) + if (en_passant_move >= 0) { + if (from_color) { + let passanted_pawn = document.getElementById(`3${en_passant_move}`) + + while (passanted_pawn.firstChild) { + passanted_pawn.removeChild(passanted_pawn.firstChild) + } + } else { + let passanted_pawn = document.getElementById(`4${en_passant_move}`) + + while (passanted_pawn.firstChild) { + passanted_pawn.removeChild(passanted_pawn.firstChild) + } + } + + en_passant_move = -1 + } + let from_element = document.getElementById(from_id) let to_element = document.getElementById(to_id) diff --git a/public/make_move.js b/public/make_move.js index 6233ed0..07bda02 100644 --- a/public/make_move.js +++ b/public/make_move.js @@ -12,27 +12,58 @@ function make_move(board, prev_y_x, new_y_x) { + if ((board[prev_y_x[0][0]][prev_y_x[0][1]] == 6 || board[prev_y_x[0][0]][prev_y_x[0][1]] == -6) && board[new_y_x[0][0]][new_y_x[0][1]] == 0 && new_y_x[0][1] != prev_y_x[0][1]) { + console.log("passant") + console.log(en_passant) + + if (board[prev_y_x[0][0]][prev_y_x[0][1]] == 6) { + board[3][en_passant] = 0 + } else { + board[4][en_passant] = 0 + } + + en_passant_move = en_passant + } + + en_passant = -1 + for (let i = 0; i < new_y_x.length; i++) { + if (board[prev_y_x[i][0]][prev_y_x[i][1]] == 6 && prev_y_x[i][0] - new_y_x[i][0] == 2) { + en_passant = prev_y_x[i][1] + } + + if (board[prev_y_x[i][0]][prev_y_x[i][1]] == -6 && prev_y_x[i][0] - new_y_x[i][0] == -2) { + en_passant = prev_y_x[i][1] + } + + board[new_y_x[i][0]][new_y_x[i][1]] = board[prev_y_x[i][0]][prev_y_x[i][1]] } for (let i = 0; i < prev_y_x.length; i++) { let color = board[prev_y_x[i][0]][prev_y_x[i][1]] > 0 - if(Math.abs(board[prev_y_x[i][0]][prev_y_x[i][1]]) == 1){ - if(color) castle_white_short = castle_white_long = false + if (Math.abs(board[prev_y_x[i][0]][prev_y_x[i][1]]) == 1) { + if (color) castle_white_short = castle_white_long = false else castle_black_short = castle_black_long = false - } else if(Math.abs(board[prev_y_x[i][0]][prev_y_x[i][1]]) == 3){ - if(prev_y_x[i][1] == 0){ - if(color) castle_white_long = false + } else if (Math.abs(board[prev_y_x[i][0]][prev_y_x[i][1]]) == 3) { + if (prev_y_x[i][1] == 0) { + if (color) castle_white_long = false else castle_black_long = false - } else if (prev_y_x[i][1] == 7){ - if(color) castle_white_short = false + } else if (prev_y_x[i][1] == 7) { + if (color) castle_white_short = false else castle_black_short = false } } board[prev_y_x[i][0]][prev_y_x[i][1]] = 0 } + + check = check_check(board, to_move, check) + if (check) { + console.log("check") + } + + console.log(board) } diff --git a/public/move.js b/public/move.js index 87de976..294ace5 100644 --- a/public/move.js +++ b/public/move.js @@ -15,12 +15,14 @@ let check = false //console.log(board[7][1]) //console.log(move(board, 4, 4, to_move)) - let castle_white_short = true let castle_white_long = true let castle_black_short = true let castle_black_long = true +let en_passant = -1 +let en_passant_move = -1 + function check_check(board, to_move, check) { let king_position = [] @@ -160,6 +162,24 @@ function pawn_move(board, y, x) { } } + if (en_passant > 0 && color && y == 3) { + if (x - 1 == en_passant) { + moves.push([2, x - 1]) + } + if (x + 1 == en_passant) { + moves.push([2, x + 1]) + } + } + + if (en_passant > 0 && !color && y == 4) { + if (x - 1 == en_passant) { + moves.push([5, x - 1, 1]) + } + if (x + 1 == en_passant) { + moves.push([5, x + 1, 1]) + } + } + return moves } @@ -168,7 +188,7 @@ function king_move(board, y, x) { let moves = [] let controlled = controlled_squares(board, to_move) - + 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) { @@ -179,7 +199,7 @@ function king_move(board, y, x) { } } } - + if (color && castle_white_short && board[7][6] == 0 && board[7][5] == 0) { for (let i = 0; i < controlled.length; i++) { if ((controlled[i][0] == 7 && controlled[i][1] == 6) || (controlled[i][0] == 7 && controlled[i][1] == 5)) { |