source: 2015/27/BenjaminE/HackNSlashOikea/HackNSlashOikea/HackNSlashOikea/HackNSlashOikea.cs @ 6760

Revision 6760, 4.7 KB checked in by beechiks, 4 years ago (diff)
RevLine 
[6675]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class HackNSlashOikea : PhysicsGame
10{
[6760]11    Image ekaPlKuva = LoadImage("ekaPelaajaKuva");
12    PhysicsObject ekaPelaaja;
13    AssaultRifle pelaajanAse;
14    PhysicsObject ammus;
15    Image luotiKuva = LoadImage("luoti");
16    SoundEffect ammusAani = LoadSoundEffect("ammusAani");
[6675]17
[6760]18    double zombieRate = 1.0;
[6675]19
[6760]20    public override void Begin()
[6675]21    {
[6760]22        //MediaPlayer.Play("musiiki");
23        //MediaPlayer.IsRepeating = true;
24
25        Level.Background.Color = Color.Black;
26
27        MultiSelectWindow alkuValikko = new MultiSelectWindow("Zombie Attack", "Aloita peli", "Lopeta");
28        alkuValikko.AddItemHandler(0, AloitaPeli);
29        alkuValikko.AddItemHandler(2, Exit);
30        Add(alkuValikko);
[6675]31    }
32
[6760]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);
44    }
[6675]45
[6760]46    void EnempaZombia()
47    {
48        Timer plZombie = new Timer();
49        plZombie.Timeout += PlZombia;
50        plZombie.Interval = 5.0;
51        plZombie.Start();
52    }
[6675]53
[6760]54    void PlZombia() 
55    {
56        if (zombieRate > 0.1)
57        {
58            zombieRate -= 0.1;
59            EnempaZombia();
60        }
61    }
[6675]62
[6760]63    void LuoPelaaja(Vector paikka)
64    {
65        ekaPelaaja = new PhysicsObject(ekaPlKuva);
66        ekaPelaaja.LinearDamping = 0.1;
67        ekaPelaaja.Position = paikka;
[6675]68
[6760]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);
[6675]75
[6760]76        AddCollisionHandler(ekaPelaaja, "vihu", PelajaKuole);
77
78        Add(ekaPelaaja);
79        Ohjet(ekaPelaaja);
80    }
81
82    void PelajaKuole(PhysicsObject pelaaja, PhysicsObject vihu) 
[6675]83    {
[6760]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");
[6675]93        alkuValikko.AddItemHandler(0, AloitaPeli);
[6760]94        alkuValikko.AddItemHandler(2, Exit);
[6675]95        Add(alkuValikko);
96    }
97
[6760]98    void Spawner()
99    {
100        Timer spawneri = new Timer();
101        spawneri.Timeout += LuoVihu;
102        spawneri.Interval = zombieRate;
[6675]103
[6760]104        spawneri.Start();
[6675]105    }
106
107    void Ohjet(PhysicsObject pelaaja)
108    {
[6760]109        double nopeus = 1500.0;
[6675]110
[6760]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);
[6675]113
[6760]114        Mouse.ListenMovement(0.0, KuunteleHiiri, "Pelaaja kääntyy hiiren mukaan.");
115        Mouse.IsCursorVisible = true;
116        Mouse.Listen(MouseButton.Left, ButtonState.Down, Ampuminen, "Ampu");
[6675]117
118        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
119
[6760]120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli");
[6675]121
122    }
123
[6760]124    void KuunteleHiiri(AnalogState hiirenTilla)
[6675]125    {
[6760]126        ekaPelaaja.AbsoluteAngle = (Mouse.PositionOnWorld - ekaPelaaja.Position).Angle;
127    }
[6675]128
[6760]129    void Ampuminen()
130    {
131        ammus = pelaajanAse.Shoot();
132        if (ammus != null)
[6675]133        {
[6760]134            ammusAani.Play();
135            ammus.Height = 1.0;
136            ammus.Width = 1.0;
137            ammus.Image = luotiKuva;
138            ammus.Tag = "ammus";
[6675]139
[6760]140            AddCollisionHandler(ammus, delegate (PhysicsObject a, PhysicsObject b)
141            {
142                a.Destroy();
143            });
144        }
[6675]145    }
146
[6760]147    void AsetaNopeus(PhysicsObject pelaaja, double nopeus)
[6675]148    {
[6760]149        pelaaja.Move(Vector.FromLengthAndAngle(nopeus, pelaaja.Angle));
[6675]150    }
151
152    void LuoVihu()
153    {
154        PhysicsObject vihu = new PhysicsObject(LoadImage("vihu"));
155        vihu.Position = new Vector(RandomGen.NextDouble(Screen.Left, Screen.Right), RandomGen.NextDouble(Screen.Bottom, Screen.Top));
[6760]156        vihu.Tag = "vihu";
[6675]157
158        FollowerBrain vihunAivot = new FollowerBrain(ekaPelaaja);
159        vihu.Brain = vihunAivot;
[6760]160        vihunAivot.Speed = 50.0;
161        vihunAivot.Active = true;
[6675]162        Add(vihu);
[6760]163        if (vihu != null)
164        {
165            AddCollisionHandler(vihu, "ammus", PoistuVihu);
166        }
[6675]167    }
168
[6760]169    void PoistuVihu(PhysicsObject vihu, PhysicsObject ammus)
[6675]170    {
[6760]171        vihu.Destroy();
[6675]172    }
[6676]173}
Note: See TracBrowser for help on using the repository browser.