1
0
Fork 0

Fix KBNK endgame

Broken by recent patch. Also better document what's
happening there.

Verified to restore original behaviour.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
sf_2.3.1_base
Marco Costalba 2010-07-25 21:47:54 +01:00
parent 6b6f3c4ca4
commit 5ee7dfebf7
2 changed files with 5 additions and 2 deletions

View File

@ -152,7 +152,10 @@ Value EvaluationFunction<KBNK>::apply(const Position& pos) const {
Square loserKSq = pos.king_square(weakerSide);
Square bishopSquare = pos.piece_list(strongerSide, BISHOP, 0);
if (same_color_squares(bishopSquare, SQ_A1))
// kbnk_mate_table() tries to drive toward corners A1 or H8,
// if we have a bishop that cannot reach the above squares we
// mirror the kings so to drive enemy toward corners A8 or H1.
if (!same_color_squares(bishopSquare, SQ_A1))
{
winnerKSq = flop_square(winnerKSq);
loserKSq = flop_square(loserKSq);

View File

@ -400,7 +400,7 @@ void Position::print(Move move) const {
char c = (color_of_piece_on(sq) == BLACK ? '=' : ' ');
Piece piece = piece_on(sq);
if (piece == NO_PIECE && same_color_squares(sq, SQ_A1))
if (piece == NO_PIECE && square_color(sq) == DARK)
piece = NO_PIECE_DARK_SQ;
cout << c << pieceLetters.from_piece(piece) << c << '|';