From a7e11ff8f729a669d8b2445f066606302ecb1b46 Mon Sep 17 00:00:00 2001 From: IgrisBRC Date: Tue, 16 Jul 2024 22:24:49 +0530 Subject: added castling ;) --- public/board.js | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++-- public/make_move.js | 24 +++++++++---- 2 files changed, 115 insertions(+), 8 deletions(-) diff --git a/public/board.js b/public/board.js index 625be4a..7fc8bec 100644 --- a/public/board.js +++ b/public/board.js @@ -35,7 +35,56 @@ function handle_move(from_id, to_id) { return function() { let table = { 1: 'K', 2: 'Q', 3: 'R', 4: 'B', 5: 'N', 6: 'p' } - make_move(board, from_id.charCodeAt(0) - 48, from_id.charCodeAt(1) - 48, to_id.charCodeAt(0) - 48, to_id.charCodeAt(1) - 48) + let castle = false + let castle_rook_move = [] + + let prev_y_x = [] + let new_y_x = [] + + prev_y_x.push([from_id.charCodeAt(0) - 48, from_id.charCodeAt(1) - 48]) + new_y_x.push([to_id.charCodeAt(0) - 48, to_id.charCodeAt(1) - 48]) + + if (board[from_id.charCodeAt(0) - 48][from_id.charCodeAt(1) - 48] == 1 && to_id.charCodeAt(0) - 48 == 7 && to_id.charCodeAt(1) - 48 == 6) { + prev_y_x.push([7, 7]) + new_y_x.push([7, 5]) + + castle_rook_move.push([7, 7]) + castle_rook_move.push([7, 5]) + + castle = true + } + + else if (board[from_id.charCodeAt(0) - 48][from_id.charCodeAt(1) - 48] == 1 && to_id.charCodeAt(0) - 48 == 7 && to_id.charCodeAt(1) - 48 == 2) { + prev_y_x.push([7, 0]) + new_y_x.push([7, 3]) + + castle_rook_move.push([7, 0]) + castle_rook_move.push([7, 3]) + + castle = true + } + + else if (board[from_id.charCodeAt(0) - 48][from_id.charCodeAt(1) - 48] == -1 && to_id.charCodeAt(0) - 48 == 0 && to_id.charCodeAt(1) - 48 == 6) { + prev_y_x.push([0, 7]) + new_y_x.push([0, 5]) + + castle_rook_move.push([0, 7]) + castle_rook_move.push([0, 5]) + + castle = true + } + + else if (board[from_id.charCodeAt(0) - 48][from_id.charCodeAt(1) - 48] == -1 && to_id.charCodeAt(0) - 48 == 0 && to_id.charCodeAt(1) - 48 == 2) { + prev_y_x.push([0, 0]) + new_y_x.push([0, 3]) + + castle_rook_move.push([0, 0]) + castle_rook_move.push([0, 3]) + + castle = true + } + + make_move(board, prev_y_x, new_y_x) let from_element = document.getElementById(from_id) let to_element = document.getElementById(to_id) @@ -48,6 +97,52 @@ function handle_move(from_id, to_id) { to_element.removeChild(to_element.firstChild) } + if (castle) { + let color = castle && to_move + castle = false + + if (color) { + + let from_element = document.getElementById(`${castle_rook_move[0][0]}${castle_rook_move[0][1]}`) + let to_element = document.getElementById(`${castle_rook_move[1][0]}${castle_rook_move[1][1]}`) + + while (from_element.firstChild) { + from_element.removeChild(from_element.firstChild) + } + + while (to_element.firstChild) { + to_element.removeChild(to_element.firstChild) + } + + let piece = document.createElement('p') + + piece.classList.add(board[castle_rook_move[1][0]][castle_rook_move[1][1]] > 0 ? 'w' : 'b', 'piece') + piece.append(table[Math.abs(board[castle_rook_move[1][0]][castle_rook_move[1][1]])]) + to_element.append(piece) + + } else { + + + let from_element = document.getElementById(`${castle_rook_move[0][0]}${castle_rook_move[0][1]}`) + let to_element = document.getElementById(`${castle_rook_move[1][0]}${castle_rook_move[1][1]}`) + + while (from_element.firstChild) { + from_element.removeChild(from_element.firstChild) + } + + while (to_element.firstChild) { + to_element.removeChild(to_element.firstChild) + } + + let piece = document.createElement('p') + + piece.classList.add(board[castle_rook_move[1][0]][castle_rook_move[1][1]] > 0 ? 'w' : 'b', 'piece') + piece.append(table[Math.abs(board[castle_rook_move[1][0]][castle_rook_move[1][1]])]) + to_element.append(piece) + + } + } + let piece = document.createElement('p') piece.classList.add(board[to_id.charCodeAt(0) - 48][to_id.charCodeAt(1) - 48] > 0 ? 'w' : 'b', 'piece') piece.append(table[Math.abs(board[to_id.charCodeAt(0) - 48][to_id.charCodeAt(1) - 48])]) @@ -60,4 +155,4 @@ function handle_move(from_id, to_id) { to_move = !to_move } -} \ No newline at end of file +} diff --git a/public/make_move.js b/public/make_move.js index 07211dc..e00b999 100644 --- a/public/make_move.js +++ b/public/make_move.js @@ -1,11 +1,23 @@ -function make_move(board, y ,x, new_y, new_x) { - board[new_y][new_x] = board[y][x] - board[y][x] = 0 +//function make_move(board, y, x, new_y, new_x) { +// +// board[new_y][new_x] = board[y][x] +// board[y][x] = 0 +// +// check = check_check(board, to_move, check) +// +// if (check) { +// console.log("check") +// } +//} - check = check_check(board, to_move, check) +function make_move(board, prev_y_x, new_y_x) { - if (check) { - console.log("check") + for (let i = 0; i < new_y_x.length; i++) { + 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++) { + board[prev_y_x[i][0]][prev_y_x[i][1]] = 0 } } -- cgit v1.2.3