Code: Select all
int rook_mobility_black(int sq, int offsets[])
{
int q, *c = offsets, t = 0;
for ( ; *c; c++)
for (q = sq + *c; board[q] == npiece; q += *c)
t++;
for (q = sq + *c; board[q] == wknight; q += *c)
t++;
for (q = sq + *c; board[q] == wbishop; q += *c)
t++;
for (q = sq + *c; board[q] == wqueen; q += *c)
t++;
for (q = sq + *c; board[q] == wpawn; q += *c)
t++;
for (q = sq + *c; board[q] == wking; q += *c)
t++;
return t;
}
int black_queen_mobility(int sq) { return bishop_mobility_black(sq, b_ofs) + rook_mobility_black(sq,r_ofs) ; }
int black_rook_mobility(int sq) { return rook_mobility_black(sq, r_ofs); }
int black_bishop_mobility(int sq){ return bishop_mobility_black(sq, b_ofs); }
int white_queen_mobility(int sq) { return bishop_mobility_white(sq, b_ofs) + rook_mobility_white(sq,r_ofs) ; }
int white_rook_mobility(int sq) { return rook_mobility_white(sq, r_ofs); }
int white_bishop_mobility(int sq){ return bishop_mobility_white(sq, b_ofs); }