Cute Chess  0.1
Public Member Functions | Protected Types | Protected Member Functions | Static Protected Attributes | List of all members
Chess::CourierBoard Class Reference

A board for Courier Chess. More...

#include <courierboard.h>

Inheritance diagram for Chess::CourierBoard:
Chess::ShatranjBoard Chess::WesternBoard Chess::Board

Public Member Functions

virtual Boardcopy () const
 
 CourierBoard ()
 
virtual QString defaultFenString () const
 
virtual QString variant () const
 
virtual int width () const
 
- Public Member Functions inherited from Chess::ShatranjBoard
virtual Result result ()
 
 ShatranjBoard ()
 
- Public Member Functions inherited from Chess::WesternBoard
virtual int height () const
 
virtual int reversibleMoveCount () const
 
 WesternBoard (WesternZobrist *zobrist)
 
- Public Member Functions inherited from Chess::Board
 Board (Zobrist *zobrist)
 
virtual CoordinateSystem coordinateSystem () const
 
QString fenString (FenNotation notation=XFen) const
 
GenericMove genericMove (const Move &move) const
 
void initialize ()
 
bool isLegalMove (const Move &move)
 
virtual bool isRandomVariant () const
 
bool isRepetition (const Move &move)
 
bool isValidSquare (const Square &square) const
 
quint64 key () const
 
QVector< MovelegalMoves ()
 
void makeMove (const Move &move, BoardTransition *transition=nullptr)
 
Move moveFromGenericMove (const GenericMove &move) const
 
Move moveFromString (const QString &str)
 
QString moveString (const Move &move, MoveNotation notation)
 
Piece pieceAt (const Square &square) const
 
Piece pieceFromSymbol (const QString &pieceSymbol) const
 
QStringList pieceList (Side side) const
 
QString pieceString (int pieceType) const
 
QString pieceSymbol (Piece piece) const
 
int plyCount () const
 
int repeatCount () const
 
QString representation (Piece piece) const
 
int reserveCount (Piece piece) const
 
virtual QList< PiecereservePieceTypes () const
 
void reset ()
 
bool setFenString (const QString &fen)
 
Side sideToMove () const
 
QString startingFenString () const
 
Side startingSide () const
 
virtual Result tablebaseResult (unsigned int *dtm=nullptr) const
 
void undoMove ()
 
virtual Side upperCaseSide () const
 
virtual bool variantHasDrops () const
 
virtual bool variantHasOptionalPromotions () const
 
virtual bool variantHasWallSquares () const
 
virtual ~Board ()
 

Protected Types

enum  CourierPieceType { Courier = King + 1, Mann, Schleich }
 
- Protected Types inherited from Chess::ShatranjBoard
enum  ShatranjPieceType { Ferz = Queen, Alfil = Bishop }
 
- Protected Types inherited from Chess::WesternBoard
enum  CastlingSide { QueenSide, KingSide, NoCastlingSide }
 
enum  StepType { NoStep = 0, FreeStep = 1, CaptureStep = 2 }
 

Protected Member Functions

virtual void generateMovesForPiece (QVarLengthArray< Move > &moves, int pieceType, int square) const
 
virtual bool inCheck (Side side, int square=0) const
 
virtual void vInitialize ()
 
- Protected Member Functions inherited from Chess::ShatranjBoard
virtual void addPromotions (int sourceSquare, int targetSquare, QVarLengthArray< Move > &moves) const
 
virtual bool canBareOpponentKing ()
 
virtual bool hasCastling () const
 
virtual bool pawnHasDoubleStep () const
 
- Protected Member Functions inherited from Chess::WesternBoard
virtual int captureType (const Move &move) const
 
virtual int castlingFile (CastlingSide castlingSide) const
 
int enpassantSquare () const
 
bool hasCastlingRight (Side side, CastlingSide castlingSide) const
 
virtual bool hasEnPassantCaptures () const
 
virtual bool isLegalPosition ()
 
virtual bool kingCanCapture () const
 
virtual bool kingsCountAssertion (int whiteKings, int blackKings) const
 
int kingSquare (Side side) const
 
virtual QString lanMoveString (const Move &move)
 
virtual Move moveFromLanString (const QString &str)
 
virtual Move moveFromSanString (const QString &str)
 
virtual bool parseCastlingRights (QChar c)
 
int pawnAmbiguity (StepType type=FreeStep) const
 
void removeCastlingRights (int square)
 
void removeCastlingRights (Side side)
 
virtual QString sanMoveString (const Move &move)
 
virtual bool variantHasChanneling (Side side, int square) const
 
virtual QString vFenIncludeString (FenNotation notation) const
 
virtual QString vFenString (FenNotation notation) const
 
virtual bool vIsLegalMove (const Move &move)
 
virtual void vMakeMove (const Move &move, BoardTransition *transition)
 
virtual bool vSetFenString (const QStringList &fen)
 
virtual void vUndoMove (const Move &move)
 
- Protected Member Functions inherited from Chess::Board
void addToReserve (const Piece &piece, int count=1)
 
int arraySize () const
 
bool canMove ()
 
Square chessSquare (int index) const
 
Square chessSquare (const QString &str) const
 
void generateDropMoves (QVarLengthArray< Move > &moves, int pieceType) const
 
void generateHoppingMoves (int sourceSquare, const QVarLengthArray< int > &offsets, QVarLengthArray< Move > &moves) const
 
void generateMoves (QVarLengthArray< Move > &moves, int pieceType=Piece::NoPiece) const
 
void generateSlidingMoves (int sourceSquare, const QVarLengthArray< int > &offsets, QVarLengthArray< Move > &moves) const
 
const MovelastMove () const
 
virtual int maxPieceSymbolLength () const
 
bool moveExists (const Move &move) const
 
Piece pieceAt (int square) const
 
bool pieceHasMovement (int pieceType, unsigned movement) const
 
void removeFromReserve (const Piece &piece)
 
virtual int reserveType (int pieceType) const
 
void setPieceType (int type, const QString &name, const QString &symbol, unsigned movement=0, const QString &gsymbol=QString())
 
void setSquare (int square, Piece piece)
 
int squareIndex (const Square &square) const
 
int squareIndex (const QString &str) const
 
QString squareString (int index) const
 
QString squareString (const Square &square) const
 
void xorKey (quint64 key)
 

Static Protected Attributes

static const unsigned WazirMovement = 64
 
- Static Protected Attributes inherited from Chess::ShatranjBoard
static const unsigned AlfilMovement = 32
 
static const unsigned FerzMovement = 16
 
- Static Protected Attributes inherited from Chess::WesternBoard
static const unsigned BishopMovement = 4
 
static const unsigned KnightMovement = 2
 
static const unsigned RookMovement = 8
 

Additional Inherited Members

- Public Types inherited from Chess::WesternBoard
enum  WesternPieceType {
  Pawn = 1, Knight, Bishop, Rook,
  Queen, King
}
 
- Public Types inherited from Chess::Board
enum  CoordinateSystem { NormalCoordinates, InvertedCoordinates }
 
enum  FenNotation { XFen, ShredderFen }
 
enum  MoveNotation { StandardAlgebraic, LongAlgebraic }
 
- Protected Attributes inherited from Chess::WesternBoard
QVarLengthArray< PawnStep, 8 > m_pawnSteps
 

Detailed Description

A board for Courier Chess.

Courier Chess is a 12x8 board variant that has been popular in medieval Europe, especially in the countries of the Holy Roman Empire (esp. Germany, Netherlands) from the 12th to the 18th century alongside Shatranj and then Chess (influencing the transformation from the former to the latter).

The Queen and the Bishop in Courier Chess have the old Shatranj movements of the Ferz (Counselor, one square diagonally) and the Alfil (War Elephant, leaps two squares diagonally). King, Rook, and Knight have normal moves. There are additional pieces: Every side has one Mann who moves like a King, and one Schleich with Wazir movement (one square forward, backward, left or right). Every side has two Currier or Courier pieces with modern Bishop movement. Courier Chess has no Pawn double step option and no castling. A Pawn can only promote to Queen.

The effective starting position has the white Queen and Rook Pawns on ranks 4 (introducing ceremonial double steps from rank 2) and the Queen moves to g4 from g2. The black pieces do mirrorwise.

A side wins if their opponent cannot make a legal move (mate or stalemate), or has no pieces left besides their "bare" King. However, a bare King is given one chance to get level by the next move: Two bare kings is a draw.

See also
ShatranjBoard
Note
Rules: http://en.wikipedia.org/wiki/Courier_chess

Member Enumeration Documentation

Special piece types for Courier variants.

Enumerator
Courier 

Currier, Courier (diagonal slider) is modern Bishop.

Mann moves like King

Mann 

Schleich moves like Wazir (1 square orthog.)

Constructor & Destructor Documentation

Chess::CourierBoard::CourierBoard ( )

Creates a new CourierBoard object.

Member Function Documentation

Board * Chess::CourierBoard::copy ( ) const
virtual

Creates and returns a deep copy of this board.

Reimplemented from Chess::ShatranjBoard.

QString Chess::CourierBoard::defaultFenString ( ) const
virtual

Returns the variant's default starting FEN string.

Reimplemented from Chess::ShatranjBoard.

void Chess::CourierBoard::generateMovesForPiece ( QVarLengthArray< Move > &  moves,
int  pieceType,
int  square 
) const
protectedvirtual

Generates pseudo-legal moves for a piece of pieceType at square square.

Note
It doesn't matter if square doesn't contain a piece of pieceType, the move generator ignores it.

Reimplemented from Chess::ShatranjBoard.

bool Chess::CourierBoard::inCheck ( Side  side,
int  square = 0 
) const
protectedvirtual

Returns true if side is under attack at square. If square is 0, then the king square is used.

Reimplemented from Chess::ShatranjBoard.

QString Chess::CourierBoard::variant ( ) const
virtual

Returns the name of the chess variant.

Reimplemented from Chess::ShatranjBoard.

void Chess::CourierBoard::vInitialize ( )
protectedvirtual

Initializes the variant.

This function is called by initialize(). Subclasses shouldn't generally call it by themselves.

Reimplemented from Chess::ShatranjBoard.

int Chess::CourierBoard::width ( ) const
virtual

Returns the width of the board in squares.

Reimplemented from Chess::WesternBoard.

Member Data Documentation

const unsigned Chess::CourierBoard::WazirMovement = 64
staticprotected

Movement mask for Wazir moves. (Schleich)


The documentation for this class was generated from the following files: