Changeset 8118


Ignore:
Timestamp:
2016-07-26 14:56:06 (3 years ago)
Author:
tihaapas
Message:
 
Location:
2016/30/TimoH
Files:
13 added
11 edited

Legend:

Unmodified
Added
Removed
  • 2016/30/TimoH/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000.cs

    r8107 r8118  
    77using Jypeli.Widgets; 
    88 
     9public class Torni  :  GameObject 
     10{ 
     11    public TorniPaivitys Paivitys { get; set; } 
     12 
     13    public Timer AmpumisAjastin { get; set; } 
     14 
     15    public Torni(double leveys, double korkeus, TorniPaivitys paivitys) 
     16        : base(leveys, korkeus) 
     17    { 
     18        Paivitys = paivitys; 
     19        Image = Paivitys.Kuva; 
     20    } 
     21 
     22    public void OsuuVihuun(PhysicsObject ammus, PhysicsObject vihu) 
     23    { 
     24        ammus.Destroy(); 
     25        ((Vihollinen)vihu).ElamaLaskuri.Value -= Paivitys.Vahinko; 
     26    } 
     27 
     28 
     29 
     30} 
     31 
     32class Vihollinen : PhysicsObject 
     33{ 
     34    public IntMeter ElamaLaskuri { get; private set; } 
     35 
     36    public Vihollinen(double leveys, double korkeus, int elamat) 
     37        : base(leveys, korkeus) 
     38    { 
     39        ElamaLaskuri = new IntMeter(elamat, 0, elamat); 
     40        ElamaLaskuri.LowerLimit += Destroy; 
     41        Tag = "vihu"; 
     42        CanRotate = false; 
     43 
     44        ProgressBar elamaPalkki = new ProgressBar(leveys * 1.2, 10, ElamaLaskuri); 
     45        elamaPalkki.BarColor = Color.DarkRed; 
     46        elamaPalkki.Color = Color.Black; 
     47        elamaPalkki.Bottom = Top + 5; 
     48        this.Add(elamaPalkki); 
     49    } 
     50} 
     51 
     52public class TorniPaivitys 
     53{ 
     54    public int Hinta { get; set; } 
     55    public int Vahinko { get; set; } 
     56    public Image Kuva { get; set; } 
     57    public TorniPaivitys Seuraava { get; set; } 
     58 
     59} 
    960public class JamaicanBoksi3000 : PhysicsGame 
    1061{ 
    1162    SortedList<char, Vector> polku; 
    1263    IntMeter raha; 
    13         int tornihinta = 600; 
     64        int tornihinta = 1; 
     65 
     66    TorniPaivitys alkuPaivitys; 
    1467 
    1568    public override void Begin() 
    1669    { 
     70        LuoPaivitykset(); 
    1771        LuoKenttä(); 
    1872        LuoRahaLaskuri(); 
    1973        AsetaOhjaimet(); 
     74         
     75 
    2076 
    2177        Timer vihuAjastin = new Timer(); 
    22         vihuAjastin.Interval = 0.5; 
     78        vihuAjastin.Interval = 0.005; 
    2379        vihuAjastin.Timeout += LuoVihollinen; 
    2480        vihuAjastin.Start(); 
     
    3086    } 
    3187 
     88    void LuoPaivitykset() 
     89    { 
     90        TorniPaivitys vihrea = new TorniPaivitys { Kuva = LoadImage("vihrea"), Hinta = 300, Vahinko = 1 }; 
     91        TorniPaivitys sininen = new TorniPaivitys { Kuva = LoadImage("sininen"), Hinta = 500, Vahinko = 4 }; 
     92        TorniPaivitys punainen = new TorniPaivitys { Kuva = LoadImage("punainen"), Hinta = 800, Vahinko = 5 }; 
     93        TorniPaivitys kultainen = new TorniPaivitys { Kuva = LoadImage("kultainen"), Hinta = 1000, Vahinko = 7 }; 
     94 
     95        vihrea.Seuraava = sininen; 
     96        sininen.Seuraava = punainen; 
     97        punainen.Seuraava = kultainen; 
     98 
     99        alkuPaivitys = vihrea; 
     100 
     101    } 
     102 
    32103    void AsetaOhjaimet() 
    33104    { 
    34105        Mouse.Listen(MouseButton.Left, ButtonState.Pressed, OstaTorni, "Rakenna uusi torni"); 
    35  
    36  
    37  
    38106        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    39107 
     
    46114            raha.Value -= tornihinta; 
    47115 
    48             GameObject torni = new GameObject(50, 100); 
     116            Torni torni = new Torni(50, 100, alkuPaivitys); 
    49117            torni.Color = Color.Green; 
    50118            torni.Position = Mouse.PositionOnWorld; 
     119            torni.AmpumisAjastin = new Timer(); 
     120            torni.AmpumisAjastin.Interval = 1; 
     121            torni.AmpumisAjastin.Timeout += delegate { TorniAmpuu(torni); }; 
     122            torni.AmpumisAjastin.Start(); 
    51123            Add(torni); 
    52  
    53         } 
    54  
    55     } 
     124            Mouse.ListenOn(torni, MouseButton.Right, ButtonState.Pressed, delegate { PaivitaTorni(torni); }, null); 
     125        } 
     126    } 
     127    void PaivitaTorni(Torni torni) 
     128    { 
     129            TorniPaivitys uusiPaivitys = torni.Paivitys.Seuraava; 
     130            if (uusiPaivitys != null) 
     131            { 
     132                torni.Paivitys = uusiPaivitys; 
     133                torni.Image = uusiPaivitys.Kuva; 
     134            } 
     135 
     136        } 
    56137 
    57138    void LuoKenttä() 
     
    89170    } 
    90171 
     172    void TorniAmpuu(Torni torni) 
     173    { 
     174        // Etsitään aluksi lähin vihollinen. 
     175 
     176        GameObject kohde = null; // Potentiaalinen vaihtoehto lähimmäksi viholliseksi. Aluksi null, eli tyhjää. 
     177        double lyhin = double.MaxValue; // Etäisyys tornista toistaiseksi löydettyyn lähimpään viholliseen. 
     178        foreach (GameObject vihu in GetObjectsWithTag("vihu")) // Käydään silmukassa läpi kaikki pelin viholliset. 
     179        { 
     180            // Lasketaan etäisyys tornin ja vihollisen välillä. 
     181            double etaisyys = Vector.Distance(vihu.Position, torni.Position); 
     182 
     183            // Jos etäisyys on lyhyempi kuin tähän mennessä löydetty lyhin etäisyys, niin päivitetään 
     184            // lyhin muuttujaa ja valitaan kohdeeksi vihollinen, jolla tämä lyhin etäisyys oli. 
     185            if (etaisyys < lyhin) 
     186            { 
     187                lyhin = etaisyys; 
     188                kohde = vihu; 
     189            } 
     190        } 
     191 
     192        if (kohde != null) // Tarkistetaan löytyikö vihollista 
     193        { 
     194            // Jos vihollinen löytyi, niin luodaan ympyrän muotoinen musta ammus 
     195            // joka tuhoutuu kahdessa sekunnissa itsekseen. 
     196            PhysicsObject ammus = new PhysicsObject(10, 10, Shape.Circle); 
     197            ammus.Position = torni.Position; 
     198            ammus.Color = Color.Black; 
     199            ammus.LifetimeLeft = TimeSpan.FromSeconds(5); 
     200            Add(ammus); 
     201 
     202            double ammuksenNopeus = 1000;  // Ammuksen liikkumisnopeus. Voit säätää tätä halutessasi. 
     203            Vector suunta = (kohde.Position - torni.Position).Normalize(); // Lasketaan ammukselle suunta. 
     204            ammus.Hit(suunta * ammuksenNopeus); // Lyödään ammus liikkeelle. 
     205 
     206            // Lisätään törmäyskäsittelijä. Torni tekee vahinkoa osuneeseen viholliseen. 
     207            AddCollisionHandler(ammus, "vihu", torni.OsuuVihuun); 
     208        } 
     209    } 
     210 
    91211    void LuoVihollinen() 
    92212    { 
    93         PhysicsObject vihu = new PhysicsObject(50, 50); 
     213        Vihollinen vihu = new Vihollinen(50, 50, 3); 
    94214        vihu.Color = Color.Red; 
     215        vihu.Tag = "vihu"; 
    95216        vihu.Shape = Shape.Circle; 
    96217        vihu.Position = polku.Values[0]; 
  • 2016/30/TimoH/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000.csproj.Debug.cachefile

    r8107 r8118  
    11Content\Jamaicanboksi1.xnb 
     2Content\vihrea.xnb 
     3Content\sininen.xnb 
     4Content\punainen.xnb 
     5Content\kultainen.xnb 
  • 2016/30/TimoH/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000/obj/x86/Debug/ContentPipeline-{4A29DE4C-A502-4E35-9F8E-69C76CB7D9C2}.xml

    r8107 r8118  
    99      <Options>None</Options> 
    1010      <Output>C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\Jamaicanboksi1.xnb</Output> 
    11       <Time>2016-07-26T10:47:56.4630119+03:00</Time> 
     11      <Time>2016-07-26T13:22:53.6640761+03:00</Time> 
     12    </Item> 
     13    <Item> 
     14      <Source>vihrea.png</Source> 
     15      <Name>vihrea</Name> 
     16      <Importer>TextureImporter</Importer> 
     17      <Processor>TextureProcessor</Processor> 
     18      <Options>None</Options> 
     19      <Output>C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\vihrea.xnb</Output> 
     20      <Time>2016-07-26T13:39:26.3644761+03:00</Time> 
     21    </Item> 
     22    <Item> 
     23      <Source>sininen.png</Source> 
     24      <Name>sininen</Name> 
     25      <Importer>TextureImporter</Importer> 
     26      <Processor>TextureProcessor</Processor> 
     27      <Options>None</Options> 
     28      <Output>C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\sininen.xnb</Output> 
     29      <Time>2016-07-26T13:39:30.0304761+03:00</Time> 
     30    </Item> 
     31    <Item> 
     32      <Source>punainen.png</Source> 
     33      <Name>punainen</Name> 
     34      <Importer>TextureImporter</Importer> 
     35      <Processor>TextureProcessor</Processor> 
     36      <Options>None</Options> 
     37      <Output>C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\punainen.xnb</Output> 
     38      <Time>2016-07-26T13:39:33.7744761+03:00</Time> 
     39    </Item> 
     40    <Item> 
     41      <Source>kultainen.png</Source> 
     42      <Name>kultainen</Name> 
     43      <Importer>TextureImporter</Importer> 
     44      <Processor>TextureProcessor</Processor> 
     45      <Options>None</Options> 
     46      <Output>C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\kultainen.xnb</Output> 
     47      <Time>2016-07-26T13:39:37.0972761+03:00</Time> 
    1248    </Item> 
    1349    <BuildSuccessful>true</BuildSuccessful> 
     
    5894      <Assembly> 
    5995        <Key>C:\Windows\Microsoft.Net\assembly\GAC_32\Microsoft.Xna.Framework.Content.Pipeline\v4.0_4.0.0.0__842cf8be1de50553\Microsoft.Xna.Framework.Content.Pipeline.dll</Key> 
    60         <Value>2015-09-16T19:26:07.6285999+03:00</Value> 
     96        <Value>2015-09-16T12:34:27.5998678+03:00</Value> 
    6197      </Assembly> 
    6298    </Assemblies> 
  • 2016/30/TimoH/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000/obj/x86/Debug/JamaicanBoksi3000.csproj.FileListAbsolute.txt

    r8107 r8118  
    88C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\obj\x86\Debug\JamaicanBoksi3000.exe 
    99C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\obj\x86\Debug\JamaicanBoksi3000.pdb 
     10C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\vihrea.xnb 
     11C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\sininen.xnb 
     12C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\punainen.xnb 
     13C:\MyTemp\TimoH\JamaicanBoksi3000\JamaicanBoksi3000\JamaicanBoksi3000\bin\x86\Debug\Content\kultainen.xnb 
  • 2016/30/TimoH/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000/obj/x86/Debug/cachefile-{4A29DE4C-A502-4E35-9F8E-69C76CB7D9C2}-targetpath.txt

    r8107 r8118  
    11Content\Jamaicanboksi1.xnb 
     2Content\vihrea.xnb 
     3Content\sininen.xnb 
     4Content\punainen.xnb 
     5Content\kultainen.xnb 
  • 2016/30/TimoH/JamaicanBoksi3000/JamaicanBoksi3000/JamaicanBoksi3000Content/JamaicanBoksi3000Content.contentproj

    r8107 r8118  
    5252    </Compile> 
    5353  </ItemGroup> 
     54  <ItemGroup> 
     55    <Compile Include="vihrea.png"> 
     56      <Name>vihrea</Name> 
     57      <Importer>TextureImporter</Importer> 
     58      <Processor>TextureProcessor</Processor> 
     59    </Compile> 
     60  </ItemGroup> 
     61  <ItemGroup> 
     62    <Compile Include="sininen.png"> 
     63      <Name>sininen</Name> 
     64      <Importer>TextureImporter</Importer> 
     65      <Processor>TextureProcessor</Processor> 
     66    </Compile> 
     67  </ItemGroup> 
     68  <ItemGroup> 
     69    <Compile Include="punainen.png"> 
     70      <Name>punainen</Name> 
     71      <Importer>TextureImporter</Importer> 
     72      <Processor>TextureProcessor</Processor> 
     73    </Compile> 
     74  </ItemGroup> 
     75  <ItemGroup> 
     76    <Compile Include="kultainen.png"> 
     77      <Name>kultainen</Name> 
     78      <Importer>TextureImporter</Importer> 
     79      <Processor>TextureProcessor</Processor> 
     80    </Compile> 
     81  </ItemGroup> 
    5482  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    5583  <!--  To modify your build process, add your task inside one of the targets below and uncomment it.  
Note: See TracChangeset for help on using the changeset viewer.