#ifndef SRC_BOARD_H_ #define SRC_BOARD_H_ #include #include #include enum PieceType { NONE, PAWN, KNIGHT, BISHOP, ROOK, QUEEN, KING, }; enum GameState { TURN, WHITE_WON, BLACK_WON, STALEMATE, DRAW, }; std::string toChar(PieceType type, bool white); struct Piece { bool color = 0; PieceType type = NONE; bool moved = false; }; struct Position { uint8_t rank = 0; uint8_t file = 0; bool operator==(const Position &) const = default; }; struct Game { Piece pieces[64]; bool turn = 1; // 1 white; 0 black std::string castle = ""; uint8_t halfMoveClock = 0; uint16_t MoveClock = 0; Position enPassant; bool canEnpassant = 0; GameState state = TURN; std::unordered_map ThreeFoldMap; }; struct Move { Position From; Position To; bool operator==(const Move &) const = default; }; void printBoard(Game *b); Piece createPiece(PieceType type, bool color, bool moved = false); void PlayMove(Move move, Game *b); int PositionToIndex(Position i); #endif /* SRC_BOARD_H_ */