From 82a203c98bdede734948b1aa9af3c343a9a03bb5 Mon Sep 17 00:00:00 2001 From: nocturn9x Date: Tue, 17 Oct 2023 23:56:26 +0200 Subject: [PATCH] Remove debug echo statements. Rooks are now considered moved even when captured (castling) --- src/Chess/board.nim | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/src/Chess/board.nim b/src/Chess/board.nim index 9462e98..72f5223 100644 --- a/src/Chess/board.nim +++ b/src/Chess/board.nim @@ -1094,6 +1094,29 @@ proc doMove(self: ChessBoard, move: Move) = castlingAvailable.black.king = false else: discard + # Has a rook been captured? + let capture = self.getCapture(move) + if capture != emptyLocation(): + let piece = self.grid[capture.row, capture.col] + if piece.kind == Rook: + case piece.color: + of White: + if capture == piece.color.queenSideRook(): + # Queen side + castlingAvailable.white.queen = false + elif capture == piece.color.kingSideRook(): + # King side + castlingAvailable.white.king = false + of Black: + if capture == piece.color.queenSideRook(): + # Queen side + castlingAvailable.black.queen = false + elif capture == piece.color.kingSideRook(): + # King side + castlingAvailable.black.king = false + else: + # Unreachable + discard # Has the king moved? if move.piece.kind == King: case move.piece.color: @@ -1234,17 +1257,10 @@ proc isLegal(self: ChessBoard, move: Move): bool = if destination.kind != Empty and destination.color == self.getActiveColor(): return false - echo "A" - echo move.piece.color.longCastleKing() - echo move.startSquare - echo move.targetSquare - echo "B" if move.piece.kind == King and move.piece.color.longCastleKing() + move.startSquare == move.targetSquare: move.flag = CastleLong elif move.piece.kind == King and move.piece.color.shortCastleKing() + move.startSquare == move.targetSquare: move.flag = CastleShort - echo move - echo self.generateMoves(move.startSquare) if move notin self.generateMoves(move.startSquare): # Piece cannot arrive to destination (blocked # or otherwise invalid move)