From f0467bc516ecd06a10f146d9fdbbd1537c183d81 Mon Sep 17 00:00:00 2001 From: Karma Riuk Date: Sun, 2 Feb 2025 23:34:10 +0100 Subject: [PATCH] make_move now handles castling --- cpp/src/board.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cpp/src/board.cpp b/cpp/src/board.cpp index a2d45da..6d9afa8 100644 --- a/cpp/src/board.cpp +++ b/cpp/src/board.cpp @@ -199,6 +199,24 @@ Board Board::make_move(Move move) const { } else { ret.en_passant_target = -1; } + + // -- Handle castling (just move the rook over) + if (move.castle_side & KingSide) { + Coords c = Coords::from_index(move.source_square); + Coords rook_source{7, c.y}; + int8_t old_rook = ret.squares[rook_source.to_index()]; + ret.squares[rook_source.to_index()] = Piece::None; + Coords rook_dest{5, c.y}; + ret.squares[rook_dest.to_index()] = old_rook; + } else if (move.castle_side & QueenSide) { + Coords c = Coords::from_index(move.source_square); + Coords rook_source{0, c.y}; + int8_t old_rook = ret.squares[rook_source.to_index()]; + ret.squares[rook_source.to_index()] = Piece::None; + Coords rook_dest{3, c.y}; + ret.squares[rook_dest.to_index()] = old_rook; + } + return ret; }