Piece is part of the Key.
It is the exclusive or of entries from the RANDOM_PIECE sub-array, one for each piece on the board.
The offset of the entry in RANDOM_PIECE corresponding to a piece is computed as follows:
piece = 64 * Piece_Type + 8 * Rank + File;
Piece_Type is encoded as:
constexpr int BlackPawn = 0; constexpr int WhitePawn = 1; constexpr int BlackKnight = 2; constexpr int WhiteKnight = 3; constexpr int BlackBishop = 4; constexpr int WhiteBishop = 5; constexpr int BlackRook = 6; constexpr int WhitekRook = 7; constexpr int BlackQueen = 8; constexpr int WhiteQueen = 9; constexpr int BlackKing = 10; constexpr int WhiteKing = 11; constexpr int None = 12;
Rank and File are counted from 0 to 7:
Square | File | Rank |
---|---|---|
a1 | 0 | 0 |
h1 | 7 | 0 |
a8 | 0 | 7 |
h8 | 7 | 7 |