Implement printing of WB thinking output
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 6 Jul 2012 07:43:15 +0000 (09:43 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Fri, 6 Jul 2012 20:28:33 +0000 (22:28 +0200)
hachu.c

diff --git a/hachu.c b/hachu.c
index fd6cbfe..07398be 100644 (file)
--- a/hachu.c
+++ b/hachu.c
@@ -409,6 +409,13 @@ typedef struct {
   char age;\r
 } HashEntry; // hash-table entry\r
 \r
+    // Some global variables that control your engine's behavior\r
+    int ponder;\r
+    int randomize;\r
+    int postThinking;\r
+    int resign;         // engine-defined option\r
+    int contemptFactor; // likewise\r
+\r
 int squareKey[BSIZE];\r
 \r
 int rawBoard[BSIZE + 11*BW + 6];\r
@@ -1384,6 +1391,12 @@ if(PATH) printf("%d:%2d:%d %3d %6x %-10s %6d %6d\n", level, depth, iterDep, curM
     } // next move\r
   cutoff:\r
     if(!level) { // root node\r
+      if(postThinking > 0) {\r
+        int i;   // WB thinking output\r
+       printf("%d %d %d %d", iterDep, bestScore, (GetTickCount() - startTime)/10, nodes);\r
+       for(i=0; pv[i]; i++) printf(" %s", MoveToText(pv[i], 0));\r
+       printf("\n"); fflush(stdout);\r
+      }\r
       if(GetTickCount() - startTime > tlim1) break; // do not start iteration we can (most likely) not finish\r
     }\r
     replyDep = iterDep;\r
@@ -1590,7 +1603,9 @@ ParseMove (char *moveText)
   if(*moveText == '+') ret |= PROMOTE;\r
 printf("# suppress = %c%d\n", sup1%BW+'a', sup1/BW);\r
 MapFromScratch(attacks);\r
+  postThinking--;\r
   Search(-INF-1, INF+1, 0, 1, sup1, sup2);\r
+  postThinking++;\r
   for(i=retFirst; i<retMSP; i++) {\r
     if(moveStack[i] == INVALID) continue;\r
     if(c == '@' && (moveStack[i] & SQUARE) == (moveStack[i] >> SQLEN & SQUARE)) break; // any null move matches @@@@\r
@@ -1623,7 +1638,9 @@ Highlight(char *coords)
   ReadSquare(coords, &sqr);\r
 MapFromScratch(attacks);\r
 flag=1;\r
+  postThinking--;\r
   Search(-INF-1, INF+1, 0, 1, sup1, sup2);\r
+  postThinking++;\r
 flag=0;\r
   for(i=retFirst; i<retMSP; i++) {\r
     if(sqr == (moveStack[i]>>SQLEN & SQUARE)) {\r
@@ -1690,13 +1707,6 @@ PonderUntilInput (int stm)
 {\r
 }\r
 \r
-    // Some global variables that control your engine's behavior\r
-    int ponder;\r
-    int randomize;\r
-    int postThinking;\r
-    int resign;         // engine-defined option\r
-    int contemptFactor; // likewise\r
-\r
     int TakeBack(int n)\r
     { // reset the game and then replay it to the desired point\r
       int last, stm;\r