X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Fendgame.cpp;h=3e572205970d63cba9da91421e81bd291cf5e36c;hp=835173c468b68bed46b7159dfafe5e32d74c9b0a;hb=58bbbd176b81edb7137ee6314e4d5bf9f208106d;hpb=eb6d7f537d214c4dc8bde7d4fdc2aaead47dd3c3 diff --git a/src/endgame.cpp b/src/endgame.cpp index 835173c4..3e572205 100644 --- a/src/endgame.cpp +++ b/src/endgame.cpp @@ -286,6 +286,21 @@ Value Endgame::operator()(const Position& pos) const { } +/// KNN vs KP. Simply push the opposing king to the corner. +template<> +Value Endgame::operator()(const Position& pos) const { + + assert(verify_material(pos, strongSide, 2 * KnightValueMg, 0)); + assert(verify_material(pos, weakSide, VALUE_ZERO, 1)); + + Value result = 2 * KnightValueEg + - PawnValueEg + + PushToEdges[pos.square(weakSide)]; + + return strongSide == pos.side_to_move() ? result : -result; +} + + /// Some cases of trivial draws template<> Value Endgame::operator()(const Position&) const { return VALUE_DRAW; }