[gnome-games] Make AI players claim draws where possible (Bug #592980)



commit cb9cae9bbbcce4bda4fb9d5a79773ff0dda62b1e
Author: Robert Ancell <robert ancell gmail com>
Date:   Tue Sep 1 10:45:36 2009 +1000

    Make AI players claim draws where possible (Bug #592980)

 glchess/src/lib/ai.py |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/glchess/src/lib/ai.py b/glchess/src/lib/ai.py
index e2411ac..dae8c13 100644
--- a/glchess/src/lib/ai.py
+++ b/glchess/src/lib/ai.py
@@ -182,7 +182,15 @@ class CECPConnection(cecp.Connection):
         else:
             assert(self.player.suppliedMove is None)
             self.player.suppliedMove = move
-        
+
+    def onResign(self):
+        """Called by cecp.Connection"""
+        self.player.resign()
+
+    def onDraw(self):
+        """Called by cecp.Connection"""
+        print self.player.claimDraw()
+
     def logText(self, text, style):
         """Called by cecp.Connection"""
         self.player.logText(text, style)
@@ -375,6 +383,12 @@ class Player(game.ChessPlayer):
         if self.__toEngineFd == None:
             self.die()
             return
+
+        # AI Engines always claim draw due to three-fold-repetition and
+        # 50 move rule
+        if self.claimDraw():
+            return
+        
         game = self.getGame()
         whiteTime = game.getWhite().getRemainingTime()
         blackTime = game.getBlack().getRemainingTime()
@@ -390,7 +404,11 @@ class Player(game.ChessPlayer):
             move = self.suppliedMove
             self.suppliedMove = None
             self.move(move)
-        
+
+            # AI Engines always claim draw due to three-fold-repetition and
+            # 50 move rule
+            self.claimDraw()
+
     def onGameEnded(self, game):
         """Called by game.ChessPlayer"""
         self.quit()



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