summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/board.js132
-rw-r--r--public/make_move.js15
-rw-r--r--public/move.js4
-rw-r--r--public/style.css3
4 files changed, 80 insertions, 74 deletions
diff --git a/public/board.js b/public/board.js
index 7fc8bec..4afaeb7 100644
--- a/public/board.js
+++ b/public/board.js
@@ -32,56 +32,71 @@ function handle_highlight(id) {
}
function handle_move(from_id, to_id) {
- return function() {
+ function fun() {
let table = { 1: 'K', 2: 'Q', 3: 'R', 4: 'B', 5: 'N', 6: 'p' }
+ let from_y = from_id.charCodeAt(0) - 48
+ let from_x = from_id.charCodeAt(1) - 48
+
+ let to_y = to_id.charCodeAt(0) - 48
+ let to_x = to_id.charCodeAt(1) - 48
+
+ let from = board[from_y][from_x]
+ let to = board[to_y][to_x]
+
+ let from_color = board[from_y][from_x] > 0
+ let to_color = board[to_y][to_x] > 0
+
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])
+ prev_y_x.push([from_y, from_x])
+ new_y_x.push([to_y, to_x])
- 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])
+ if(Math.abs(from) == 1 && to == 0){
+ console.log("valid")
+ 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])
- castle_rook_move.push([7, 7])
- castle_rook_move.push([7, 5])
+ castle_rook_move.push([7, 7])
+ castle_rook_move.push([7, 5])
- castle = true
- }
+ 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])
+ else if (castle_white_long && from_color && to_y == 7 && to_x == 2) { //white long
+ 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_rook_move.push([7, 0])
+ castle_rook_move.push([7, 3])
- castle = true
- }
+ 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])
+ else if (castle_black_short && !from_color && to_y == 0 && to_x == 6) { //black short
+ 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_rook_move.push([0, 7])
+ castle_rook_move.push([0, 5])
- castle = true
- }
+ 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])
+ else if (castle_black_long && !from_color && to_y == 0 && to_x == 2) { //black long
+ 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_rook_move.push([0, 0])
+ castle_rook_move.push([0, 3])
- castle = true
+ castle = true
+ }
}
make_move(board, prev_y_x, new_y_x)
@@ -98,54 +113,27 @@ function handle_move(from_id, to_id) {
}
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]}`)
- 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)
- }
+ while (from_element.firstChild) {
+ from_element.removeChild(from_element.firstChild)
+ }
- let piece = document.createElement('p')
+ while (to_element.firstChild) {
+ to_element.removeChild(to_element.firstChild)
+ }
- 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[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])])
+ piece.classList.add(board[to_y][to_x] > 0 ? 'w' : 'b', 'piece')
+ piece.append(table[Math.abs(board[to_y][to_x])])
to_element.append(piece)
for (let i = 0; i < highlighted_squares.length; i++) {
@@ -155,4 +143,6 @@ function handle_move(from_id, to_id) {
to_move = !to_move
}
+
+ return fun;
}
diff --git a/public/make_move.js b/public/make_move.js
index e00b999..6233ed0 100644
--- a/public/make_move.js
+++ b/public/make_move.js
@@ -17,6 +17,21 @@ function make_move(board, prev_y_x, new_y_x) {
}
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
+ 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 castle_black_long = 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
}
}
diff --git a/public/move.js b/public/move.js
index 59badf4..87de976 100644
--- a/public/move.js
+++ b/public/move.js
@@ -168,7 +168,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 +179,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)) {
diff --git a/public/style.css b/public/style.css
index 929af94..86510ea 100644
--- a/public/style.css
+++ b/public/style.css
@@ -6,7 +6,8 @@
.box{
height: 76px;
width: 76px;
- position: relative;
+ position: relative;
+ user-select: none;
}
.top-corner{
padding: 1px;