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

Revision 6760, 4.7 KB checked in by beechiks, 4 years ago (diff)
Line 
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{
11    Image ekaPlKuva = LoadImage("ekaPelaajaKuva");
12    PhysicsObject ekaPelaaja;
13    AssaultRifle pelaajanAse;
14    PhysicsObject ammus;
15    Image luotiKuva = LoadImage("luoti");
16    SoundEffect ammusAani = LoadSoundEffect("ammusAani");
17
18    double zombieRate = 1.0;
19
20    public override void Begin()
21    {
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);
31    }
32
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    }
45
46    void EnempaZombia()
47    {
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
78        Add(ekaPelaaja);
79        Ohjet(ekaPelaaja);
80    }
81
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
107    void Ohjet(PhysicsObject pelaaja)
108    {
109        double nopeus = 1500.0;
110
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);
113
114        Mouse.ListenMovement(0.0, KuunteleHiiri, "Pelaaja kääntyy hiiren mukaan.");
115        Mouse.IsCursorVisible = true;
116        Mouse.Listen(MouseButton.Left, ButtonState.Down, Ampuminen, "Ampu");
117
118        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
119
120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli");
121
122    }
123
124    void KuunteleHiiri(AnalogState hiirenTilla)
125    {
126        ekaPelaaja.AbsoluteAngle = (Mouse.PositionOnWorld - ekaPelaaja.Position).Angle;
127    }
128
129    void Ampuminen()
130    {
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        }
145    }
146
147    void AsetaNopeus(PhysicsObject pelaaja, double nopeus)
148    {
149        pelaaja.Move(Vector.FromLengthAndAngle(nopeus, pelaaja.Angle));
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));
156        vihu.Tag = "vihu";
157
158        FollowerBrain vihunAivot = new FollowerBrain(ekaPelaaja);
159        vihu.Brain = vihunAivot;
160        vihunAivot.Speed = 50.0;
161        vihunAivot.Active = true;
162        Add(vihu);
163        if (vihu != null)
164        {
165            AddCollisionHandler(vihu, "ammus", PoistuVihu);
166        }
167    }
168
169    void PoistuVihu(PhysicsObject vihu, PhysicsObject ammus)
170    {
171        vihu.Destroy();
172    }
173}
Note: See TracBrowser for help on using the repository browser.