1
0
Fork 0
mirror of https://github.com/sockspls/badfish synced 2025-05-01 09:13:08 +00:00

Nicely simplify MovePicker::pick_move_from_list

It is a positive fall back from previous patch.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
Marco Costalba 2009-05-01 11:27:03 +02:00
parent 4e151f7e0d
commit cd1cc39b04

View file

@ -142,6 +142,7 @@ Move MovePicker::get_next_move() {
break; break;
case PH_BAD_CAPTURES: case PH_BAD_CAPTURES:
// It's probably a good idea to use SEE move ordering here. FIXME
movesPicked = 0; movesPicked = 0;
break; break;
@ -168,6 +169,7 @@ Move MovePicker::get_next_move() {
break; break;
case PH_QCHECKS: case PH_QCHECKS:
// Perhaps we should order moves move here? FIXME
numOfMoves = generate_non_capture_checks(pos, moves, dc); numOfMoves = generate_non_capture_checks(pos, moves, dc);
movesPicked = 0; movesPicked = 0;
break; break;
@ -311,31 +313,17 @@ void MovePicker::score_qcaptures() {
Move MovePicker::pick_move_from_list() { Move MovePicker::pick_move_from_list() {
Move move; assert(movesPicked >= 0);
assert(!pos.is_check() || PhaseTable[phaseIndex] == PH_EVASIONS || PhaseTable[phaseIndex] == PH_STOP);
assert( pos.is_check() || PhaseTable[phaseIndex] != PH_EVASIONS);
switch (PhaseTable[phaseIndex]) { switch (PhaseTable[phaseIndex]) {
case PH_GOOD_CAPTURES: case PH_GOOD_CAPTURES:
assert(!pos.is_check());
assert(movesPicked >= 0);
while (movesPicked < numOfMoves)
{
move = moves[movesPicked++].move;
if ( move != ttMove
&& move != mateKiller
&& pos.pl_move_is_legal(move, pinned))
return move;
}
break;
case PH_NONCAPTURES: case PH_NONCAPTURES:
assert(!pos.is_check());
assert(movesPicked >= 0);
while (movesPicked < numOfMoves) while (movesPicked < numOfMoves)
{ {
move = moves[movesPicked++].move; Move move = moves[movesPicked++].move;
if ( move != ttMove if ( move != ttMove
&& move != mateKiller && move != mateKiller
&& pos.pl_move_is_legal(move, pinned)) && pos.pl_move_is_legal(move, pinned))
@ -344,24 +332,15 @@ Move MovePicker::pick_move_from_list() {
break; break;
case PH_EVASIONS: case PH_EVASIONS:
assert(pos.is_check()); if (movesPicked < numOfMoves)
assert(movesPicked >= 0); return moves[movesPicked++].move;
while (movesPicked < numOfMoves) break;
{
move = moves[movesPicked++].move;
return move;
}
break;
case PH_BAD_CAPTURES: case PH_BAD_CAPTURES:
assert(!pos.is_check());
assert(movesPicked >= 0);
// It's probably a good idea to use SEE move ordering here, instead
// of just picking the first move. FIXME
while (movesPicked < numOfBadCaptures) while (movesPicked < numOfBadCaptures)
{ {
move = badCaptures[movesPicked++].move; Move move = badCaptures[movesPicked++].move;
if ( move != ttMove if ( move != ttMove
&& move != mateKiller && move != mateKiller
&& pos.pl_move_is_legal(move, pinned)) && pos.pl_move_is_legal(move, pinned))
@ -370,27 +349,11 @@ Move MovePicker::pick_move_from_list() {
break; break;
case PH_QCAPTURES: case PH_QCAPTURES:
assert(!pos.is_check());
assert(movesPicked >= 0);
while (movesPicked < numOfMoves)
{
move = moves[movesPicked++].move;
// Maybe postpone the legality check until after futility pruning?
if ( move != ttMove
&& pos.pl_move_is_legal(move, pinned))
return move;
}
break;
case PH_QCHECKS: case PH_QCHECKS:
assert(!pos.is_check());
assert(movesPicked >= 0);
// Perhaps we should do something better than just picking the first
// move here? FIXME
while (movesPicked < numOfMoves) while (movesPicked < numOfMoves)
{ {
move = moves[movesPicked++].move; Move move = moves[movesPicked++].move;
// Maybe postpone the legality check until after futility pruning?
if ( move != ttMove if ( move != ttMove
&& pos.pl_move_is_legal(move, pinned)) && pos.pl_move_is_legal(move, pinned))
return move; return move;