QBBEngine

From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * QBBEngine

A KTM Quad 990 ATV [1]

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.

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

  1. 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
  2. Pedone Chess Engine
  3. QBBEngine - a didactic engine

Up one Level