QBBEngine
Revision as of 11:36, 7 September 2020 by GerdIsenberg (talk | contribs)
QBBEngine,
a didactic UCI compliant open source chess engine by Fabio Gobbato, written in C and published as single source file along with Pedone, which apparently uses a similar representation [2].
The QBBEngine demonstrates the use of a compact quad-bitboard structure to represent the board,
and further applies alpha-beta search and an evaluation based on static values and piece-square tables [3].
The program performs a color agnostic move generation by flipping the board each time in make move.
Contents
Board-Definition
C Structure
/* Board structure definition PM,P0,P1,P2 are the 4 bitboards that contain the whole board PM is the bitboard with the side to move pieces P0,P1 and P2: with these bitboards you can obtain every type of pieces and every pieces combinations. */ typedef struct { TBB PM; TBB P0; TBB P1; TBB P2; uint8_t CastleFlags; /* ..sl..SL short long opponent SHORT LONG side to move */ uint8_t EnPassant; /* enpassant column, =8 if not set */ uint8_t Count50; /* 50 move rule counter */ uint8_t Rep; /* 0 if it's not a repetition, 1 if it is */ uint8_t STM; /* side to move */ } TBoard;
Piece Coding
The board-definition with vertical nibbles as piece or empty square codes, i.e. the initial position:
Square | 6 | 6 | 6 | 6 | 5 | 5 | 5 | 5 | 5 | ~ | 0 | ... | 0 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | 2 | 1 | 0 | 9 | 8 | 7 | 6 | 5 | ~ | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||||||
Piece | r | n | b | k | q | b | n | r | p | ~ | P | R | N | B | K | Q | B | N | R | |||||||
PM | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ~ | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | Side to Move | ||||||
P0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | ~ | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | P | . | B | . | Q | ||
P1 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | ~ | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | N | B | . | K | |||
P2 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | ~ | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | . | . | R | Q | K |
P2 RQK P1 NB K P0 P B Q PM side to move 1 . . 1 1 . . 1 . 1 1 . 1 1 1 . . . 1 1 . 1 . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 . . 1 1 . . 1 . 1 1 . 1 1 1 . . . 1 1 . 1 . . 1 1 1 1 1 1 1 1
See also
External Links
References
- ↑ A KTM Quad 990 ATV, custom-made from E-ATV Eicker Germany, Basevehicle was a KTM Supermotobike, Typ SM 990 with LC8 engine, Image by Stefan Krause, February 20, 2011, Wikimedia Commons
- ↑ Pedone Chess Engine
- ↑ QBBEngine - a didactic engine