From 53e58af35c46140a05b3ce4dcec9e425ca359529 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 29 Jul 2026 20:16:13 +0200 Subject: new folder structer --- src/board/board.hpp | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/board/board.hpp (limited to 'src/board/board.hpp') diff --git a/src/board/board.hpp b/src/board/board.hpp new file mode 100644 index 0000000..7d0cb3f --- /dev/null +++ b/src/board/board.hpp @@ -0,0 +1,101 @@ +#ifndef SRC_BOARD_H_ +#define SRC_BOARD_H_ + +#include +#include + +enum PieceType { + NONEPIECE, + PAWN, + KNIGHT, + BISHOP, + ROOK, + QUEEN, + KING, +}; + +enum GameState { + TURN, + WHITE_WON, + BLACK_WON, + STALEMATE, + DRAW, +}; + +struct Piece { + bool color = 0; + PieceType type = NONEPIECE; +}; + +struct Position { + uint8_t rank = 0; + uint8_t file = 0; + + bool operator==(const Position &) const = default; +}; +struct TranspositionsEntry { + int depth; + float Eval; +}; +struct Game { + Piece pieces[64]; + bool turn = 1; // 1 white; 0 black + bool whiteCastleKing = false; + bool whiteCastleQueen = false; + bool blackCastleKing = false; + bool blackCastleQueen = false; + uint8_t halfMoveClock = 0; + uint16_t MoveClock = 0; + Position enPassant; + bool canEnpassant = 0; + GameState state = TURN; + std::unordered_map ThreeFoldMap; + std::unordered_map *Transpositions = nullptr; +}; + +struct Move { + Position From; + Position To; + + PieceType promotion = NONEPIECE; + bool operator==(const Move &other) const { + return From == other.From && To == other.To && promotion == other.promotion; + } +}; +struct UndoMove { + Piece movedPiece; + Piece capturedPiece; + + Position from; + Position to; + + bool wasEnPassantCapture = false; + Position enPassantCapturedSquare; + Piece enPassantCapturedPiece; + + bool oldTurn; + bool oldCanEnpassant; + Position oldEnPassant; + + bool OldwhiteCastleKing; + bool OldwhiteCastleQueen; + bool OldblackCastleKing; + bool OldblackCastleQueen; + + int oldHalfMoveClock; + int oldMoveClock; + uint64_t zobristKey; + GameState oldState; + + // castling + bool wasCastle = false; + bool CastledSide = false; // 0 for queen side, 1 for king side +}; +Piece createPiece(PieceType type, bool color); + +int PositionToIndex(Position i); +UndoMove MakeMove(Move move, Game *g); +void UnMakeMove(UndoMove undo, Game *g); + +Position FindKing(Game *b, bool white); +#endif /* SRC_BOARD_H_ */ -- cgit v1.2.3