Fix time forfeits at classical TC hgm
authorH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 7 Mar 2014 18:13:54 +0000 (19:13 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Fri, 7 Mar 2014 18:13:54 +0000 (19:13 +0100)
GNU Shogi often forfeited in the last move of a classical-TC session,
because its ResponseTime + Extra time could go up to 3.5/3 times
the remaining clock time T: ReponseTime = T/3 and ExtraTime =
10*TCleft = 10*(ResponseTime/4) = 2.5*ResponseTime. To prevent the
number of times ResponseTime can be extended with TCleft (as controlled
by TCcount) is reduced from 10 to 6 + MovesLeft.

gnushogi/tcontrl.c

index afdb32c..fda4534 100644 (file)
@@ -177,7 +177,7 @@ void SetResponseTime(short side)
 
             if (TimeControl.moves[side] < 5)
             {
-                TCcount = MAXTCCOUNTX - 10;
+                TCcount = MAXTCCOUNTX - 6 - TimeControl.moves[side];
 
                 if (TCcount < 0)
                     TCcount = 0;