From 1d6a6717ba088c3b89d50021f2bf6656eb564533 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 29 Jul 2026 16:18:52 +0200 Subject: implementing castling --- src/fen.cpp | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'src/fen.cpp') diff --git a/src/fen.cpp b/src/fen.cpp index 7597143..4b8686e 100644 --- a/src/fen.cpp +++ b/src/fen.cpp @@ -13,8 +13,6 @@ void setBoardFen(std::string fen, Game *b) { int file = 0; int rank = 0; - std::string castle = ""; - enum parserState { POSITION, TURN, @@ -53,15 +51,26 @@ void setBoardFen(std::string fen, Game *b) { } if (state == CASTLE) { if (fen[i] == '-') { - castle = "-"; + b->blackCastleKing = false; + b->blackCastleQueen = false; + b->whiteCastleKing = false; + b->whiteCastleQueen = false; continue; } - if (toupper(fen[i]) == 'K') { - castle += fen[i]; + if (fen[i] == 'K') { + b->whiteCastleKing = true; continue; } - if (toupper(fen[i]) == 'Q') { - castle += fen[i]; + if (fen[i] == 'Q') { + b->whiteCastleQueen = true; + continue; + } + if (fen[i] == 'k') { + b->blackCastleKing = true; + continue; + } + if (fen[i] == 'q') { + b->blackCastleQueen = true; continue; } } @@ -135,5 +144,4 @@ void setBoardFen(std::string fen, Game *b) { } break; } - b->castle = castle.empty() ? "-" : castle; } -- cgit v1.2.3