Ignore:
Timestamp:
2015-07-02 14:51:57 (4 years ago)
Author:
beechiks
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/27/BenjaminE/HackNSlashOikea/HackNSlashOikea/HackNSlashOikea/HackNSlashOikea.cs

    r6676 r6760  
    88 
    99public class HackNSlashOikea : PhysicsGame 
    10 public class Pelaaja : PhysicsObject 
    1110{ 
    12     public IntMeter healthit; 
     11    Image ekaPlKuva = LoadImage("ekaPelaajaKuva"); 
     12    PhysicsObject ekaPelaaja; 
     13    AssaultRifle pelaajanAse; 
     14    PhysicsObject ammus; 
     15    Image luotiKuva = LoadImage("luoti"); 
     16    SoundEffect ammusAani = LoadSoundEffect("ammusAani"); 
    1317 
    14     public Image graf; 
    15  
    16     public Pelaaja 
    17         (Image grafiikka)  : base(grafiikka)        
    18     { 
    19         (Image grafiikka)  : base(grafiikka); 
    20         this.healthit = new IntMeter(1, 0, 100); 
    21         graf = grafiikka; 
    22     } 
    23 } 
    24  
    25  
    26 public class HacknSlash : PhysicsGame 
    27 { 
    28     Image ekaPlKuva = LoadImage("ekaPelaaja"); 
    29     Image ekaPlKuva2 = LoadImage("ekaPelaaja2"); 
    30     Image ekaPlKuva3 = LoadImage("ekaPelaaja3"); 
    31     Image ekaPlKuva4 = LoadImage("ekaPelaaja4"); 
    32  
    33     Image miekkaKuva = LoadImage("miekka"); 
    34  
    35     Pelaaja ekaPelaaja; 
    36  
    37     bool kaynnissa = false; 
    38     double vihuSpawnNopeus = 1; 
     18    double zombieRate = 1.0; 
    3919 
    4020    public override void Begin() 
    4121    { 
    42         //MediaPlayer.Play("AdventureMeme"); 
     22        //MediaPlayer.Play("musiiki"); 
    4323        //MediaPlayer.IsRepeating = true; 
    44         MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta"); 
     24 
     25        Level.Background.Color = Color.Black; 
     26 
     27        MultiSelectWindow alkuValikko = new MultiSelectWindow("Zombie Attack", "Aloita peli", "Lopeta"); 
    4528        alkuValikko.AddItemHandler(0, AloitaPeli); 
    46         //alkuValikko.AddItemHandler(1, ParhaatPisteet); 
    47         alkuValikko.AddItemHandler(2, ConfirmExit); 
     29        alkuValikko.AddItemHandler(2, Exit); 
    4830        Add(alkuValikko); 
    4931    } 
    5032 
    51     void AloitaPeli() { 
    52         LuoPelaaja(); 
    53         kaynnissa = true; 
     33    void AloitaPeli() 
     34    { 
     35        Vector keski = new Vector(); 
     36        LuoPelaaja(keski); 
     37        Spawner(); 
     38        EnempaZombia(); 
     39        Level.CreateBorders(false); 
     40        Level.Background.Image = LoadImage("tausta"); 
     41        Level.Background.TileToLevel(); 
     42        Camera.StayInLevel = true; 
     43        Camera.Follow(ekaPelaaja); 
    5444    } 
    5545 
    56     void LuoPelaaja() 
     46    void EnempaZombia() 
    5747    { 
    58         ekaPelaaja = new Pelaaja(ekaPlKuva); 
     48        Timer plZombie = new Timer(); 
     49        plZombie.Timeout += PlZombia; 
     50        plZombie.Interval = 5.0; 
     51        plZombie.Start(); 
     52    } 
     53 
     54    void PlZombia()  
     55    { 
     56        if (zombieRate > 0.1) 
     57        { 
     58            zombieRate -= 0.1; 
     59            EnempaZombia(); 
     60        } 
     61    } 
     62 
     63    void LuoPelaaja(Vector paikka) 
     64    { 
     65        ekaPelaaja = new PhysicsObject(ekaPlKuva); 
     66        ekaPelaaja.LinearDamping = 0.1; 
     67        ekaPelaaja.Position = paikka; 
     68 
     69        pelaajanAse = new AssaultRifle(1, 1); 
     70        pelaajanAse.Image = null; 
     71        pelaajanAse.Color = Color.Transparent; 
     72        pelaajanAse.FireRate = 2; 
     73        pelaajanAse.AttackSound = null; 
     74        ekaPelaaja.Add(pelaajanAse); 
     75 
     76        AddCollisionHandler(ekaPelaaja, "vihu", PelajaKuole); 
     77 
    5978        Add(ekaPelaaja); 
    6079        Ohjet(ekaPelaaja); 
    6180    } 
    6281 
     82    void PelajaKuole(PhysicsObject pelaaja, PhysicsObject vihu)  
     83    { 
     84        ClearAll(); 
     85        AlotaUdella(); 
     86    } 
     87 
     88    void AlotaUdella()  
     89    { 
     90        Level.Background.Color = Color.Black; 
     91 
     92        MultiSelectWindow alkuValikko = new MultiSelectWindow("Zombie Attack", "Aloita peli", "Lopeta"); 
     93        alkuValikko.AddItemHandler(0, AloitaPeli); 
     94        alkuValikko.AddItemHandler(2, Exit); 
     95        Add(alkuValikko); 
     96    } 
     97 
     98    void Spawner() 
     99    { 
     100        Timer spawneri = new Timer(); 
     101        spawneri.Timeout += LuoVihu; 
     102        spawneri.Interval = zombieRate; 
     103 
     104        spawneri.Start(); 
     105    } 
     106 
    63107    void Ohjet(PhysicsObject pelaaja) 
    64108    { 
    65         Vector ylos = new Vector(0.0, 500.0); 
    66         Vector alas = new Vector(0.0, -500.0); 
    67         Vector oikea = new Vector(500.0, 0.0); 
    68         Vector vasen = new Vector(-500.0, 0.0); 
     109        double nopeus = 1500.0; 
    69110 
    70         Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Liiku alas.", pelaaja, alas); 
    71         Keyboard.Listen(Key.Down, ButtonState.Pressed, AsetaKuva, null, pelaaja, ekaPlKuva); 
    72         Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); 
     111        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Liiku ylös.", pelaaja, -nopeus); 
     112        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Liiku ylös.", pelaaja, nopeus); 
    73113 
    74         Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liiku oikealle.", pelaaja, oikea); 
    75         Keyboard.Listen(Key.Right, ButtonState.Pressed, AsetaKuva, null, pelaaja, ekaPlKuva2); 
    76         Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); 
    77  
    78         Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liiku vasemalle.", pelaaja, vasen); 
    79         Keyboard.Listen(Key.Left, ButtonState.Pressed, AsetaKuva, null, pelaaja, ekaPlKuva3); 
    80         Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); 
    81  
    82         Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Liiku ylös.", pelaaja, ylos); 
    83         Keyboard.Listen(Key.Up, ButtonState.Pressed, AsetaKuva, null, pelaaja, ekaPlKuva4); 
    84         Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero); 
     114        Mouse.ListenMovement(0.0, KuunteleHiiri, "Pelaaja kääntyy hiiren mukaan."); 
     115        Mouse.IsCursorVisible = true; 
     116        Mouse.Listen(MouseButton.Left, ButtonState.Down, Ampuminen, "Ampu"); 
    85117 
    86118        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    87119 
    88         Keyboard.Listen(Key.Space, ButtonState.Down, Hyokkaa, "Hyökkää miekkaan kansa."); 
     120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli"); 
    89121 
    90         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    91122    } 
    92123 
    93     void Hyokkaa() 
     124    void KuunteleHiiri(AnalogState hiirenTilla) 
    94125    { 
    95         PhysicsObject miekka = new PhysicsObject(16, 16); 
    96         miekka.Image = miekkaKuva; 
    97  
    98         Timer miekkaAijastin = new Timer(); 
    99         miekkaAijastin.Interval = 0.5; 
    100         miekkaAijastin.Timeout += delegate 
    101         { 
    102             miekka.Position = ekaPelaaja.Position; 
    103         }; 
    104         miekkaAijastin.Start(); 
    105  
    106         Timer.SingleShot(0.25, delegate { miekka.Destroy(); }); 
    107         Add(miekka); 
     126        ekaPelaaja.AbsoluteAngle = (Mouse.PositionOnWorld - ekaPelaaja.Position).Angle; 
    108127    } 
    109128 
    110     void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus) 
     129    void Ampuminen() 
    111130    { 
    112         pelaaja.Move(nopeus); 
     131        ammus = pelaajanAse.Shoot(); 
     132        if (ammus != null) 
     133        { 
     134            ammusAani.Play(); 
     135            ammus.Height = 1.0; 
     136            ammus.Width = 1.0; 
     137            ammus.Image = luotiKuva; 
     138            ammus.Tag = "ammus"; 
     139 
     140            AddCollisionHandler(ammus, delegate (PhysicsObject a, PhysicsObject b) 
     141            { 
     142                a.Destroy(); 
     143            }); 
     144        } 
    113145    } 
    114     void AsetaKuva(PhysicsObject pelaaja, Image kuva) 
     146 
     147    void AsetaNopeus(PhysicsObject pelaaja, double nopeus) 
    115148    { 
    116         pelaaja.Image = kuva; 
     149        pelaaja.Move(Vector.FromLengthAndAngle(nopeus, pelaaja.Angle)); 
    117150    } 
    118151 
     
    121154        PhysicsObject vihu = new PhysicsObject(LoadImage("vihu")); 
    122155        vihu.Position = new Vector(RandomGen.NextDouble(Screen.Left, Screen.Right), RandomGen.NextDouble(Screen.Bottom, Screen.Top)); 
     156        vihu.Tag = "vihu"; 
    123157 
    124158        FollowerBrain vihunAivot = new FollowerBrain(ekaPelaaja); 
    125159        vihu.Brain = vihunAivot; 
    126         vihunAivot.Active = false; 
     160        vihunAivot.Speed = 50.0; 
     161        vihunAivot.Active = true; 
    127162        Add(vihu); 
     163        if (vihu != null) 
     164        { 
     165            AddCollisionHandler(vihu, "ammus", PoistuVihu); 
     166        } 
    128167    } 
    129168 
    130     protected override void Update(Microsoft.Xna.Framework.GameTime gameTime) 
     169    void PoistuVihu(PhysicsObject vihu, PhysicsObject ammus) 
    131170    { 
    132         if (kaynnissa) 
    133         { 
    134             if (gameTime.TotalGameTime.Seconds % vihuSpawnNopeus == 0) 
    135             { 
    136                 LuoVihu(); 
    137             } 
    138  
    139         } 
    140  
    141         base.Update(gameTime); 
     171        vihu.Destroy(); 
    142172    } 
    143  
    144173} 
Note: See TracChangeset for help on using the changeset viewer.