Changes

Jump to: navigation, search

QBBEngine

743 bytes added, 11:36, 7 September 2020
no edit summary
'''QBBEngine''',<br/>
a didactic [[UCI]] compliant [[:Category:Open Source|open source chess engine]] by [[Fabio Gobbato]], written in [[C]] and published as single source file on the along with [[Pedone]] site , which apparently uses a similar representation <ref>[https://sites.google.com/site/pedonechess/ Pedone Chess Engine]</ref>.
The QBBEngine demonstrates the use of a compact [[Quad-Bitboards|quad-bitboard]] structure to [[Board Representation|represent the board]],
and further applies [[Alpha-Beta|alpha-beta search]] and an [[Evaluation|evaluation]] based on static values and [[Piece-Square Tables|piece-square tables]] <ref>[https://sites.google.com/site/pedonechess/a-didactic-engine QBBEngine - a didactic engine]</ref>.
The program performs a color agnostic [[Move Generation|move generation]] by [[Color Flipping|flipping]] the board each time in [[Make Move|make move]].
=Board-Definition===C Structure==<pre>/*Board structure definition PM,P0,P1,P2 are the 4 bitboards that contain the whole boardPM is the bitboard with the side to move piecesP0,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;</pre>==Piece Coding== The [[Bitboard Board-Definition|board-definition]] with vertical [[Nibble|nibbles]] as [[Pieces#PieceCoding|piece or empty square codes]], i.e. the [[Initial Position|initial position]]:
{| class="wikitable"
|-

Navigation menu