S(34,68), S(83,166), S(0, 0), S( 0, 0)
};
- // UnpairedPawnsTable[] gives a score according to the number
- // of panws that do not have an enemy pawn in front of them.
- const int UnpairedPawnsTable[8] = {
- SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL,
- SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL, SCALE_FACTOR_NORMAL
- };
-
// Pawn storm tables for positions with opposite castling
const int QStormTable[64] = {
0, 0, 0, 0, 0, 0, 0, 0,
int bonus;
Score value = make_score(0, 0);
const Square* ptr = pos.piece_list_begin(Us, PAWN);
- int unpairedPawnsNum = pos.piece_count(Us, PAWN);
// Initialize pawn storm scores by giving bonuses for open files
for (f = FILE_A; f <= FILE_H; f++)
doubled = ourPawns & squares_behind(Us, s);
opposed = theirPawns & squares_in_front_of(Us, s);
- // Decrease number of unpaired pawns
- if (opposed)
- unpairedPawnsNum--;
-
// We calculate kingside and queenside pawn storm
// scores for both colors. These are used when evaluating
// middle game positions with opposite side castling.
value += CandidateBonus[relative_rank(Us, s)];
}
- // Calculate a scale factor to be used to evaluate if position is drawish
- pi->factor[Us] = UnpairedPawnsTable[unpairedPawnsNum];
-
return value;
}