mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Renaming in MovePicker
Rename stages and simplify a bit the code. No functional change.
This commit is contained in:
parent
01ee509a5c
commit
b96dd754ed
1 changed files with 58 additions and 55 deletions
113
src/movepick.cpp
113
src/movepick.cpp
|
@ -26,13 +26,12 @@
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
enum Stages {
|
enum Stages {
|
||||||
MAIN_SEARCH, GOOD_CAPTURES_INIT, GOOD_CAPTURES, KILLERS, KILLERS_2,
|
MAIN_SEARCH, CAPTURES_INIT, GOOD_CAPTURES, KILLERS, COUNTERMOVE, QUIET_INIT, QUIET, BAD_CAPTURES,
|
||||||
QUIET_INIT, QUIET, BAD_CAPTURES,
|
EVASION, EVASIONS_INIT, ALL_EVASIONS,
|
||||||
EVASION, ALL_EVASIONS,
|
PROBCUT, PROBCUT_INIT, PROBCUT_CAPTURES,
|
||||||
QSEARCH_WITH_CHECKS, QCAPTURES_CHECKS_INIT, QCAPTURES_CHECKS, CHECKS,
|
QSEARCH_WITH_CHECKS, QCAPTURES_1_INIT, QCAPTURES_1, QCHECKS,
|
||||||
QSEARCH_WITHOUT_CHECKS, QCAPTURES_NO_CHECKS, REMAINING,
|
QSEARCH_NO_CHECKS, QCAPTURES_2_INIT, QCAPTURES_2,
|
||||||
RECAPTURE, RECAPTURES,
|
QSEARCH_RECAPTURES, QRECAPTURES
|
||||||
PROBCUT, PROBCUT_INIT, PROBCUT_CAPTURES
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Our insertion sort, which is guaranteed to be stable, as it should be
|
// Our insertion sort, which is guaranteed to be stable, as it should be
|
||||||
|
@ -92,11 +91,11 @@ MovePicker::MovePicker(const Position& p, Move ttm, Depth d, Square s)
|
||||||
stage = QSEARCH_WITH_CHECKS;
|
stage = QSEARCH_WITH_CHECKS;
|
||||||
|
|
||||||
else if (d > DEPTH_QS_RECAPTURES)
|
else if (d > DEPTH_QS_RECAPTURES)
|
||||||
stage = QSEARCH_WITHOUT_CHECKS;
|
stage = QSEARCH_NO_CHECKS;
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
stage = RECAPTURE;
|
stage = QSEARCH_RECAPTURES;
|
||||||
recaptureSquare = s;
|
recaptureSquare = s;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -192,11 +191,11 @@ Move MovePicker::next_move() {
|
||||||
switch (stage) {
|
switch (stage) {
|
||||||
|
|
||||||
case MAIN_SEARCH: case EVASION: case QSEARCH_WITH_CHECKS:
|
case MAIN_SEARCH: case EVASION: case QSEARCH_WITH_CHECKS:
|
||||||
case QSEARCH_WITHOUT_CHECKS: case PROBCUT:
|
case QSEARCH_NO_CHECKS: case PROBCUT:
|
||||||
++stage;
|
++stage;
|
||||||
return ttMove;
|
return ttMove;
|
||||||
|
|
||||||
case GOOD_CAPTURES_INIT:
|
case CAPTURES_INIT:
|
||||||
endBadCaptures = cur = moves;
|
endBadCaptures = cur = moves;
|
||||||
endMoves = generate<CAPTURES>(pos, cur);
|
endMoves = generate<CAPTURES>(pos, cur);
|
||||||
score<CAPTURES>();
|
score<CAPTURES>();
|
||||||
|
@ -215,10 +214,9 @@ Move MovePicker::next_move() {
|
||||||
*endBadCaptures++ = move;
|
*endBadCaptures++ = move;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
++stage;
|
|
||||||
|
|
||||||
// First killer move
|
++stage;
|
||||||
move = ss->killers[0];
|
move = ss->killers[0]; // First killer move
|
||||||
if ( move != MOVE_NONE
|
if ( move != MOVE_NONE
|
||||||
&& move != ttMove
|
&& move != ttMove
|
||||||
&& pos.pseudo_legal(move)
|
&& pos.pseudo_legal(move)
|
||||||
|
@ -234,7 +232,7 @@ Move MovePicker::next_move() {
|
||||||
&& !pos.capture(move))
|
&& !pos.capture(move))
|
||||||
return move;
|
return move;
|
||||||
|
|
||||||
case KILLERS_2:
|
case COUNTERMOVE:
|
||||||
++stage;
|
++stage;
|
||||||
move = countermove;
|
move = countermove;
|
||||||
if ( move != MOVE_NONE
|
if ( move != MOVE_NONE
|
||||||
|
@ -276,58 +274,20 @@ Move MovePicker::next_move() {
|
||||||
return *cur++;
|
return *cur++;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ALL_EVASIONS:
|
case EVASIONS_INIT:
|
||||||
cur = moves;
|
cur = moves;
|
||||||
endMoves = generate<EVASIONS>(pos, cur);
|
endMoves = generate<EVASIONS>(pos, cur);
|
||||||
if (endMoves - cur > 1)
|
if (endMoves - cur > 1)
|
||||||
score<EVASIONS>();
|
score<EVASIONS>();
|
||||||
stage = REMAINING;
|
|
||||||
goto remaining;
|
|
||||||
|
|
||||||
case QCAPTURES_CHECKS_INIT:
|
|
||||||
case QCAPTURES_NO_CHECKS:
|
|
||||||
cur = moves;
|
|
||||||
endMoves = generate<CAPTURES>(pos, cur);
|
|
||||||
score<CAPTURES>();
|
|
||||||
++stage;
|
++stage;
|
||||||
|
|
||||||
remaining:
|
case ALL_EVASIONS:
|
||||||
case QCAPTURES_CHECKS:
|
|
||||||
case REMAINING:
|
|
||||||
while (cur < endMoves)
|
while (cur < endMoves)
|
||||||
{
|
{
|
||||||
move = pick_best(cur++, endMoves);
|
move = pick_best(cur++, endMoves);
|
||||||
if (move != ttMove)
|
if (move != ttMove)
|
||||||
return move;
|
return move;
|
||||||
}
|
}
|
||||||
if (stage == REMAINING)
|
|
||||||
break;
|
|
||||||
cur = moves;
|
|
||||||
endMoves = generate<QUIET_CHECKS>(pos, cur);
|
|
||||||
++stage;
|
|
||||||
|
|
||||||
case CHECKS:
|
|
||||||
while (cur < endMoves)
|
|
||||||
{
|
|
||||||
move = cur++->move;
|
|
||||||
if (move != ttMove)
|
|
||||||
return move;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case RECAPTURE:
|
|
||||||
cur = moves;
|
|
||||||
endMoves = generate<CAPTURES>(pos, cur);
|
|
||||||
score<CAPTURES>();
|
|
||||||
++stage;
|
|
||||||
|
|
||||||
case RECAPTURES:
|
|
||||||
while (cur < endMoves)
|
|
||||||
{
|
|
||||||
move = pick_best(cur++, endMoves);
|
|
||||||
if (to_sq(move) == recaptureSquare)
|
|
||||||
return move;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROBCUT_INIT:
|
case PROBCUT_INIT:
|
||||||
|
@ -346,6 +306,49 @@ remaining:
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case QCAPTURES_1_INIT: case QCAPTURES_2_INIT:
|
||||||
|
cur = moves;
|
||||||
|
endMoves = generate<CAPTURES>(pos, cur);
|
||||||
|
score<CAPTURES>();
|
||||||
|
++stage;
|
||||||
|
|
||||||
|
case QCAPTURES_1: case QCAPTURES_2:
|
||||||
|
while (cur < endMoves)
|
||||||
|
{
|
||||||
|
move = pick_best(cur++, endMoves);
|
||||||
|
if (move != ttMove)
|
||||||
|
return move;
|
||||||
|
}
|
||||||
|
if (stage == QCAPTURES_2)
|
||||||
|
break;
|
||||||
|
cur = moves;
|
||||||
|
endMoves = generate<QUIET_CHECKS>(pos, cur);
|
||||||
|
++stage;
|
||||||
|
|
||||||
|
case QCHECKS:
|
||||||
|
while (cur < endMoves)
|
||||||
|
{
|
||||||
|
move = cur++->move;
|
||||||
|
if (move != ttMove)
|
||||||
|
return move;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case QSEARCH_RECAPTURES:
|
||||||
|
cur = moves;
|
||||||
|
endMoves = generate<CAPTURES>(pos, cur);
|
||||||
|
score<CAPTURES>();
|
||||||
|
++stage;
|
||||||
|
|
||||||
|
case QRECAPTURES:
|
||||||
|
while (cur < endMoves)
|
||||||
|
{
|
||||||
|
move = pick_best(cur++, endMoves);
|
||||||
|
if (to_sq(move) == recaptureSquare)
|
||||||
|
return move;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue