Make sure King-capture move is printed
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 18 Jan 2013 14:04:41 +0000 (15:04 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Fri, 18 Jan 2013 14:04:41 +0000 (15:04 +0100)
hachu.c

diff --git a/hachu.c b/hachu.c
index dcf4842..38ae201 100644 (file)
--- a/hachu.c
+++ b/hachu.c
@@ -2007,6 +2007,7 @@ SearchBestMove (int stm, int timeLeft, int mps, int timeControl, int inc, int ti
   tlim2 = 1.9*targetTime;\r
   nodes = 0;\r
 MapFromScratch(attacks);\r
+  retMove = INVALID;\r
   score = Search(-INF-1, INF+1, rootEval, 20, sup1, sup2);\r
   *move = retMove;\r
   *ponderMove = INVALID;\r
@@ -2056,6 +2057,19 @@ printf("# setup done");fflush(stdout);
           score = SearchBestMove(stm, timeLeft, mps, timeControl, inc, timePerMove, &move, &ponderMove);\r
 \r
           if(move == INVALID) {         // game apparently ended\r
+            int kcapt = 0, xstm = stm ^ WHITE, king, k = p[king=royal[xstm]].pos;\r
+            if( k != ABSENT) { // test if King capture possible\r
+              if(attacks[2*k + stm]) {\r
+                if( p[king + 2].pos == ABSENT ) kcapt = 1; // we have an attack on his only King\r
+              }\r
+            } else { // he has no king! Test for attacks on Crown Prince\r
+              k = p[king + 2].pos;\r
+              if(attacks[2*k + stm]) kcapt = 1; // we have attack on Crown Prince\r
+            }\r
+            if(kcapt) { // print King capture before claiming\r
+              GenCapts(k, 0);\r
+              printf("move %s\n", MoveToText(moveStack[msp-1], 1));\r
+            }\r
             engineSide = NONE;          // so stop playing\r
             PrintResult(stm, score);\r
           } else {\r