[gnome-chess/gnome-3-8] Fix failure to detect some threefold repetitions



commit 1aff504ba8081977c11020e4bcfd160a288e0ac4
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Sun Aug 11 10:23:47 2013 -0500

    Fix failure to detect some threefold repetitions
    
    We were considering the value of the previous move in the check for
    threefold repetition.  But the move is not relevant; the only thing that
    matters is that the board state is the same.

 src/chess-game.vala |   11 ++---------
 1 files changed, 2 insertions(+), 9 deletions(-)
---
diff --git a/src/chess-game.vala b/src/chess-game.vala
index 2a0060b..c896b61 100644
--- a/src/chess-game.vala
+++ b/src/chess-game.vala
@@ -415,21 +415,14 @@ public class ChessState
     public bool equals (ChessState state)
     {
         /* Check first if there is the same layout of pieces (unlikely),
-         * then the move castling and en-passant state are the same,
-         * then finally that it is the same move */
+         * then that the move castling and en-passant state are the same */
         if (piece_masks[Color.WHITE] != state.piece_masks[Color.WHITE] ||
             piece_masks[Color.BLACK] != state.piece_masks[Color.BLACK] || 
             can_castle_kingside[Color.WHITE] != state.can_castle_kingside[Color.WHITE] ||
             can_castle_queenside[Color.WHITE] != state.can_castle_queenside[Color.WHITE] ||
             can_castle_kingside[Color.BLACK] != state.can_castle_kingside[Color.BLACK] ||
             can_castle_queenside[Color.BLACK] != state.can_castle_queenside[Color.BLACK] ||
-            en_passant_index != state.en_passant_index ||
-            (last_move != null) != (state.last_move != null) ||
-            last_move.piece.type != state.last_move.piece.type ||
-            last_move.r0 != state.last_move.r0 ||
-            last_move.f0 != state.last_move.f0 ||
-            last_move.r1 != state.last_move.r1 ||
-            last_move.f1 != state.last_move.f1)
+            en_passant_index != state.en_passant_index)
             return false;
 
         /* Finally check the same piece types are present */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]