X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=fairymax.c;h=007e54265109b8535a8e7d1ce89b061b0c6fcbfd;hb=bd8330e2a96caf8c610df5b22ca5ff67ab3a699b;hp=5ec3380b5c4c6264f71b7dbf2913fed52e8be1be;hpb=88dc8e222151bd89a99815735189eab5454f0aad;p=fairymax.git diff --git a/fairymax.c b/fairymax.c index 5ec3380..007e542 100644 --- a/fairymax.c +++ b/fairymax.c @@ -102,6 +102,7 @@ int GameNr; int Resign; char Cambodian[80] = "makruk"; int Threshold = 800; +int drawMoves = 50; int Score; int makruk; int prom, pm, gating, succession, hill; @@ -238,6 +239,7 @@ int k,q,l,e,E,z,n; /* (q,l)=window, e=current eval. score, E=e.p. sqr.*/ a->D=99;a->V=0; /* lock game in hash as draw*/ R-=i/FAC; /*** total captd material ***/ Fifty = t|p<3?0:Fifty+1; + if(centr[p]==5)b[257+y]-=5; sp=ps; return l;} /* & not in check, signal */ v=m; /* (prevent fail-lows on */ @@ -374,7 +376,7 @@ int PrintResult(int s) } return 3; } - if(Fifty >=100) { + if(Fifty >= 2*drawMoves) { printf("1/2-1/2 {Draw by fifty move rule}\n"); return 4; } @@ -458,6 +460,7 @@ void PrintOptions() printf("feature option=\"Multi-PV Margin -spin %d 0 1000\"\n", margin); printf("feature option=\"Variant fairy selects -combo "); PrintVariants(1); printf("\"\n"); printf("feature option=\"Makruk rules -combo makruk /// Cambodian /// Ai-wok\"\n"); + printf("feature option=\"Claim draw after -spin %d 0 200\"\n", drawMoves); printf("feature option=\"Dummy Slider Example -slider 20 0 100\"\n"); printf("feature option=\"Dummy String Example -string happy birthday!\"\n"); printf("feature option=\"Dummy Path Example -path .\"\n"); @@ -500,7 +503,7 @@ void LoadGame(char *name) /* We have found variant, or if none specified, are at beginning of file */ if(fscanf(f, "%dx%d", &BW, &BH)!=2 || BW>12 || BH!=8) { printf("telluser unsupported board size %dx%d\n",BW,BH); exit(0); } - makruk = 0; if(fscanf(f, "=%d", &i)) makruk=64; // new method to indicate deviant zone depth (for now assumes 3) + makruk = 0; if(fscanf(f, "=%d", &i)) makruk=67-i; // new method to indicate deviant zone depth (for now assumes 3) for(i=0; iTimeLeft/15) tlim = TimeLeft/15; PromPiece = 0; /* Always promote to Queen ourselves */ + for(N=K=0;K>8<2)centr[4]=5;if(!(N&S-2))centr[3]=5;Z+=R>4;R=4;} +printf("# %d+%d pieces, centr = (%d,%d)\n", N&63, N>>7, centr[3], centr[4]); N=0;K=I; if(hill) centr[3] = R>20 ? 1 : 22-R; if (D(Side,-I,I,Q,O,LL|S,3)==I) { @@ -587,7 +594,7 @@ int main(int argc, char **argv) m = GetTickCount() - Ticks; printf("# times @ %u: real=%d cpu=%1.0f\n", m + Ticks, m, (CPUtime() - cpuT)/CLOCKS_PER_SEC); -printf("promo = %d (%c) GT = %d\n", prom, prom + '`', GT); +printf("# promo = %d (%c) GT = %d\n", prom, prom + '`', GT); printf("move "); printf("%c%c%c%c",'a'+(K&15),'0'+BH-(K>>4), 'a'+(L&15),'0'+BH-(L>>4)); @@ -755,6 +762,7 @@ printf("promo = %d (%c) GT = %d\n", prom, prom + '`', GT); if(sscanf(line+7, "MultiVariation Margin=%d", &margin) == 1) continue; if(sscanf(line+7, "Variant fairy selects=%s", selectedFairy+6) == 1) continue; if(sscanf(line+7, "Makruk rules=%s", Cambodian) == 1) continue; + if(sscanf(line+7, "Claim draw after=%d", &drawMoves) == 1) continue; continue; } if (!strcmp(command, "go")) {