Changeset 25


Ignore:
Timestamp:
Sep 29, 2011, 6:03:28 PM (13 years ago)
Author:
george
Message:
  • Added: Decrease tank energy on bullet fire.
  • Fixed: Do not hit self by own bullets.
  • Fixed: Shoot bullets in minimum interval.
Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/UCore.pas

    r24 r25  
    88  Dialogs, Classes, SysUtils, Contnrs, Graphics, SpecializedMatrix, SpecializedList,
    99  IntfGraphics, FPImage, LCLType, SpecializedBitmap, GraphType, Math, URectangle,
    10   Syncobjs, UThreading, Forms;
     10  Syncobjs, UThreading, Forms, DateUtils;
    1111
    1212const
     
    1919  ExplosionBulletMinSpeed = 0.2;
    2020  BulletExplosionRange = 3;
     21  ShootDelay = 0.2; // seconds
     22  ShootEnergyDecrease = 0.01;
    2123
    2224type
     
    6769    miPlayer8Cannon, miPlayer8Home, miPlayer8TankBody, miPlayer8TankBody2);
    6870
    69   TMatterKind = (mkSpace, mkDirt, mkRock, mkCannon, mkBullet, mkTankBody,
     71  TMatterKind = (mkSpace, mkDirt, mkRock, mkBullet, mkTankBody,
    7072    mkHome);
    7173
     
    9395    Tanks: TListObject; // TListObject<TTank>
    9496    Bullets: TListObject; // TListObject<TBullet>
     97    LastShootTime: TDateTime;
    9598    Energy: Real;
    9699    LastEnergy: Real;
     
    328331  // Player 1 cannon
    329332  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    330     Kind := mkCannon;
     333    Kind := mkTankBody;
    331334    Color := clYellow;
    332335    Player := 0;
     
    353356  // Player 2 cannon
    354357  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    355     Kind := mkCannon;
     358    Kind := mkTankBody;
    356359    Color := clYellow;
    357360    Player := 1;
     
    378381  // Player 3 cannon
    379382  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    380     Kind := mkCannon;
     383    Kind := mkTankBody;
    381384    Color := clYellow;
    382385    Player := 2;
     
    403406  // Player 4 cannon
    404407  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    405     Kind := mkCannon;
     408    Kind := mkTankBody;
    406409    Color := clYellow;
    407410    Player := 3;
     
    428431  // Player 5 cannon
    429432  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    430     Kind := mkCannon;
     433    Kind := mkTankBody;
    431434    Color := clYellow;
    432435    Player := 4;
     
    453456  // Player 6 cannon
    454457  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    455     Kind := mkCannon;
     458    Kind := mkTankBody;
    456459    Color := clYellow;
    457460    Player := 5;
     
    478481  // Player 7 cannon
    479482  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    480     Kind := mkCannon;
     483    Kind := mkTankBody;
    481484    Color := clYellow;
    482485    Player := 6;
     
    503506  // Player 8 cannon
    504507  with TMatter(Matter.AddNew(TMatter.Create)) do begin
    505     Kind := mkCannon;
     508    Kind := mkTankBody;
    506509    Color := clYellow;
    507510    Player := 7;
     
    674677
    675678  if Engine.KeyBoard.KeyState[Ord(Keys.Shoot)] then
    676     if Bullets.Count < MaxBulletCount then begin
     679    if (Bullets.Count < MaxBulletCount) and
     680    ((Now - LastShootTime) > ShootDelay * OneSecond) then begin
    677681      NewBullet := TBullet.Create;
    678682      NewBullet.Player := Self;
     
    683687      NewBullet.StopByDirt := True;
    684688      Bullets.Add(NewBullet);
     689      LastShootTime := Now;
     690
     691      Energy := Energy - ShootEnergyDecrease;
     692      if Energy < 0 then Energy := 0;
    685693    end;
    686694end;
     
    763771          for P := 0 to Engine.Players.Count - 1 do
    764772          with TPlayer(Engine.Players[P]) do
    765           if (TMatter(Engine.World.Matter[ItemsXY[Pos.X, Pos.Y]]).Kind = mkTankBody) and
     773          if (Id <> P) and
     774            (TMatter(Engine.World.Matter[ItemsXY[Pos.X, Pos.Y]]).Kind = mkTankBody) and
    766775            (TMatter(Engine.World.Matter[ItemsXY[Pos.X, Pos.Y]]).Player = P) then
    767776            Shield := Shield - 1 / ShieldSteps;
  • trunk/tunneler.lpi

    r24 r25  
    3131      </local>
    3232    </RunParams>
    33     <RequiredPackages Count="4">
     33    <RequiredPackages Count="3">
    3434      <Item1>
    3535        <PackageName Value="CoolTranslator"/>
    3636      </Item1>
    3737      <Item2>
    38         <PackageName Value="LCLBase"/>
    39         <MinVersion Major="1" Release="1" Valid="True"/>
     38        <PackageName Value="TemplateGenerics"/>
    4039      </Item2>
    4140      <Item3>
    42         <PackageName Value="TemplateGenerics"/>
     41        <PackageName Value="LCL"/>
    4342      </Item3>
    44       <Item4>
    45         <PackageName Value="LCL"/>
    46       </Item4>
    4743    </RequiredPackages>
    4844    <Units Count="71">
     
    5147        <IsPartOfProject Value="True"/>
    5248        <UnitName Value="tunneler"/>
    53         <EditorIndex Value="7"/>
    5449        <WindowIndex Value="0"/>
    5550        <TopLine Value="1"/>
    5651        <CursorPos X="61" Y="10"/>
    57         <UsageCount Value="116"/>
    58         <Loaded Value="True"/>
     52        <UsageCount Value="117"/>
    5953      </Unit0>
    6054      <Unit1>
     
    7266        <IsPartOfProject Value="True"/>
    7367        <UnitName Value="UCore"/>
     68        <IsVisibleTab Value="True"/>
    7469        <EditorIndex Value="0"/>
    7570        <WindowIndex Value="0"/>
    76         <TopLine Value="739"/>
    77         <CursorPos X="14" Y="766"/>
    78         <UsageCount Value="116"/>
     71        <TopLine Value="756"/>
     72        <CursorPos X="22" Y="773"/>
     73        <UsageCount Value="117"/>
    7974        <Loaded Value="True"/>
    8075      </Unit2>
     
    120115      <Unit8>
    121116        <Filename Value="../../../lazarus/lcl/include/rasterimage.inc"/>
    122         <EditorIndex Value="1"/>
    123117        <WindowIndex Value="0"/>
    124118        <TopLine Value="453"/>
    125119        <CursorPos X="1" Y="470"/>
    126120        <UsageCount Value="11"/>
    127         <Loaded Value="True"/>
    128121      </Unit8>
    129122      <Unit9>
     
    144137      <Unit11>
    145138        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    146         <EditorIndex Value="16"/>
    147139        <WindowIndex Value="0"/>
    148140        <TopLine Value="152"/>
    149141        <CursorPos X="1" Y="174"/>
    150142        <UsageCount Value="49"/>
    151         <Loaded Value="True"/>
    152143      </Unit11>
    153144      <Unit12>
     
    176167      <Unit15>
    177168        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericList.inc"/>
    178         <EditorIndex Value="2"/>
    179169        <WindowIndex Value="0"/>
    180170        <TopLine Value="115"/>
    181171        <CursorPos X="1" Y="132"/>
    182172        <UsageCount Value="27"/>
    183         <Loaded Value="True"/>
    184173      </Unit15>
    185174      <Unit16>
     
    333322      <Unit36>
    334323        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericBitmap.inc"/>
    335         <EditorIndex Value="15"/>
    336324        <WindowIndex Value="0"/>
    337325        <TopLine Value="1"/>
    338326        <CursorPos X="20" Y="26"/>
    339327        <UsageCount Value="36"/>
    340         <Loaded Value="True"/>
    341328      </Unit36>
    342329      <Unit37>
    343330        <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Specialized/SpecializedBitmap.pas"/>
    344331        <UnitName Value="SpecializedBitmap"/>
    345         <EditorIndex Value="14"/>
    346332        <WindowIndex Value="0"/>
    347333        <TopLine Value="47"/>
    348334        <CursorPos X="22" Y="21"/>
    349335        <UsageCount Value="25"/>
    350         <Loaded Value="True"/>
    351336      </Unit37>
    352337      <Unit38>
     
    400385        <IsPartOfProject Value="True"/>
    401386        <UnitName Value="UPlatform"/>
    402         <UsageCount Value="75"/>
     387        <UsageCount Value="76"/>
    403388      </Unit44>
    404389      <Unit45>
     
    445430        <IsPartOfProject Value="True"/>
    446431        <UnitName Value="URectangle"/>
    447         <EditorIndex Value="19"/>
    448432        <WindowIndex Value="0"/>
    449433        <TopLine Value="120"/>
    450434        <CursorPos X="44" Y="150"/>
    451         <UsageCount Value="60"/>
    452         <Loaded Value="True"/>
     435        <UsageCount Value="61"/>
    453436      </Unit50>
    454437      <Unit51>
     
    471454        <IsPartOfProject Value="True"/>
    472455        <UnitName Value="UPersistentForm"/>
    473         <EditorIndex Value="17"/>
    474456        <WindowIndex Value="0"/>
    475457        <TopLine Value="69"/>
    476458        <CursorPos X="3" Y="90"/>
    477         <UsageCount Value="53"/>
    478         <Loaded Value="True"/>
     459        <UsageCount Value="54"/>
    479460      </Unit53>
    480461      <Unit54>
     
    482463        <IsPartOfProject Value="True"/>
    483464        <UnitName Value="UApplicationInfo"/>
    484         <IsVisibleTab Value="True"/>
    485         <EditorIndex Value="18"/>
    486465        <WindowIndex Value="0"/>
    487466        <TopLine Value="29"/>
    488467        <CursorPos X="20" Y="56"/>
    489         <UsageCount Value="53"/>
    490         <Loaded Value="True"/>
     468        <UsageCount Value="54"/>
    491469      </Unit54>
    492470      <Unit55>
     
    494472        <IsPartOfProject Value="True"/>
    495473        <UnitName Value="URegistry"/>
    496         <UsageCount Value="52"/>
     474        <UsageCount Value="53"/>
    497475      </Unit55>
    498476      <Unit56>
     
    521499        <IsPartOfProject Value="True"/>
    522500        <UnitName Value="UThreading"/>
    523         <EditorIndex Value="9"/>
    524501        <WindowIndex Value="0"/>
    525502        <TopLine Value="34"/>
    526503        <CursorPos X="35" Y="51"/>
    527         <UsageCount Value="44"/>
    528         <Loaded Value="True"/>
     504        <UsageCount Value="45"/>
    529505      </Unit59>
    530506      <Unit60>
    531507        <Filename Value="/usr/share/fpcsrc/2.4.2/packages/fcl-base/src/contnrs.pp"/>
    532508        <UnitName Value="contnrs"/>
    533         <EditorIndex Value="8"/>
    534509        <WindowIndex Value="0"/>
    535510        <TopLine Value="55"/>
    536511        <CursorPos X="3" Y="72"/>
    537512        <UsageCount Value="21"/>
    538         <Loaded Value="True"/>
    539513      </Unit60>
    540514      <Unit61>
     
    544518        <ResourceBaseClass Value="Form"/>
    545519        <UnitName Value="UNewGameForm"/>
    546         <EditorIndex Value="3"/>
     520        <EditorIndex Value="1"/>
    547521        <WindowIndex Value="0"/>
    548522        <TopLine Value="44"/>
    549523        <CursorPos X="23" Y="65"/>
    550         <UsageCount Value="44"/>
     524        <UsageCount Value="45"/>
    551525        <Loaded Value="True"/>
    552526        <LoadedDesigner Value="True"/>
     
    559533        <ResourceBaseClass Value="Form"/>
    560534        <UnitName Value="UMainForm"/>
    561         <EditorIndex Value="4"/>
    562         <WindowIndex Value="0"/>
    563         <TopLine Value="183"/>
    564         <CursorPos X="3" Y="206"/>
    565         <UsageCount Value="44"/>
     535        <WindowIndex Value="0"/>
     536        <TopLine Value="184"/>
     537        <CursorPos X="76" Y="195"/>
     538        <UsageCount Value="45"/>
    566539        <Loaded Value="True"/>
    567540        <LoadedDesigner Value="True"/>
     
    574547        <ResourceBaseClass Value="Form"/>
    575548        <UnitName Value="UMapForm"/>
    576         <EditorIndex Value="20"/>
    577549        <WindowIndex Value="0"/>
    578550        <TopLine Value="14"/>
    579551        <CursorPos X="19" Y="32"/>
    580         <UsageCount Value="44"/>
    581         <Loaded Value="True"/>
    582         <LoadedDesigner Value="True"/>
     552        <UsageCount Value="45"/>
    583553      </Unit63>
    584554      <Unit64>
    585555        <Filename Value="../../PascalClassLibrary/CoolTranslator/ULanguages.pas"/>
    586556        <UnitName Value="ULanguages"/>
    587         <EditorIndex Value="6"/>
    588557        <WindowIndex Value="0"/>
    589558        <TopLine Value="3"/>
    590559        <CursorPos X="14" Y="20"/>
    591560        <UsageCount Value="21"/>
    592         <Loaded Value="True"/>
    593561      </Unit64>
    594562      <Unit65>
    595563        <Filename Value="../../PascalClassLibrary/CoolTranslator/UCoolTranslator.pas"/>
    596564        <UnitName Value="UCoolTranslator"/>
    597         <EditorIndex Value="5"/>
    598565        <WindowIndex Value="0"/>
    599566        <TopLine Value="31"/>
    600567        <CursorPos X="39" Y="33"/>
    601568        <UsageCount Value="21"/>
    602         <Loaded Value="True"/>
    603569      </Unit65>
    604570      <Unit66>
     
    612578      <Unit67>
    613579        <Filename Value="/usr/share/fpcsrc/2.4.2/rtl/objpas/classes/classesh.inc"/>
    614         <EditorIndex Value="10"/>
    615580        <WindowIndex Value="0"/>
    616581        <TopLine Value="1508"/>
    617582        <CursorPos X="17" Y="1512"/>
    618583        <UsageCount Value="11"/>
    619         <Loaded Value="True"/>
    620584      </Unit67>
    621585      <Unit68>
    622586        <Filename Value="/usr/share/fpcsrc/2.4.2/rtl/unix/tthread.inc"/>
    623         <EditorIndex Value="11"/>
    624587        <WindowIndex Value="0"/>
    625588        <TopLine Value="1"/>
    626589        <CursorPos X="33" Y="15"/>
    627590        <UsageCount Value="11"/>
    628         <Loaded Value="True"/>
    629591      </Unit68>
    630592      <Unit69>
    631593        <Filename Value="/usr/share/fpcsrc/2.4.2/rtl/inc/threadh.inc"/>
    632         <EditorIndex Value="12"/>
    633594        <WindowIndex Value="0"/>
    634595        <TopLine Value="50"/>
    635596        <CursorPos X="5" Y="67"/>
    636597        <UsageCount Value="11"/>
    637         <Loaded Value="True"/>
    638598      </Unit69>
    639599      <Unit70>
    640600        <Filename Value="/usr/share/fpcsrc/2.4.2/rtl/inc/thread.inc"/>
    641         <EditorIndex Value="13"/>
    642601        <WindowIndex Value="0"/>
    643602        <TopLine Value="164"/>
    644603        <CursorPos X="27" Y="167"/>
    645604        <UsageCount Value="11"/>
    646         <Loaded Value="True"/>
    647605      </Unit70>
    648606    </Units>
    649     <JumpHistory Count="30" HistoryIndex="29">
     607    <JumpHistory Count="30" HistoryIndex="28">
    650608      <Position1>
    651609        <Filename Value="UCore.pas"/>
    652         <Caret Line="1264" Column="1" TopLine="1240"/>
     610        <Caret Line="1268" Column="1" TopLine="1240"/>
    653611      </Position1>
    654612      <Position2>
    655613        <Filename Value="UCore.pas"/>
    656         <Caret Line="1266" Column="1" TopLine="1240"/>
     614        <Caret Line="803" Column="1" TopLine="786"/>
    657615      </Position2>
    658616      <Position3>
    659617        <Filename Value="UCore.pas"/>
    660         <Caret Line="1267" Column="1" TopLine="1240"/>
     618        <Caret Line="805" Column="1" TopLine="786"/>
    661619      </Position3>
    662620      <Position4>
    663621        <Filename Value="UCore.pas"/>
    664         <Caret Line="1268" Column="1" TopLine="1240"/>
     622        <Caret Line="806" Column="1" TopLine="786"/>
    665623      </Position4>
    666624      <Position5>
    667625        <Filename Value="UCore.pas"/>
    668         <Caret Line="803" Column="1" TopLine="786"/>
     626        <Caret Line="807" Column="1" TopLine="786"/>
    669627      </Position5>
    670628      <Position6>
    671629        <Filename Value="UCore.pas"/>
    672         <Caret Line="805" Column="1" TopLine="786"/>
     630        <Caret Line="808" Column="1" TopLine="786"/>
    673631      </Position6>
    674632      <Position7>
    675633        <Filename Value="UCore.pas"/>
    676         <Caret Line="806" Column="1" TopLine="786"/>
     634        <Caret Line="809" Column="1" TopLine="786"/>
    677635      </Position7>
    678636      <Position8>
    679637        <Filename Value="UCore.pas"/>
    680         <Caret Line="807" Column="1" TopLine="786"/>
     638        <Caret Line="810" Column="1" TopLine="786"/>
    681639      </Position8>
    682640      <Position9>
    683641        <Filename Value="UCore.pas"/>
    684         <Caret Line="808" Column="1" TopLine="786"/>
     642        <Caret Line="811" Column="1" TopLine="786"/>
    685643      </Position9>
    686644      <Position10>
    687645        <Filename Value="UCore.pas"/>
    688         <Caret Line="809" Column="1" TopLine="786"/>
     646        <Caret Line="789" Column="1" TopLine="783"/>
    689647      </Position10>
    690648      <Position11>
    691649        <Filename Value="UCore.pas"/>
    692         <Caret Line="810" Column="1" TopLine="786"/>
     650        <Caret Line="790" Column="1" TopLine="783"/>
    693651      </Position11>
    694652      <Position12>
    695653        <Filename Value="UCore.pas"/>
    696         <Caret Line="811" Column="1" TopLine="786"/>
     654        <Caret Line="792" Column="1" TopLine="783"/>
    697655      </Position12>
    698656      <Position13>
    699657        <Filename Value="UCore.pas"/>
    700         <Caret Line="789" Column="1" TopLine="783"/>
     658        <Caret Line="791" Column="1" TopLine="783"/>
    701659      </Position13>
    702660      <Position14>
    703661        <Filename Value="UCore.pas"/>
    704         <Caret Line="790" Column="1" TopLine="783"/>
     662        <Caret Line="794" Column="1" TopLine="783"/>
    705663      </Position14>
    706664      <Position15>
    707665        <Filename Value="UCore.pas"/>
    708         <Caret Line="792" Column="1" TopLine="783"/>
     666        <Caret Line="812" Column="1" TopLine="784"/>
    709667      </Position15>
    710668      <Position16>
    711669        <Filename Value="UCore.pas"/>
    712         <Caret Line="791" Column="1" TopLine="783"/>
     670        <Caret Line="1267" Column="1" TopLine="1240"/>
    713671      </Position16>
    714672      <Position17>
    715673        <Filename Value="UCore.pas"/>
    716         <Caret Line="794" Column="1" TopLine="783"/>
     674        <Caret Line="1268" Column="1" TopLine="1240"/>
    717675      </Position17>
    718676      <Position18>
    719677        <Filename Value="UCore.pas"/>
    720         <Caret Line="812" Column="1" TopLine="784"/>
     678        <Caret Line="1269" Column="1" TopLine="1240"/>
    721679      </Position18>
    722680      <Position19>
    723681        <Filename Value="UCore.pas"/>
    724         <Caret Line="1267" Column="1" TopLine="1240"/>
     682        <Caret Line="1262" Column="1" TopLine="1240"/>
    725683      </Position19>
    726684      <Position20>
    727685        <Filename Value="UCore.pas"/>
    728         <Caret Line="1268" Column="1" TopLine="1240"/>
     686        <Caret Line="1264" Column="1" TopLine="1240"/>
    729687      </Position20>
    730688      <Position21>
    731689        <Filename Value="UCore.pas"/>
    732         <Caret Line="1269" Column="1" TopLine="1240"/>
     690        <Caret Line="1261" Column="42" TopLine="1241"/>
    733691      </Position21>
    734692      <Position22>
    735693        <Filename Value="UCore.pas"/>
    736         <Caret Line="1262" Column="1" TopLine="1240"/>
     694        <Caret Line="698" Column="30" TopLine="682"/>
    737695      </Position22>
    738696      <Position23>
    739697        <Filename Value="UCore.pas"/>
    740         <Caret Line="1264" Column="1" TopLine="1240"/>
     698        <Caret Line="1172" Column="49" TopLine="1159"/>
    741699      </Position23>
    742700      <Position24>
    743701        <Filename Value="UCore.pas"/>
    744         <Caret Line="1261" Column="42" TopLine="1241"/>
     702        <Caret Line="1326" Column="29" TopLine="1318"/>
    745703      </Position24>
    746704      <Position25>
    747         <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericMatrix.inc"/>
    748         <Caret Line="174" Column="1" TopLine="152"/>
     705        <Filename Value="UCore.pas"/>
     706        <Caret Line="69" Column="43" TopLine="51"/>
    749707      </Position25>
    750708      <Position26>
    751709        <Filename Value="UCore.pas"/>
    752         <Caret Line="698" Column="30" TopLine="682"/>
     710        <Caret Line="676" Column="14" TopLine="660"/>
    753711      </Position26>
    754712      <Position27>
    755713        <Filename Value="UCore.pas"/>
    756         <Caret Line="1172" Column="49" TopLine="1159"/>
     714        <Caret Line="679" Column="52" TopLine="664"/>
    757715      </Position27>
    758716      <Position28>
    759         <Filename Value="../../PascalClassLibrary/Generics/TemplateGenerics/Generic/GenericList.inc"/>
    760         <Caret Line="132" Column="1" TopLine="115"/>
     717        <Filename Value="UCore.pas"/>
     718        <Caret Line="21" Column="31" TopLine="1"/>
    761719      </Position28>
    762720      <Position29>
    763         <Filename Value="Forms/UMainForm.pas"/>
    764         <Caret Line="39" Column="35" TopLine="29"/>
     721        <Filename Value="UCore.pas"/>
     722        <Caret Line="679" Column="35" TopLine="663"/>
    765723      </Position29>
    766724      <Position30>
    767725        <Filename Value="UCore.pas"/>
    768         <Caret Line="1326" Column="29" TopLine="1318"/>
     726        <Caret Line="21" Column="19" TopLine="86"/>
    769727      </Position30>
    770728    </JumpHistory>
    771729  </ProjectOptions>
    772730  <CompilerOptions>
    773     <Version Value="10"/>
     731    <Version Value="9"/>
    774732    <Target>
    775733      <Filename Value="tunneler"/>
Note: See TracChangeset for help on using the changeset viewer.