diff options
| author | Adam <adammegarules1@gmail.com> | 2026-07-29 16:18:52 +0200 |
|---|---|---|
| committer | Adam <adammegarules1@gmail.com> | 2026-07-29 16:18:52 +0200 |
| commit | 1d6a6717ba088c3b89d50021f2bf6656eb564533 (patch) | |
| tree | 83c2ba1c3a89eacf63f8841ccfb93671c5b45bdf /src/fen.cpp | |
| parent | 42c1050af70447e935ad1914e57ccecd9f278e7f (diff) | |
implementing castling
Diffstat (limited to 'src/fen.cpp')
| -rw-r--r-- | src/fen.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
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; } |
