X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fendgame.cpp;h=cbca34be37fa7508102e51b39aa36ccfb6480cb1;hp=cc6630439cdfdd743a905563b43a9c720835a852;hb=bf51b4796abd400648ba751fe545fd1785232a6b;hpb=8fb45caadef67fb2ccc27857c15ade987d9f5e2f diff --git a/src/endgame.cpp b/src/endgame.cpp index cc663043..cbca34be 100644 --- a/src/endgame.cpp +++ b/src/endgame.cpp @@ -99,7 +99,8 @@ namespace { string fen = sides[0] + char(8 - sides[0].length() + '0') + "/8/8/8/8/8/8/" + sides[1] + char(8 - sides[1].length() + '0') + " w - - 0 10"; - return Position(fen, false, nullptr).material_key(); + StateInfo st; + return Position().set(fen, false, &st, nullptr).material_key(); } } // namespace @@ -258,8 +259,8 @@ Value Endgame::operator()(const Position& pos) const { result = Value(80) - 8 * distance(wksq, psq); else - result = Value(200) - 8 * ( distance(wksq, psq + DELTA_S) - - distance(bksq, psq + DELTA_S) + result = Value(200) - 8 * ( distance(wksq, psq + SOUTH) + - distance(bksq, psq + SOUTH) - distance(psq, queeningSq)); return strongSide == pos.side_to_move() ? result : -result; @@ -495,7 +496,7 @@ ScaleFactor Endgame::operator()(const Position& pos) const { // If the defending king blocks the pawn and the attacking king is too far // away, it's a draw. if ( r <= RANK_5 - && bksq == wpsq + DELTA_N + && bksq == wpsq + NORTH && distance(wksq, wpsq) - tempo >= 2 && distance(wksq, brsq) - tempo >= 2) return SCALE_FACTOR_DRAW; @@ -516,10 +517,10 @@ ScaleFactor Endgame::operator()(const Position& pos) const { && file_of(wrsq) == f && wrsq < wpsq && (distance(wksq, queeningSq) < distance(bksq, queeningSq) - 2 + tempo) - && (distance(wksq, wpsq + DELTA_N) < distance(bksq, wpsq + DELTA_N) - 2 + tempo) + && (distance(wksq, wpsq + NORTH) < distance(bksq, wpsq + NORTH) - 2 + tempo) && ( distance(bksq, wrsq) + tempo >= 3 || ( distance(wksq, queeningSq) < distance(bksq, wrsq) + tempo - && (distance(wksq, wpsq + DELTA_N) < distance(bksq, wrsq) + tempo)))) + && (distance(wksq, wpsq + NORTH) < distance(bksq, wrsq) + tempo)))) return ScaleFactor( SCALE_FACTOR_MAX - 8 * distance(wpsq, queeningSq) - 2 * distance(wksq, queeningSq));