Use the same scoring system used for evasions. Small if any
increase, but should be in at least for completeness.
After 999 games at 1+0
Mod vs Orig +208 =601 -190 +6 ELO
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
case PH_EVASIONS:
assert(pos.is_check());
lastMove = generate_evasions(pos, moves);
case PH_EVASIONS:
assert(pos.is_check());
lastMove = generate_evasions(pos, moves);
+ score_evasions_or_checks();
return;
case PH_QCAPTURES:
return;
case PH_QCAPTURES:
- // Perhaps we should order moves move here? FIXME
lastMove = generate_non_capture_checks(pos, moves);
lastMove = generate_non_capture_checks(pos, moves);
+ score_evasions_or_checks();
-void MovePicker::score_evasions() {
+void MovePicker::score_evasions_or_checks() {
// Try good captures ordered by MVV/LVA, then non-captures if
// destination square is not under attack, ordered by history
// value, and at the end bad-captures and non-captures with a
// Try good captures ordered by MVV/LVA, then non-captures if
// destination square is not under attack, ordered by history
// value, and at the end bad-captures and non-captures with a
+ // Skip if we don't have at least two moves to order
+ if (lastMove < moves + 2)
+ return;
+
for (MoveStack* cur = moves; cur != lastMove; cur++)
{
m = cur->move;
for (MoveStack* cur = moves; cur != lastMove; cur++)
{
m = cur->move;
private:
void score_captures();
void score_noncaptures();
private:
void score_captures();
void score_noncaptures();
+ void score_evasions_or_checks();
void go_next_phase();
const Position& pos;
void go_next_phase();
const Position& pos;