Implement variant seirawan, and add it
authorH.G. Muller <h.g.muller@hccnet.nl>
Tue, 16 Nov 2010 11:36:31 +0000 (12:36 +0100)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 16 Nov 2010 11:36:31 +0000 (12:36 +0100)
The gating is implemented through a kludge: the search is not aware that
pieces can be gated in, but any move that evacuates the back rank when
there are pieces to be gated available, will gate one (first Hawk, then
Elephant.

data/fmax.ini
fairymax.c

index d54b803..5fd76b8 100644 (file)
@@ -412,6 +412,21 @@ g:640 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7 2,7 30,7 32,7 34,7 -2,7 -30,7 -3
 m:-1  1,34 -1,34 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7 16,70 -16,70\r
 d:625 1,7 16,7 -1,7 -16,7 15,3 17,3 -15,3 -17,3\r
 \r
+// Seirawan Chess (with Archbishop and Chancellor gated in during game)\r
+Game: seirawan\r
+8x8\r
+5 3 4 7 9 4 3 5\r
+5 3 4 7 9 4 3 5\r
+p:74 -16,24 -16,6 -15,5 -17,5 \r
+p:74  16,24 16,6 15,5 17,5\r
+n:259 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7\r
+b:296 15,3 17,3 -15,3 -17,3\r
+R:444 1,3 16,3 -1,3 -16,3\r
+h:780 15,3 17,3 -15,3 -17,3 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7\r
+Q:851 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3\r
+E:814 1,3 16,3 -1,3 -16,3 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7\r
+k:-1  1,34 -1,34 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7\r
+\r
 // Set for Chess with Different Armies, FIDE vs Color-bound Cloberers (legality-testing off!)\r
 Game: fairy/FIDE-Clobberers\r
 8x8\r
index bb842da..205e89b 100644 (file)
@@ -225,6 +225,8 @@ int k,q,l,e,E,z,n;      /* (q,l)=window, e=current eval. score, E=e.p. sqr.*/
           R-=i/FAC;                            /*** total captd material ***/\r
           Fifty = t|p<3?0:Fifty+1;\r
           sp=ps;\r
+          if(!(u&32)&PromPiece&(K&112)==(k?0:112))\r
+           prom=b[K]=39+k-PromPiece,J++,pl[k+14-PromPiece]--; /* gating    */\r
                      return l;}                /*   & not in check, signal */\r
          v=m;                                  /* (prevent fail-lows on    */\r
         }                                      /*   K-capt. replies)       */\r
@@ -544,6 +546,7 @@ int main(int argc, char **argv)
                         tlim = (0.6-0.06*(BW-8))*(TimeLeft+(m-1)*TimeInc)/(m+7);\r
                         if(tlim>TimeLeft/15) tlim = TimeLeft/15;\r
                         PromPiece = 0; /* Always promote to Queen ourselves */\r
+                        if(pl[Side+13])PromPiece=1;else if(pl[Side+15])PromPiece=-1; /* S-Chess gating */\r
                         N=0;K=I;\r
                         if (D(Side,-I,I,Q,O,LL|S,3)==I) {\r
                             Side ^= BLACK^WHITE;\r
@@ -779,6 +782,7 @@ int main(int argc, char **argv)
                         sscanf(line, "variant %s", command);\r
                         LoadGame(command);\r
                         InitGame(); Setup = 0;\r
+                        if(strstr(command,"seirawan")) pl[13] = pl[15] = pl[29] = pl[31] = 1;\r
                        continue;\r
                }\r
                 if (!strcmp(command, "edit")) {\r