Remove under-promotion resign
[fairymax.git] / fairymax.c
index 8b28a6c..cf62466 100644 (file)
@@ -98,7 +98,6 @@ int MovesLeft;
 int MaxDepth;\r
 int Post;\r
 int Fifty;\r
-int UnderProm;\r
 int GameNr;\r
 int Resign;\r
 int Cambodian;\r
@@ -140,7 +139,7 @@ n[]=".*XKNBRQEWFMACHG?x+knbrqewfmachg";        /* piece symbols on printout*/
 int pv[10000],*sp=pv; // triangular array\r
 int margin;\r
 \r
-pboard()\r
+void pboard()\r
 {int i;\r
  i=-1;W(++i<128)printf(" %c",(i&15)==BW&&(i+=15-BW)?10:n[b[i]&31]);\r
 }\r
@@ -324,7 +323,7 @@ if(z&4*S)K=X,L=Y&~S;
 \r
 int PrintResult(int s)\r
 {\r
-        int i, j, k, cnt=0;\r
+        int j, k, cnt=0;\r
 \r
         /* search last 50 states with this stm for third repeat */\r
         for(j=2; j<=100 && j <= HistPtr; j+=2)\r
@@ -377,17 +376,15 @@ int PrintResult(int s)
 }\r
 \r
 \r
-InitEngine()\r
+void InitEngine()\r
 {\r
- int i, j;\r
-\r
  N=32*S+7;W(N-->S+3)T[N]=rand()>>9;\r
  srand(GetTickCount());\r
 }\r
 \r
-InitGame()\r
+void InitGame()\r
 {\r
- int i,j,k=0;\r
+ int i,k=0;\r
 \r
  Side = WHITE; Q=0; O=S;\r
  Fifty = 0; R = 0;\r
@@ -406,14 +403,14 @@ InitGame()
   if(w[oo[i]] < 0) k = w[oo[i]];\r
  }\r
  R -= 2*(-k/FAC);\r
- UnderProm = -1; pl[WHITE] = pl[BLACK] = 2*BW; \r
+ pl[WHITE] = pl[BLACK] = 2*BW; \r
  pm = !pl[BLACK+7] && pl[BLACK+9] && pl[WHITE+7] ? 2 : 0; // Unlike white, black has no 'Q', so promote to 9, which he does have.\r
  if(gating) pl[14] = pl[15] = pl[30] = pl[31] = 1, R += 2*(w[9]/FAC + w[10]/FAC);\r
 }\r
 \r
 void CopyBoard(int s)\r
 {\r
-        int i, j, k, cnt=0;\r
+        int i, j;\r
 \r
         /* copy game representation of engine to HistoryBoard */\r
         /* don't forget castling rights and e.p. state!       */\r
@@ -424,7 +421,7 @@ void CopyBoard(int s)
                                          \r
 void PrintVariants(int combo)\r
 {\r
-        int i, j, count=0, total=0; char c=EOF+1, buf[80];\r
+        int count=0, total=0; char c=EOF+1, buf[80];\r
         FILE *f;\r
 \r
         f = fopen(INI_FILE, "r");\r
@@ -461,7 +458,7 @@ void PrintOptions()
        printf("feature done=1\n");\r
 }\r
                                          \r
-int LoadGame(char *name)\r
+void LoadGame(char *name)\r
 {\r
         int i, j, ptc, count=0; char c, buf[80], pieceToChar[80];\r
         static int currentVariant;\r
@@ -469,7 +466,7 @@ int LoadGame(char *name)
 \r
         f = fopen(inifile, "r");\r
         if(f==NULL)\r
-        {   printf("telluser piece-desription file '%s'  not found\n", inifile);\r
+        {   printf("telluser piece-description file '%s'  not found\n", inifile);\r
             exit(0);\r
         }\r
         if(fscanf(f, "version 4.8(%c)", &c)!=1 || c != 'w')\r
@@ -531,11 +528,10 @@ int LoadGame(char *name)
 \r
 int main(int argc, char **argv)\r
 {\r
-        int Computer, MaxTime, MaxMoves, TimeInc, sec, i, j;\r
-        char line[256], command[256], c, cc;\r
-        int m, nr, hh;\r
+        int Computer, MaxTime, MaxMoves, TimeInc, sec, i;\r
+        char line[256], command[256], c;\r
+        int m, nr;\r
         double cpuT;\r
-        FILE *f;\r
 \r
         if(argc>1 && sscanf(argv[1], "%d", &m)==1)\r
         { U = (1<<m)-1; argc--; argv++; }\r
@@ -575,12 +571,6 @@ int main(int argc, char **argv)
                         N=0;K=I;\r
                         if (D(Side,-I,I,Q,O,LL|S,3)==I) {\r
                             Side ^= BLACK^WHITE;\r
-                            if(UnderProm>=0 && UnderProm != L)\r
-                            {    printf("tellics I hate under-promotions!\n");\r
-                                 printf("resign { underpromotion } \n");\r
-                                 Computer = EMPTY;\r
-                                 continue;\r
-                            } else UnderProm = -1;\r
                             m = GetTickCount() - Ticks;\r
                             printf("# times @ %u: real=%d cpu=%1.0f\n", m + Ticks, m,\r
                                       (CPUtime() - cpuT)/CLOCKS_PER_SEC);\r
@@ -614,7 +604,7 @@ int main(int argc, char **argv)
                         continue;\r
                }\r
                if (!fgets(line, 256, stdin))\r
-                       return;\r
+                       return 1;\r
                if (line[0] == '\n')\r
                        continue;\r
                sscanf(line, "%s", command);\r
@@ -666,7 +656,7 @@ int main(int argc, char **argv)
                }\r
                if (!strcmp(command, "quit"))\r
                         /* exit engine */\r
-                       return;\r
+                       return 0;\r
                if (!strcmp(command, "force")) {\r
                         /* computer plays neither */\r
                         Computer = EMPTY;\r
@@ -747,7 +737,7 @@ int main(int argc, char **argv)
                        if(sscanf(line+7, "Ini File=%s", filename) == 1) {\r
                                inifile = filename; continue;\r
                        }\r
-                       if(sscanf(line+7, "Clear Hash") == 1) for(i=0; i<=U; i++) A->K = 0;\r
+                       if(sscanf(line+7, "Clear Hash%c", &c) == 1) for(i=0; i<=U; i++) A->K = 0;\r
                        if(sscanf(line+7, "MultiVariation Margin=%d", &margin) == 1) continue;\r
                        if(sscanf(line+7, "Variant fairy selects=%s", selectedFairy+6) == 1) continue;\r
                        if(sscanf(line+7, "Cambodian Makruk rules=%d", &Cambodian) == 1) continue;\r