24#include <QVarLengthArray>
25#include <QSharedPointer>
27#include <QCoreApplication>
31#include "genericmove.h"
59 Q_DECLARE_TR_FUNCTIONS(
Board)
123 virtual bool isRandomVariant()
const;
130 virtual bool variantHasDrops()
const;
135 virtual bool variantHasWallSquares()
const;
161 bool isValidSquare(
const Square& square)
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;
276 bool isLegalMove(
const Move& move);
281 bool isRepetition(
const Move& move);
298 virtual Result tablebaseResult(
unsigned int* dtm =
nullptr)
const;
323 void setPieceType(
int type,
326 unsigned movement = 0,
329 bool pieceHasMovement(
int pieceType,
unsigned movement)
const;
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;
381 virtual Move moveFromLanString(
const QString& str);
385 virtual int maxPieceSymbolLength()
const;
430 int square)
const = 0;
438 void generateHoppingMoves(
int sourceSquare,
448 void generateSlidingMoves(
int sourceSquare,
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;
546extern 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);
Details of a board transition caused by a move.
Definition: boardtransition.h:41
An internal chessboard class.
Definition: board.h:58
virtual bool isLegalPosition()=0
int arraySize() const
Definition: board.h:548
Side sideToMove() const
Definition: board.h:553
quint64 key() const
Definition: board.h:568
virtual bool vSetFenString(const QStringList &fen)=0
virtual QString defaultFenString() const =0
virtual void generateMovesForPiece(QVarLengthArray< Move > &moves, int pieceType, int square) const =0
Side startingSide() const
Definition: board.h:558
virtual QString sanMoveString(const Move &move)=0
virtual int width() const =0
void xorKey(quint64 key)
Definition: board.h:573
Piece pieceAt(const Square &square) const
Definition: board.cpp:105
virtual Move moveFromSanString(const QString &str)=0
virtual Result result()=0
virtual void vMakeMove(const Move &move, BoardTransition *transition)=0
bool pieceHasMovement(int pieceType, unsigned movement) const
Definition: board.h:604
void setSquare(int square, Piece piece)
Definition: board.h:583
const Move & lastMove() const
Definition: board.h:599
virtual Board * copy() const =0
QString startingFenString() const
Definition: board.h:563
FenNotation
Definition: board.h:94
@ XFen
Definition: board.h:99
virtual QString variant() const =0
virtual void vUndoMove(const Move &move)=0
virtual void vInitialize()=0
MoveNotation
Definition: board.h:88
@ StandardAlgebraic
Standard Algebraic notation (SAN).
Definition: board.h:89
virtual int height() const =0
CoordinateSystem
Definition: board.h:64
@ NormalCoordinates
Definition: board.h:74
int plyCount() const
Definition: board.h:594
virtual QString vFenString(FenNotation notation) const =0
A chess move independent of chess variant or opening book format.
Definition: genericmove.h:35
A small and efficient chessmove class.
Definition: move.h:43
A chess piece.
Definition: piece.h:41
bool isValid() const
Definition: piece.h:122
static const int NoPiece
Definition: piece.h:44
The result of a chess game.
Definition: result.h:35
The side or color of a chess player.
Definition: side.h:36
A generic chess square type consisting of a file and a rank.
Definition: square.h:34
Unsigned 64-bit values for generating zobrist position keys.
Definition: zobrist.h:37
virtual quint64 piece(const Piece &piece, int square) const
Definition: zobrist.cpp:106