Belofte version 2.1.8
A promising chess program using the UCI or Winboard interface
piece.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------+
2 * File: piece.h
3 * Project: part of belofte - A Promising Chess Program
4 * Author: yves
5 * SPDX-License-Identifier: GPL-2.0-only
6+----------------------------------------------------------------------*/
7
8#if !defined(PIECE_H)
9#define PIECE_H
10
11#define S_P_BISHOP "B"
12#define S_P_KING "K"
13#define S_P_KNIGHT "N"
14#define S_P_PAWN "P"
15#define S_P_QUEEN "Q"
16#define S_P_ROOK "R"
17#define S_P_EMPTY ""
18
19enum tCPiece : unsigned char {
20 C_EMPTY = ' ',
22 C_W_KING = 'K',
24 C_W_PAWN = 'P',
25 C_W_QUEEN = 'Q',
26 C_W_ROOK = 'R',
28 C_B_KING = 'k',
30 C_B_PAWN = 'p',
31 C_B_QUEEN = 'q',
32 C_B_ROOK = 'r'
33};
34
35typedef enum tCPiece cpiece_t;
36
43
44typedef enum tPiece piece_t;
45
51
52typedef enum tPPiece ppiece_t;
53
59
60enum class tSide : uint8_t {
62 SIDE_WHITE = 1,
63 SIDE_BLACK = 2
64};
65
66typedef enum tSide side_t;
67
68//-----------------------------------------------------------------------
69
70void bPiece_ctor();
71void bPiece_dtor();
72boardbitmap_t destinationbits(case_t const iCase, int8_t const ri, int8_t const ci);
75
76//-----------------------------------------------------------------------
77
78class bBoard;
79class bCase;
80class bMoveList;
81
82//-----------------------------------------------------------------------
83
84/** piece representation */
85class bPiece {
86public:
87 bPiece();
88 explicit bPiece(piece_t p);
89 virtual ~bPiece();
90
91 bPiece(bPiece&&) = default;
92
93 // no copy or move ctor nor assignment defined
94 bPiece(bPiece const&) = delete;
95 bPiece& operator=(bPiece const&) = delete;
96 bPiece& operator=(bPiece&&) = delete;
97
98 // get piece letter
99 piece_t getPiece() const { return m_piece; }
100
101 virtual bool hasValidMovePreflightCheck(bBoard& b UNUSED,
102 case_t const& cf UNUSED) = 0;
103 virtual movenum_t GenerateMoves(bBoard const& b UNUSED,
104 case_t const& cf UNUSED, bMoveList& ml UNUSED) = 0;
105
106 side_t toMove() const;
107
108public:
109 static piece_t getPiece(cpiece_t const p);
110 static cpiece_t getPieceChar(piece_t const p);
111 static bPiece* getPieceClass(piece_t const piece);
112 static const std::string getPieceStrUpper(piece_t const piece);
113 static bool isOpponent(side_t const s, piece_t const p);
114 static bool isOwnColour(side_t const s, piece_t const p);
115 static bool isWhitePiece(piece_t const p);
116 static bool isBlackPiece(piece_t const p);
117
118private:
119 friend std::ostream& operator<<(std::ostream& os, bPiece const& p) {
120 if (p.m_piece) os << p.m_piece;
121 return os;
122 }
123
124private:
125 piece_t m_piece = tPiece::P_EMPTY;
126};
127
128//-----------------------------------------------------------------------
129
131public:
132 explicit bPieceColour(side_t s);
133 virtual ~bPieceColour();
134
135 // no copy or move ctor nor assignment defined
136 bPieceColour(bPieceColour const&) = delete;
140
141 bool isWhite() const { return m_side == tSide::SIDE_WHITE; }
142 bool isBlack() const { return m_side == tSide::SIDE_BLACK; }
143 bool isEmpty() const { return m_side == tSide::SIDE_UNDEFINED; }
144
149 side_t opponent() const {
151 }
152 side_t toMove() const {
154 }
155
156 virtual bool isAttacked(bBoard const& b, case_t const& cf) const = 0;
157 virtual bool canMovePreflightCheck(bBoard& b, case_t const& cf,
158 int8_t const ri, int8_t const ci) const = 0;
159 virtual bool canMovePreflightCheck(bBoard& b, case_t const& cf,
160 int8_t const ri, int8_t const ci, piece_t const cPromotion) const = 0;
161 virtual movenum_t addMove(bBoard const& b, case_t const& cf,
162 int8_t const ri, int8_t const ci,
163 bMoveList& ml) const = 0;
164 virtual movenum_t addMoves(bBoard const& b, case_t const& cf,
165 int8_t const ri, int8_t const ci,
166 bMoveList& ml) const = 0;
167protected:
168 bool isAttackedByPiece(bBoard const& b, column_t const fromcol,
169 rank_t const fromrank,
170 piece_t const cPiece, int8_t const ri, int8_t const ci) const;
171 bool isAttackedBySlider(bBoard const& b, column_t const fromcol,
172 rank_t const fromrank,
173 piece_t const cPiece, piece_t const cPiece2,
174 int8_t const ri, int8_t const ci) const;
175
177};
178
179//-----------------------------------------------------------------------
180
181class bWhitePiece : public bPieceColour {
182public:
183 bWhitePiece();
184 ~bWhitePiece() override;
185
186 bool canMovePreflightCheck(bBoard& b, case_t const& cf,
187 int8_t const ri, int8_t const ci) const override;
188 bool canMovePreflightCheck(bBoard& b, case_t const& cf,
189 int8_t const ri, int8_t const ci,
190 piece_t const cPromotion) const override;
191 bool isAttacked(bBoard const& b, case_t const& cf) const override;
192 movenum_t addMove(bBoard const& b, case_t const& cf,
193 int8_t const ri, int8_t const ci,
194 bMoveList& ml) const final;
195 movenum_t addMoves(bBoard const& b, case_t const& cf,
196 int8_t const ri, int8_t const ci,
197 bMoveList& ml) const final;
198};
199
200class bBlackPiece : public bPieceColour {
201public:
202 bBlackPiece();
203 ~bBlackPiece() override;
204
205 bool canMovePreflightCheck(bBoard& b, case_t const& cf,
206 int8_t const ri, int8_t const ci) const override;
207 bool canMovePreflightCheck(bBoard& b, case_t const& cf,
208 int8_t const ri, int8_t const ci,
209 piece_t const cPromotion) const override;
210 bool isAttacked(bBoard const& b, case_t const& cf) const override;
211 movenum_t addMove(bBoard const& b, case_t const& cf,
212 int8_t const ri, int8_t const ci,
213 bMoveList& ml) const final;
214 movenum_t addMoves(bBoard const& b, case_t const& cf,
215 int8_t const ri, int8_t const ci,
216 bMoveList& ml) const final;
217};
218
219#if defined(__GNUC__)
220#pragma GCC diagnostic push
221#pragma GCC diagnostic ignored "-Wunused-parameter"
222#endif
223
224// TODO: Candidate for template implementation
225
226class bEmptyPiece final : public bPiece, public bPieceColour {
227public:
229 ~bEmptyPiece() final {}
230
232 case_t const& cf,
233 int8_t const ri, int8_t const ci)
234 const final { return false; }
236 case_t const& cf,
237 int8_t const ri, int8_t const ci,
238 piece_t const cPromotion)
239 const final { return false; }
240 bool isAttacked(bBoard const& b, case_t const& cf)
241 const final { return false; }
242 movenum_t addMove(bBoard const& b, case_t const& cf,
243 int8_t const ri, int8_t const ci,
244 bMoveList& ml) const final { return 0; }
245 movenum_t addMoves(bBoard const& b, case_t const& cf,
246 int8_t const ri, int8_t const ci,
247 bMoveList& ml) const final { return 0; }
249 case_t const& cf) final { return false; }
251 case_t const& cf, bMoveList& ml)
252 final { return 0; }
253};
254
255#if defined(__GNUC__)
256#pragma GCC diagnostic pop
257#endif
258
259class bPawn : public bPiece {
260public:
261 explicit bPawn(piece_t p) : bPiece(p) {}
262};
263
264class bWhitePawn final : public bPawn, public bWhitePiece {
265public:
267
269 case_t const& cf) final;
270 movenum_t GenerateMoves(bBoard const& b, case_t const& cf, bMoveList& ml) final;
271
272protected:
273 movenum_t addNonCapturePawnMove(bBoard const& b, case_t const& cf,
274 bMoveList& ml) const;
276 bMoveList& ml) const;
277 movenum_t addEPMove(bBoard const& b, case_t const& cf,
278 int8_t const ci, bMoveList& ml) const;
279 movenum_t addCapturePawnMove(bBoard const& b, case_t const& cf,
280 int8_t const ci, bMoveList& ml) const;
282 bMoveList& ml) const;
284 int8_t const ci, bMoveList& ml) const;
285
286private:
287 bool canPawnMove(bBoard& b, case_t const& cf) const;
288 bool canPawnCapture(bBoard& b, case_t const& cf,
289 int8_t const ci) const;
290 bool canPawnEPMove(bBoard& b, case_t const& cf,
291 int8_t const ci) const;
292};
293
294class bBlackPawn final : public bPawn, public bBlackPiece {
295public:
297
299 case_t const& cf) final;
300 movenum_t GenerateMoves(bBoard const& b, case_t const& cf, bMoveList& ml) final;
301
302protected:
303 movenum_t addNonCapturePawnMove(bBoard const& b, case_t const& cf,
304 bMoveList& ml) const;
306 bMoveList& ml) const;
307 movenum_t addEPMove(bBoard const& b, case_t const& cf,
308 int8_t const ci, bMoveList& ml) const;
309 movenum_t addCapturePawnMove(bBoard const& b, case_t const& cf,
310 int8_t const ci, bMoveList& ml) const;
312 bMoveList& ml) const;
314 int8_t const ci, bMoveList& ml) const;
315
316private:
317 bool canPawnMove(bBoard& b, case_t const& cf) const;
318 bool canPawnCapture(bBoard& b, case_t const& cf,
319 int8_t const ci) const;
320 bool canPawnEPMove(bBoard& b, case_t const& cf,
321 int8_t const ci) const;
322};
323
324class bKnight : public bPiece {
325public:
326 explicit bKnight(piece_t p) : bPiece(p) {}
327};
328
329class bWhiteKnight final : public bKnight, public bWhitePiece {
330public:
332
334 case_t const& cf) final;
335 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
336 bMoveList& ml) final;
337};
338
339class bBlackKnight final : public bKnight, public bBlackPiece {
340public:
342
344 case_t const& cf) final;
345 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
346 bMoveList& ml) final;
347};
348
349class bBishop : public bPiece {
350public:
351 explicit bBishop(piece_t p) : bPiece(p) {}
352};
353
354class bWhiteBishop final : public bBishop, public bWhitePiece {
355public:
357
359 case_t const& cf) final;
360 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
361 bMoveList& ml) final;
362};
363
364class bBlackBishop final : public bBishop, public bBlackPiece {
365public:
367
369 case_t const& cf) final;
370 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
371 bMoveList& ml) final;
372};
373
374class bRook : public bPiece {
375public:
376 explicit bRook(piece_t p) : bPiece(p) {}
377};
378
379class bWhiteRook final : public bRook, public bWhitePiece {
380public:
382
384 case_t const& cf) final;
385 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
386 bMoveList& ml) final;
387};
388
389class bBlackRook final : public bRook, public bBlackPiece {
390public:
392
394 case_t const& cf) final;
395 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
396 bMoveList& ml) final;
397};
398
399class bQueen : public bPiece {
400public:
401 explicit bQueen(piece_t p) : bPiece(p) {}
402};
403
404class bWhiteQueen final : public bQueen, public bWhitePiece {
405public:
407
409 case_t const& cf) final;
410 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
411 bMoveList& ml) final;
412};
413
414class bBlackQueen final : public bQueen, public bBlackPiece {
415public:
417
419 case_t const& cf) final;
420 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
421 bMoveList& ml) final;
422};
423
424class bKing : public bPiece {
425public:
426 explicit bKing(piece_t p) : bPiece(p) {}
427};
428
429class bWhiteKing final : public bKing, public bWhitePiece {
430public:
432
434 case_t const& cf) final;
435 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
436 bMoveList& ml) final;
437};
438
439class bBlackKing final : public bKing, public bBlackPiece {
440public:
442
444 case_t const& cf) final;
445 movenum_t GenerateMoves(bBoard const& b, case_t const& cf,
446 bMoveList& ml) final;
447};
448
449// --------------------------------------------------------------------
450
451#endif // defined PIECE_H
452
453// eof
int8_t rank_t
Definition belofte.h:104
int8_t column_t
Definition belofte.h:105
uint_fast8_t movenum_t
Definition belofte.h:109
uint8_t case_t
Definition belofte.h:106
uint64_t boardbitmap_t
Definition belofte.h:111
bBishop(piece_t p)
Definition piece.h:351
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1096
bBlackBishop()
Definition piece.h:366
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1117
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1200
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1261
bBlackKing()
Definition piece.h:441
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1071
bBlackKnight()
Definition piece.h:341
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1042
movenum_t addEPMove(bBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Test move is possible, e.p.
Definition piece.cpp:894
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
check if there is at least one move possible currently, relies on full move generation for pawn
Definition piece.cpp:950
movenum_t addNonCapturePawnMove(bBoard const &b, case_t const &cf, bMoveList &ml) const
Test move is possible, single step move non capture move.
Definition piece.cpp:742
bBlackPawn()
Definition piece.h:296
movenum_t addCapturePromotionMove(bBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Definition piece.cpp:856
movenum_t addCapturePawnMove(bBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Definition piece.cpp:795
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:962
movenum_t addNonCaptureDoublePawnMove(bBoard const &b, case_t const &cf, bMoveList &ml) const
Definition piece.cpp:767
movenum_t addNonCapturePromotionMove(bBoard const &b, case_t const &cf, bMoveList &ml) const
Definition piece.cpp:824
movenum_t addMove(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const final
Definition piece.cpp:554
~bBlackPiece() override
Definition piece.cpp:345
movenum_t addMoves(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const final
Definition piece.cpp:604
bool canMovePreflightCheck(bBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const override
Check if move could be added by just checking there is not check.
Definition piece.cpp:473
bool isAttacked(bBoard const &b, case_t const &cf) const override
Definition piece.cpp:284
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1142
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1171
bBlackQueen()
Definition piece.h:416
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:996
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1017
bBlackRook()
Definition piece.h:391
board
Definition board.h:147
position on board, defined as 255 if invalid used primarily to compose a move or a source or destinat...
Definition case.h:17
bEmptyPiece()
Definition piece.h:228
bool canMovePreflightCheck(bBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const final
Definition piece.h:231
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.h:250
movenum_t addMove(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const final
Definition piece.h:242
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.h:248
movenum_t addMoves(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const final
Definition piece.h:245
bool canMovePreflightCheck(bBoard &b, case_t const &cf, int8_t const ri, int8_t const ci, piece_t const cPromotion) const final
Definition piece.h:235
~bEmptyPiece() final
Definition piece.h:229
bool isAttacked(bBoard const &b, case_t const &cf) const final
Definition piece.h:240
Definition piece.h:424
bKing(piece_t p)
Definition piece.h:426
bKnight(piece_t p)
Definition piece.h:326
Definition piece.h:259
bPawn(piece_t p)
Definition piece.h:261
bool isBlack() const
Definition piece.h:142
virtual ~bPieceColour()
Definition piece.cpp:226
virtual bool canMovePreflightCheck(bBoard &b, case_t const &cf, int8_t const ri, int8_t const ci, piece_t const cPromotion) const =0
side_t toMove() const
Definition piece.h:152
bPieceColour & operator=(bPieceColour const &)=delete
bool isEmpty() const
Definition piece.h:143
bPieceColour(bPieceColour const &)=delete
bPieceColour(bPieceColour &&)=delete
bool isAttackedByPiece(bBoard const &b, column_t const fromcol, rank_t const fromrank, piece_t const cPiece, int8_t const ri, int8_t const ci) const
Return true if position is attacked by opponent respecting move offsets.
Definition piece.cpp:359
side_t m_side
Definition piece.h:176
virtual bool canMovePreflightCheck(bBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const =0
side_t opponent() const
Definition piece.h:149
virtual movenum_t addMoves(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const =0
bool isAttackedBySlider(bBoard const &b, column_t const fromcol, rank_t const fromrank, 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.
Definition piece.cpp:377
virtual movenum_t addMove(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const =0
side_t invert()
Definition piece.h:145
bool isWhite() const
Definition piece.h:141
virtual bool isAttacked(bBoard const &b, case_t const &cf) const =0
bPieceColour & operator=(bPieceColour &&)=delete
piece representation
Definition piece.h:85
bPiece & operator=(bPiece &&)=delete
static bool isOwnColour(side_t const s, piece_t const p)
static class member function
Definition piece.cpp:198
virtual bool hasValidMovePreflightCheck(bBoard &b UNUSED, case_t const &cf UNUSED)=0
side_t toMove() const
Definition piece.cpp:168
static bPiece * getPieceClass(piece_t const piece)
static class member function
Definition piece.cpp:130
static cpiece_t getPieceChar(piece_t const p)
static class member function
Definition piece.cpp:178
bPiece & operator=(bPiece const &)=delete
bPiece(bPiece const &)=delete
static bool isBlackPiece(piece_t const p)
static class member function
Definition piece.cpp:213
piece_t getPiece() const
Definition piece.h:99
static bool isWhitePiece(piece_t const p)
static class member function
Definition piece.cpp:206
virtual ~bPiece()
Definition piece.cpp:30
bPiece(bPiece &&)=default
friend std::ostream & operator<<(std::ostream &os, bPiece const &p)
Definition piece.h:119
static bool isOpponent(side_t const s, piece_t const p)
static class member function
Definition piece.cpp:190
bPiece()
Definition piece.cpp:21
virtual movenum_t GenerateMoves(bBoard const &b UNUSED, case_t const &cf UNUSED, bMoveList &ml UNUSED)=0
static const std::string getPieceStrUpper(piece_t const piece)
static class member function
Definition piece.cpp:136
bQueen(piece_t p)
Definition piece.h:401
Definition piece.h:374
bRook(piece_t p)
Definition piece.h:376
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1087
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1105
bWhiteBishop()
Definition piece.h:356
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1187
bWhiteKing()
Definition piece.h:431
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1213
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1029
bWhiteKnight()
Definition piece.h:331
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1055
bWhitePawn()
Definition piece.h:266
movenum_t addCapturePromotionMove(bBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Test move is possible, single step move capture only move.
Definition piece.cpp:838
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:922
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
check if there is at least one move possible currently, relies on full move generation for pawn
Definition piece.cpp:910
movenum_t addNonCapturePromotionMove(bBoard const &b, case_t const &cf, bMoveList &ml) const
Test move is possible, single step move non capture move.
Definition piece.cpp:813
movenum_t addEPMove(bBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Test move is possible, e.p.
Definition piece.cpp:878
movenum_t addCapturePawnMove(bBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Definition piece.cpp:780
movenum_t addNonCapturePawnMove(bBoard const &b, case_t const &cf, bMoveList &ml) const
Test move is possible, single step move non capture move.
Definition piece.cpp:681
movenum_t addNonCaptureDoublePawnMove(bBoard const &b, case_t const &cf, bMoveList &ml) const
Definition piece.cpp:754
~bWhitePiece() override
Definition piece.cpp:336
movenum_t addMoves(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const final
Add moves for Queen, Rook and Bishop.
Definition piece.cpp:576
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...
Definition piece.cpp:237
movenum_t addMove(bBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const final
Check for in-check position, single step move used for King and Knight.
Definition piece.cpp:536
bool canMovePreflightCheck(bBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const override
Check if move could be added by just checking there is not check.
Definition piece.cpp:408
bWhiteQueen()
Definition piece.h:406
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:1129
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1155
movenum_t GenerateMoves(bBoard const &b, case_t const &cf, bMoveList &ml) final
Definition piece.cpp:1005
bWhiteRook()
Definition piece.h:381
bool hasValidMovePreflightCheck(bBoard &b, case_t const &cf) final
Definition piece.cpp:987
enum tPPiece ppiece_t
Definition piece.h:52
enum tSide side_t
Definition piece.h:66
void bPiece_dtor()
Definition piece.cpp:120
tCPiece
Definition piece.h:19
@ C_W_KNIGHT
Definition piece.h:23
@ C_W_PAWN
Definition piece.h:24
@ C_B_QUEEN
Definition piece.h:31
@ C_W_ROOK
Definition piece.h:26
@ C_EMPTY
Definition piece.h:20
@ C_B_BISHOP
Definition piece.h:27
@ C_W_QUEEN
Definition piece.h:25
@ C_B_KNIGHT
Definition piece.h:29
@ C_B_PAWN
Definition piece.h:30
@ C_W_BISHOP
Definition piece.h:21
@ C_B_ROOK
Definition piece.h:32
@ C_B_KING
Definition piece.h:28
@ C_W_KING
Definition piece.h:22
tPiece
Definition piece.h:37
@ W_PAWN
Definition piece.h:39
@ W_KNIGHT
Definition piece.h:39
@ P_SIZE
Definition piece.h:41
@ B_BISHOP
Definition piece.h:40
@ W_ROOK
Definition piece.h:39
@ B_ROOK
Definition piece.h:40
@ W_QUEEN
Definition piece.h:39
@ B_KING
Definition piece.h:40
@ P_EMPTY
Definition piece.h:38
@ B_KNIGHT
Definition piece.h:40
@ W_KING
Definition piece.h:39
@ B_PAWN
Definition piece.h:40
@ B_QUEEN
Definition piece.h:40
@ W_BISHOP
Definition piece.h:39
enum tPiece piece_t
Definition piece.h:44
void bPiece_ctor()
Definition piece.cpp:34
enum tCPiece cpiece_t
Definition piece.h:35
boardbitmap_t destinationbits_knight(case_t const iCase)
Definition piece.cpp:97
boardbitmap_t destinationbits_king(case_t const iCase)
Definition piece.cpp:84
boardbitmap_t destinationbits(case_t const iCase, int8_t const ri, int8_t const ci)
Definition piece.cpp:110
tPPiece
Definition piece.h:46
@ N_P_SIZE
Definition piece.h:49
@ N_P_KNIGHT
Definition piece.h:48
@ N_P_QUEEN
Definition piece.h:48
@ N_P_ROOK
Definition piece.h:48
@ N_P_BISHOP
Definition piece.h:48
@ N_P_EMPTY
Definition piece.h:47
tStatPiece
Definition piece.h:54
@ STAT_KNIGHT
Definition piece.h:56
@ STAT_BISHOP
Definition piece.h:56
@ STAT_ROOK
Definition piece.h:56
@ STAT_SIZE
Definition piece.h:57
@ STAT_PAWN
Definition piece.h:55
@ STAT_QUEEN
Definition piece.h:56
tSide
Definition piece.h:60
@ SIDE_BLACK
@ SIDE_WHITE
@ SIDE_UNDEFINED