mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-06 10:53:50 +08:00
Revert "Use ply counter in Position object"
Search ply and game ply are rwo different things ! Revert bogus commit. No functional change on bench, but it changes in real games when engine sends all the moves up to current one. Signed-off-by: Marco Costalba <mcostalba@gmail.com>
This commit is contained in:
@@ -703,7 +703,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI
|
||||
// pointer to point to the new, ready to be updated, state.
|
||||
struct ReducedStateInfo {
|
||||
Key pawnKey, materialKey;
|
||||
int castleRights, rule50, ply, pliesFromNull;
|
||||
int castleRights, rule50, gamePly, pliesFromNull;
|
||||
Square epSquare;
|
||||
Score value;
|
||||
Value npMaterial[2];
|
||||
@@ -715,7 +715,7 @@ void Position::do_move(Move m, StateInfo& newSt, const CheckInfo& ci, bool moveI
|
||||
|
||||
// Save the current key to the history[] array, in order to be able to
|
||||
// detect repetition draws.
|
||||
history[st->ply++] = key;
|
||||
history[st->gamePly++] = key;
|
||||
|
||||
// Update side to move
|
||||
key ^= zobSideToMove;
|
||||
@@ -1243,7 +1243,7 @@ void Position::do_null_move(StateInfo& backupSt) {
|
||||
|
||||
// Save the current key to the history[] array, in order to be able to
|
||||
// detect repetition draws.
|
||||
history[st->ply++] = st->key;
|
||||
history[st->gamePly++] = st->key;
|
||||
|
||||
// Update the necessary information
|
||||
if (st->epSquare != SQ_NONE)
|
||||
@@ -1278,7 +1278,7 @@ void Position::undo_null_move() {
|
||||
// Update the necessary information
|
||||
sideToMove = opposite_color(sideToMove);
|
||||
st->rule50--;
|
||||
st->ply--;
|
||||
st->gamePly--;
|
||||
}
|
||||
|
||||
|
||||
@@ -1481,15 +1481,15 @@ void Position::clear() {
|
||||
}
|
||||
|
||||
|
||||
/// Position::reset_ply() simply sets ply to 0. It is used from the
|
||||
/// Position::reset_game_ply() simply sets gamePly to 0. It is used from the
|
||||
/// UCI interface code, whenever a non-reversible move is made in a
|
||||
/// 'position fen <fen> moves m1 m2 ...' command. This makes it possible
|
||||
/// for the program to handle games of arbitrary length, as long as the GUI
|
||||
/// handles draws by the 50 move rule correctly.
|
||||
|
||||
void Position::reset_ply() {
|
||||
void Position::reset_game_ply() {
|
||||
|
||||
st->ply = 0;
|
||||
st->gamePly = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1666,11 +1666,9 @@ bool Position::is_draw() const {
|
||||
if (st->rule50 > 100 || (st->rule50 == 100 && !is_check()))
|
||||
return true;
|
||||
|
||||
assert(st->ply >= st->rule50);
|
||||
|
||||
// Draw by repetition?
|
||||
for (int i = 4, e = Min(st->rule50, st->pliesFromNull); i <= e; i += 2)
|
||||
if (history[st->ply - i] == st->key)
|
||||
for (int i = 4, e = Min(Min(st->gamePly, st->rule50), st->pliesFromNull); i <= e; i += 2)
|
||||
if (history[st->gamePly - i] == st->key)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user