From 392ebaf9af5823933546dec98a1a478ec3965dbb Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 31 Jul 2026 19:18:40 +0200 Subject: making fen parser better --- src/board/board.cpp | 3 +++ src/board/board.hpp | 1 + src/board/fen.cpp | 23 ++++++++++------------- 3 files changed, 14 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/board/board.cpp b/src/board/board.cpp index cb9254e..8c8e423 100644 --- a/src/board/board.cpp +++ b/src/board/board.cpp @@ -263,3 +263,6 @@ void UpdateBitboards(Game *g) { g->PieceBitboard |= (1ULL << i); } } +void SetPiece(int i, PieceType type, bool color, Game *g) { + g->pieces[i] = {.color = color, .type = type}; +} diff --git a/src/board/board.hpp b/src/board/board.hpp index 91a38f9..7a9779a 100644 --- a/src/board/board.hpp +++ b/src/board/board.hpp @@ -104,4 +104,5 @@ void UnMakeMove(UndoMove undo, Game *g); Position FindKing(Game *g, bool white); void UpdateBitboards(Game *g); +void SetPiece(int i, PieceType type, bool color, Game *g); #endif /* SRC_BOARD_H_ */ diff --git a/src/board/fen.cpp b/src/board/fen.cpp index 91a2533..ca64e47 100644 --- a/src/board/fen.cpp +++ b/src/board/fen.cpp @@ -1,5 +1,6 @@ #include "fen.hpp" #include "board.hpp" +#include #include #include #include @@ -90,8 +91,9 @@ void setBoardFen(std::string fen, Game *g) { file += move; if (file > 8) { std::println("Fatal: file was to big"); + assert(false && "Malformed file"); exit(1); - return; // malformed rank + return; // malformed file } continue; } @@ -100,44 +102,39 @@ void setBoardFen(std::string fen, Game *g) { rank++; if (rank >= 8) { std::println("Fatal: rank was to big"); + assert(false && "Malformed rank"); exit(1); return; // malformed rank } continue; }; if (toupper(fen[i]) == 'N') { - Piece piece = createPiece(KNIGHT, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, KNIGHT, isupper(fen[i]), g); file++; continue; }; if (toupper(fen[i]) == 'R') { - Piece piece = createPiece(ROOK, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, ROOK, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'Q') { - Piece piece = createPiece(QUEEN, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, QUEEN, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'B') { - Piece piece = createPiece(BISHOP, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, BISHOP, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'P') { - Piece piece = createPiece(PAWN, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, PAWN, isupper(fen[i]), g); file++; continue; } if (toupper(fen[i]) == 'K') { - Piece piece = createPiece(KING, isupper(fen[i])); - g->pieces[rank * 8 + file] = piece; + SetPiece(rank * 8 + file, KING, isupper(fen[i]), g); file++; continue; } -- cgit v1.2.3