11 #define S_P_BISHOP "B"
13 #define S_P_KNIGHT "N"
104 side_t const side UNUSED) = 0;
107 side_t const side, int8_t
const ri, int8_t
const ci,
110 side_t const side,
int nMax, int8_t
const ri, int8_t
const ci,
125 if (p.m_piece) os << p.m_piece;
165 piece_t const cPiece, int8_t
const ri, int8_t
const ci)
const;
168 int8_t
const ri, int8_t
const ci)
const;
199 const final {
return false; }
210 side_t const side, int8_t
const ri,
213 side_t const side, int8_t
const ri,
216 side_t const side, int8_t
const ri,
219 side_t const side, int8_t
const ri,
222 side_t const side, int8_t
const ri,
226 int8_t
const ri, int8_t
const ci,
bMoveList& ml)
const;
322 side_t const side)
override;
326 piece_t const cPiece, int8_t
const ci)
const;
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
bool isAttacked(bBoard const &b, case_t const &cf) const override
position on board, defined as 255 if invalid used primarily to compose a move or a source or destinat...
bool isAttacked(bBoard const &b UNUSED, case_t const &cf UNUSED) const final
int GenerateMoves(bBoard const &b UNUSED, case_t const &cf UNUSED, bMoveList &ml UNUSED, side_t const side UNUSED) final
bool kingSeesRook(bBoard const &b, case_t const &cf, piece_t const cPiece, int8_t const ci) const
Return true if king sees rook of own colour.
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) override
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
int addNonCapturePromotionMove(bBoard const &b, case_t const &cf, side_t const side, int8_t const ri, bMoveList &ml) const
Test move is possible, single step move non capture move.
int addNonCapturePawnMove(bBoard const &b, case_t const &cf, side_t const side, int8_t const ri, bMoveList &ml) const
Test move is possible, single step move non capture move.
int addNonCaptureDoublePawnMove(bBoard const &b, case_t const &cf, side_t const side, int8_t const ri, bMoveList &ml) const
int addEPMove(bBoard const &b, case_t const &cf, side_t const side, int8_t const ri, int8_t const ci, bMoveList &ml) const
Test move is possible, e.p.
int addCapturePawnMove(bBoard const &b, case_t const &cf, side_t const side, int8_t const ri, int8_t const ci, bMoveList &ml) const
int addCapturePromotionMove(bBoard const &b, case_t const &cf, side_t const side, int8_t const ri, int8_t const ci, bMoveList &ml) const
Test move is possible, single step move capture only move.
bPieceColour & operator=(bPieceColour const &)=delete
bPieceColour(bPieceColour const &)=delete
bPieceColour(bPieceColour &&)=delete
bPieceColour & operator=(bPieceColour &&)=delete
bool isAttackedByPiece(bBoard const &b, case_t const &cf, piece_t const cPiece, int8_t const ri, int8_t const ci) const
Return true if position is attacked by opponent respecting move offsets.
bool isAttackedBySlider(bBoard const &b, case_t const &cf, piece_t const cPiece, piece_t const cPiece2, int8_t const ri, int8_t const ci) const
Return true if position is attacked by opponent respecting move offsets.
virtual bool isAttacked(bBoard const &b, case_t const &cf) const =0
bPiece & operator=(bPiece &&)=delete
int addMove(bBoard const &b, case_t const &cf, side_t const side, int8_t const ri, int8_t const ci, bMoveList &ml) const
Check for in-check position, single step move used for King and Knight.
static bool isOwnColour(side_t const s, piece_t const p)
static class member function
static bPiece * getPieceClass(piece_t const piece)
static class member function
bPiece & operator=(bPiece const &)=delete
virtual int GenerateMoves(bBoard const &b UNUSED, case_t const &cf UNUSED, bMoveList &ml UNUSED, side_t const side UNUSED)=0
static cpiece_t getPieceChar(piece_t const p)
static class member function
bPiece(bPiece const &)=delete
int addMoves(bBoard const &b, case_t const &cf, side_t const side, int nMax, int8_t const ri, int8_t const ci, bMoveList &ml) const
Add moves for Queen, Rook and Bishop.
friend std::ostream & operator<<(std::ostream &os, bPiece const &p)
bPiece(bPiece &&)=default
static bool isOpponent(side_t const s, piece_t const p)
static class member function
static const std::string getPieceStrUpper(piece_t const piece)
static class member function
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
int GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml, side_t const side) final
bool isAttacked(bBoard const &b, case_t const &cf) const override
Check if piece on position is attacked, start with piece always on board and then with pieces with gr...
constexpr uint16_t N_PROMOTION
constexpr ppiece_t N_P_QUEEN
constexpr ppiece_t N_P_KNIGHT
constexpr ppiece_t N_P_ROOK
constexpr uint16_t N_P_CLEAR
constexpr ppiece_t N_P_BISHOP
constexpr ppiece_t N_P_EMPTY