I'm new to the forum, greetings to all. As retired software developper I have some time over to learn game theory and to develop my own chess engine. Since I don't want to copy Stockfish code I'm writing all things for my own.

Currently i write code in C++/C for endgames for my evaluation function. My question:

In a King+Pawn v/s King endgame there is an easy way to check if the game is won or draw for the stronger side with a small table of 64x64x8 bytes.

Now, i devlop code for a King+Knight+Pawn v/s King endgame.

Is there any easy way to compute if this endgame is won or a draw for the stronger side without the use of endgame tablebases?

If the weaker King can capture the Pawn before the stronger King or Knight can defend it, the game will end as a draw.

  • There are also fortress positions such as knight defending pawn on seventh rank and king trapped in front of pawn. Commented Feb 8 at 8:16
  • @Lucenaposition: And stuff like Kh1 Pb4 Na6 - Kb5. Moreover, Kd6 Nd5 Pd7 - Kd8 and such. But everything else should be won. OP might check against "stalemate or fortress or pawn falls in 3 moves at most". Commented Feb 8 at 9:06


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.