hedgewars/uAIAmmoTests.pas
changeset 3022 94afd5fc5738
parent 3018 13ceaad4767e
child 3066 5c0efa437728
equal deleted inserted replaced
3021:1d3302ac371f 3022:94afd5fc5738
   159 until (rTime > 4250);
   159 until (rTime > 4250);
   160 TestBazooka:= valueResult
   160 TestBazooka:= valueResult
   161 end;
   161 end;
   162 
   162 
   163 function TestMolotov(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
   163 function TestMolotov(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
   164 const tDelta = 24;
       
   165 var Vx, Vy, r: hwFloat;
   164 var Vx, Vy, r: hwFloat;
   166     Score, EX, EY, valueResult: LongInt;
   165     Score, EX, EY, valueResult: LongInt;
   167     TestTime: Longword;
   166     TestTime: Longword;
   168 
   167 
   169     function CheckTrace: LongInt;
   168     function CheckTrace: LongInt;
   188 begin
   187 begin
   189 valueResult:= BadTurn;
   188 valueResult:= BadTurn;
   190 TestTime:= 0;
   189 TestTime:= 0;
   191 ap.ExplR:= 0;
   190 ap.ExplR:= 0;
   192 repeat
   191 repeat
   193   inc(TestTime, 1000);
   192   inc(TestTime, 300);
   194   Vx:= (int2hwFloat(Targ.X) - Me^.X) / int2hwFloat(TestTime + tDelta);
   193   Vx:= (int2hwFloat(Targ.X) - Me^.X) / int2hwFloat(TestTime);
   195   Vy:= cGravity * ((TestTime + tDelta) div 2) - (int2hwFloat(Targ.Y) - Me^.Y) / int2hwFloat(TestTime + tDelta);
   194   Vy:= cGravity * (TestTime div 2) - (int2hwFloat(Targ.Y) - Me^.Y) / int2hwFloat(TestTime);
   196   r:= Distance(Vx, Vy);
   195   r:= Distance(Vx, Vy);
   197   if not (r > _1) then
   196   if not (r > _1) then
   198      begin
   197      begin
   199      Score:= CheckTrace;
   198      Score:= CheckTrace;
   200      if valueResult < Score then
   199      if valueResult < Score then
   206         ap.ExplX:= EX;
   205         ap.ExplX:= EX;
   207         ap.ExplY:= EY;
   206         ap.ExplY:= EY;
   208         valueResult:= Score
   207         valueResult:= Score
   209         end;
   208         end;
   210      end
   209      end
   211 until (TestTime = 4000);
   210 until (TestTime > 4250);
   212 TestMolotov:= valueResult
   211 TestMolotov:= valueResult
   213 end;
   212 end;
   214 
   213 
   215 function TestGrenade(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
   214 function TestGrenade(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
   216 const tDelta = 24;
   215 const tDelta = 24;