23 #include <QVarLengthArray> 24 #include <QSharedPointer> 26 #include <QCoreApplication> 30 #include "genericmove.h" 38 class BoardTransition;
58 Q_DECLARE_TR_FUNCTIONS(
Board)
114 virtual Board* copy()
const = 0;
117 virtual QString variant()
const = 0;
122 virtual bool isRandomVariant()
const;
129 virtual bool variantHasDrops()
const;
138 virtual CoordinateSystem coordinateSystem()
const;
140 virtual int width()
const = 0;
142 virtual int height()
const = 0;
144 virtual QString defaultFenString()
const = 0;
155 bool isValidSquare(
const Square& square)
const;
165 QString fenString(FenNotation notation = XFen)
const;
170 QString startingFenString()
const;
179 bool setFenString(
const QString& fen);
190 virtual Side upperCaseSide()
const;
192 Side sideToMove()
const;
194 Side startingSide()
const;
198 int plyCount()
const;
203 int repeatCount()
const;
209 virtual int reversibleMoveCount()
const;
216 int reserveCount(
Piece piece)
const;
220 Piece pieceFromSymbol(
const QString& pieceSymbol)
const;
222 QString pieceString(
int pieceType)
const;
244 QString moveString(
const Move& move, MoveNotation notation);
270 bool isLegalMove(
const Move& move);
275 bool isRepetition(
const Move& move);
282 virtual Result result() = 0;
292 virtual Result tablebaseResult(
unsigned int* dtm =
nullptr)
const;
301 virtual void vInitialize() = 0;
317 void setPieceType(
int type,
320 unsigned movement = 0,
323 bool pieceHasMovement(
int pieceType,
unsigned movement)
const;
336 virtual void vMakeMove(
const Move& move,
347 virtual void vUndoMove(
const Move& move) = 0;
350 Square chessSquare(
int index)
const;
354 int squareIndex(
const Square& square)
const;
356 int squareIndex(
const QString& str)
const;
358 QString squareString(
int index)
const;
373 virtual QString sanMoveString(
const Move& move) = 0;
375 virtual Move moveFromLanString(
const QString& str);
377 virtual Move moveFromSanString(
const QString& str) = 0;
379 virtual int maxPieceSymbolLength()
const;
388 virtual QString vFenString(FenNotation notation)
const = 0;
396 virtual bool vSetFenString(
const QStringList& fen) = 0;
424 int square)
const = 0;
432 void generateHoppingMoves(
int sourceSquare,
442 void generateSlidingMoves(
int sourceSquare,
450 virtual bool isLegalPosition() = 0;
462 virtual bool vIsLegalMove(
const Move& move);
467 virtual int captureType(
const Move& move)
const;
469 void xorKey(quint64 key);
474 bool moveExists(
const Move& move)
const;
481 int arraySize()
const;
483 Piece pieceAt(
int square)
const;
490 void setSquare(
int square,
Piece piece);
492 const Move& lastMove()
const;
502 virtual int reserveType(
int pieceType)
const;
504 void addToReserve(
const Piece& piece,
int count = 1);
506 void removeFromReserve(
const Piece& piece);
521 friend LIB_EXPORT QDebug operator<<(QDebug dbg,
const Board* board);
529 int m_maxPieceSymbolLength;
532 QSharedPointer<Zobrist> m_sharedZobrist;
540 extern LIB_EXPORT QDebug operator<<(QDebug dbg,
const Board* board);
544 return m_squares.size();
554 return m_startingSide;
559 return m_startingFen;
574 return m_squares[square];
579 Piece& old = m_squares[square];
590 return m_moveHistory.size();
595 return m_moveHistory.last().move;
601 Q_ASSERT(pieceType < m_pieceData.size());
603 return (m_pieceData[pieceType].movement & movement);
static const int NoPiece
Definition: piece.h:43
int plyCount() const
Definition: board.h:588
Side startingSide() const
Definition: board.h:552
const Move & lastMove() const
Definition: board.h:593
void setSquare(int square, Piece piece)
Definition: board.h:577
bool pieceHasMovement(int pieceType, unsigned movement) const
Definition: board.h:598
CoordinateSystem
Definition: board.h:62
MoveNotation
Definition: board.h:86
FenNotation
Definition: board.h:92
An internal chessboard class.
Definition: board.h:56
Standard Algebraic notation (SAN).
Definition: board.h:88
Piece pieceAt(const Square &square) const
Definition: board.cpp:99
Unsigned 64-bit values for generating zobrist position keys.
Definition: zobrist.h:35
QString startingFenString() const
Definition: board.h:557
A chess move independent of chess variant or opening book format.
Definition: genericmove.h:33
void xorKey(quint64 key)
Definition: board.h:567
quint64 key() const
Definition: board.h:562
int arraySize() const
Definition: board.h:542
Definition: boardscene.h:28
The side or color of a chess player.
Definition: side.h:34
bool isValid() const
Definition: piece.h:121
A chess piece.
Definition: piece.h:39
The result of a chess game.
Definition: result.h:33
virtual quint64 piece(const Piece &piece, int square) const
Definition: zobrist.cpp:105
Details of a board transition caused by a move.
Definition: boardtransition.h:39
A small and efficient chessmove class.
Definition: move.h:41
Side sideToMove() const
Definition: board.h:547
A generic chess square type consisting of a file and a rank.
Definition: square.h:32