18 Position(
const std::string &fen = DEFAULT_FEN) { setFromFEN(fen); }
20 void setFromFEN(
const std::string &fen = DEFAULT_FEN);
21 [[nodiscard]] std::string toFEN()
const;
24 void unsetPiece(
Square square);
27 [[nodiscard]]
Piece pieceAt(
Square square)
const {
return m_board[square]; };
31 [[nodiscard]]
bool isLegal();
33 void makeMoveUci(std::string moveUci) {
38 void doMove(
Move move);
41 [[nodiscard]]
Color turn()
const {
return m_turn; }
44 std::array<Piece, Square::NB> m_board{};
45 std::array<Bitboard, Color::NB> m_colorBB{Bitboard::zero()};
46 std::array<Bitboard, PieceType::NB> m_pieceTypeBB{Bitboard::zero()};
49 std::list<Move> m_moves;
51 Color m_turn = Color::WHITE;
53 uint8_t m_halfmoves = 0;