if ( ((ss >> col) && (col >= 'a' && col <= 'h'))
&& ((ss >> row) && (row == '3' || row == '6')))
{
- st->epSquare = make_square(file_from_char(col), rank_from_char(row));
+ st->epSquare = make_square(File(col - 'a') + FILE_A, Rank(row - '1') + RANK_1);
// Ignore if no capture is possible
Color them = opposite_color(sideToMove);
void Position::init_zobrist() {
- int i,j, k;
RKISS rk;
- for (i = 0; i < 2; i++) for (j = 0; j < 8; j++) for (k = 0; k < 64; k++)
- zobrist[i][j][k] = rk.rand<Key>();
+ for (Color c = WHITE; c <= BLACK; c++)
+ for (PieceType pt = PAWN; pt <= KING; pt++)
+ for (Square s = SQ_A1; s <= SQ_H8; s++)
+ zobrist[c][pt][s] = rk.rand<Key>();
- for (i = 0; i < 64; i++)
- zobEp[i] = rk.rand<Key>();
+ for (Square s = SQ_A1; s <= SQ_H8; s++)
+ zobEp[s] = rk.rand<Key>();
- for (i = 0; i < 16; i++)
+ for (int i = 0; i < 16; i++)
zobCastle[i] = rk.rand<Key>();
zobSideToMove = rk.rand<Key>();
if (failedStep) *failedStep = 1;
// Side to move OK?
- if (!color_is_ok(side_to_move()))
+ if (side_to_move() != WHITE && side_to_move() != BLACK)
return false;
// Are the king squares in the position correct?
// Castle files OK?
if (failedStep) (*failedStep)++;
- if (!file_is_ok(initialKRFile))
+ if (!square_is_ok(make_square(initialKRFile, RANK_1)))
return false;
- if (!file_is_ok(initialQRFile))
+ if (!square_is_ok(make_square(initialQRFile, RANK_1)))
return false;
// Do both sides have exactly one king?