24 #include <QVarLengthArray> 25 #include <QSharedPointer> 27 #include <QCoreApplication> 31 #include "genericmove.h" 39 class BoardTransition;
59 Q_DECLARE_TR_FUNCTIONS(
Board)
115 virtual Board* copy()
const = 0;
118 virtual QString variant()
const = 0;
123 virtual bool isRandomVariant()
const;
130 virtual bool variantHasDrops()
const;
135 virtual bool variantHasWallSquares()
const;
144 virtual CoordinateSystem coordinateSystem()
const;
146 virtual int width()
const = 0;
148 virtual int height()
const = 0;
150 virtual QString defaultFenString()
const = 0;
161 bool isValidSquare(
const Square& square)
const;
171 QString fenString(FenNotation notation = XFen)
const;
176 QString startingFenString()
const;
185 bool setFenString(
const QString& fen);
196 virtual Side upperCaseSide()
const;
198 Side sideToMove()
const;
200 Side startingSide()
const;
204 int plyCount()
const;
209 int repeatCount()
const;
215 virtual int reversibleMoveCount()
const;
222 int reserveCount(
Piece piece)
const;
226 Piece pieceFromSymbol(
const QString& pieceSymbol)
const;
228 QString pieceString(
int pieceType)
const;
250 QString moveString(
const Move& move, MoveNotation notation);
276 bool isLegalMove(
const Move& move);
281 bool isRepetition(
const Move& move);
288 virtual Result result() = 0;
298 virtual Result tablebaseResult(
unsigned int* dtm =
nullptr)
const;
307 virtual void vInitialize() = 0;
323 void setPieceType(
int type,
326 unsigned movement = 0,
329 bool pieceHasMovement(
int pieceType,
unsigned movement)
const;
342 virtual void vMakeMove(
const Move& move,
353 virtual void vUndoMove(
const Move& move) = 0;
356 Square chessSquare(
int index)
const;
360 int squareIndex(
const Square& square)
const;
362 int squareIndex(
const QString& str)
const;
364 QString squareString(
int index)
const;
379 virtual QString sanMoveString(
const Move& move) = 0;
381 virtual Move moveFromLanString(
const QString& str);
383 virtual Move moveFromSanString(
const QString& str) = 0;
385 virtual int maxPieceSymbolLength()
const;
394 virtual QString vFenString(FenNotation notation)
const = 0;
402 virtual bool vSetFenString(
const QStringList& fen) = 0;
430 int square)
const = 0;
438 void generateHoppingMoves(
int sourceSquare,
448 void generateSlidingMoves(
int sourceSquare,
456 virtual bool isLegalPosition() = 0;
468 virtual bool vIsLegalMove(
const Move& move);
473 virtual int captureType(
const Move& move)
const;
475 void xorKey(quint64 key);
480 bool moveExists(
const Move& move)
const;
487 int arraySize()
const;
489 Piece pieceAt(
int square)
const;
496 void setSquare(
int square,
Piece piece);
498 const Move& lastMove()
const;
508 virtual int reserveType(
int pieceType)
const;
510 void addToReserve(
const Piece& piece,
int count = 1);
512 void removeFromReserve(
const Piece& piece);
527 friend LIB_EXPORT QDebug operator<<(QDebug dbg,
const Board* board);
535 int m_maxPieceSymbolLength;
538 QSharedPointer<Zobrist> m_sharedZobrist;
546 extern LIB_EXPORT QDebug operator<<(QDebug dbg,
const Board* board);
550 return m_squares.size();
560 return m_startingSide;
565 return m_startingFen;
580 return m_squares[square];
585 Piece& old = m_squares[square];
596 return m_moveHistory.size();
601 return m_moveHistory.last().move;
607 Q_ASSERT(pieceType < m_pieceData.size());
609 return (m_pieceData[pieceType].movement & movement);
static const int NoPiece
Definition: piece.h:44
int plyCount() const
Definition: board.h:594
Side startingSide() const
Definition: board.h:558
const Move & lastMove() const
Definition: board.h:599
void setSquare(int square, Piece piece)
Definition: board.h:583
bool pieceHasMovement(int pieceType, unsigned movement) const
Definition: board.h:604
CoordinateSystem
Definition: board.h:63
MoveNotation
Definition: board.h:87
FenNotation
Definition: board.h:93
An internal chessboard class.
Definition: board.h:57
Standard Algebraic notation (SAN).
Definition: board.h:89
Piece pieceAt(const Square &square) const
Definition: board.cpp:105
Unsigned 64-bit values for generating zobrist position keys.
Definition: zobrist.h:36
QString startingFenString() const
Definition: board.h:563
A chess move independent of chess variant or opening book format.
Definition: genericmove.h:34
void xorKey(quint64 key)
Definition: board.h:573
quint64 key() const
Definition: board.h:568
int arraySize() const
Definition: board.h:548
Definition: boardscene.h:29
The side or color of a chess player.
Definition: side.h:35
bool isValid() const
Definition: piece.h:122
A chess piece.
Definition: piece.h:40
The result of a chess game.
Definition: result.h:34
virtual quint64 piece(const Piece &piece, int square) const
Definition: zobrist.cpp:106
Details of a board transition caused by a move.
Definition: boardtransition.h:40
A small and efficient chessmove class.
Definition: move.h:42
Side sideToMove() const
Definition: board.h:553
A generic chess square type consisting of a file and a rank.
Definition: square.h:33