24#include <QVarLengthArray>
25#include <QSharedPointer>
27#include <QCoreApplication>
31#include "genericmove.h"
59 Q_DECLARE_TR_FUNCTIONS(
Board)
326 unsigned movement = 0,
430 int square)
const = 0;
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];
587 xorKey(m_zobrist->piece(old, square));
589 xorKey(m_zobrist->piece(piece, 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
virtual bool vIsLegalMove(const Move &move)
Definition board.cpp:823
virtual Move moveFromLanString(const QString &str)
Definition board.cpp:354
int arraySize() const
Definition board.h:548
GenericMove genericMove(const Move &move) const
Definition board.cpp:418
Side sideToMove() const
Definition board.h:553
void reset()
Definition board.cpp:680
int reserveCount(Piece piece) const
Definition board.cpp:212
void generateHoppingMoves(int sourceSquare, const QVarLengthArray< int > &offsets, QVarLengthArray< Move > &moves) const
Definition board.cpp:751
bool canMove()
Definition board.cpp:870
QString pieceSymbol(Piece piece) const
Definition board.cpp:153
quint64 key() const
Definition board.h:568
Piece pieceFromSymbol(const QString &pieceSymbol) const
Definition board.cpp:164
virtual QString lanMoveString(const Move &move)
Definition board.cpp:326
void generateSlidingMoves(int sourceSquare, const QVarLengthArray< int > &offsets, QVarLengthArray< Move > &moves) const
Definition board.cpp:767
virtual bool vSetFenString(const QStringList &fen)=0
virtual QString defaultFenString() const =0
bool setFenString(const QString &fen)
Definition board.cpp:509
Move moveFromGenericMove(const GenericMove &move) const
Definition board.cpp:410
virtual void generateMovesForPiece(QVarLengthArray< Move > &moves, int pieceType, int square) const =0
Side startingSide() const
Definition board.h:558
void makeMove(const Move &move, BoardTransition *transition=nullptr)
Definition board.cpp:685
virtual Result tablebaseResult(unsigned int *dtm=nullptr) const
Definition board.cpp:901
void generateMoves(QVarLengthArray< Move > &moves, int pieceType=Piece::NoPiece) const
Definition board.cpp:711
virtual QString sanMoveString(const Move &move)=0
virtual int width() const =0
virtual CoordinateSystem coordinateSystem() const
Definition board.cpp:95
bool isRepetition(const Move &move)
Definition board.cpp:859
virtual QList< Piece > reservePieceTypes() const
Definition board.cpp:90
QVector< Move > legalMoves()
Definition board.cpp:884
QString moveString(const Move &move, MoveNotation notation)
Definition board.cpp:347
void xorKey(quint64 key)
Definition board.h:573
Piece pieceAt(const Square &square) const
Definition board.cpp:105
virtual bool isRandomVariant() const
Definition board.cpp:75
virtual Side upperCaseSide() const
Definition board.cpp:100
virtual Move moveFromSanString(const QString &str)=0
QString squareString(int index) const
Definition board.cpp:269
QString pieceString(int pieceType) const
Definition board.cpp:189
virtual Result result()=0
void initialize()
Definition board.cpp:112
virtual void vMakeMove(const Move &move, BoardTransition *transition)=0
Square chessSquare(int index) const
Definition board.cpp:244
QStringList pieceList(Side side) const
Definition board.cpp:428
int repeatCount() const
Definition board.cpp:839
Move moveFromString(const QString &str)
Definition board.cpp:398
virtual int reserveType(int pieceType) const
Definition board.cpp:207
bool pieceHasMovement(int pieceType, unsigned movement) const
Definition board.h:604
void setSquare(int square, Piece piece)
Definition board.h:583
void addToReserve(const Piece &piece, int count=1)
Definition board.cpp:220
void setPieceType(int type, const QString &name, const QString &symbol, unsigned movement=0, const QString &gsymbol=QString())
Definition board.cpp:137
int squareIndex(const Square &square) const
Definition board.cpp:252
const Move & lastMove() const
Definition board.h:599
virtual Board * copy() const =0
QString representation(Piece piece) const
Definition board.cpp:196
QString startingFenString() const
Definition board.h:563
Board(Zobrist *zobrist)
Definition board.cpp:55
virtual int reversibleMoveCount() const
Definition board.cpp:854
void undoMove()
Definition board.cpp:699
FenNotation
Definition board.h:94
@ XFen
Definition board.h:99
@ ShredderFen
Definition board.h:101
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
@ LongAlgebraic
Long Algebraic/Coordinate notation.
Definition board.h:90
virtual bool variantHasDrops() const
Definition board.cpp:80
virtual int height() const =0
void generateDropMoves(QVarLengthArray< Move > &moves, int pieceType) const
Definition board.cpp:732
QString fenString(FenNotation notation=XFen) const
Definition board.cpp:446
virtual int maxPieceSymbolLength() const
Definition board.cpp:132
bool moveExists(const Move &move) const
Definition board.cpp:788
bool isValidSquare(const Square &square) const
Definition board.cpp:261
CoordinateSystem
Definition board.h:64
@ NormalCoordinates
Definition board.h:74
@ InvertedCoordinates
Definition board.h:84
virtual int captureType(const Move &move) const
Definition board.cpp:813
bool isLegalMove(const Move &move)
Definition board.cpp:834
void removeFromReserve(const Piece &piece)
Definition board.cpp:235
int plyCount() const
Definition board.h:594
virtual QString vFenString(FenNotation notation) const =0
virtual bool variantHasWallSquares() const
Definition board.cpp:85
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