source: 2016/24/MattiK/ZlandZ/ZlandZ/ZlandZ/ZlandZ.cs @ 7382

Revision 7382, 11.1 KB checked in by majuvika, 6 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 ZlandZ : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    private int bossinElamat = 500;
15    EasyHighScore topLista = new EasyHighScore();
16
17    PlatformCharacter Leaf;
18    PlatformCharacter Sombombo;
19    PlatformCharacter Orkki;
20
21    LaserGun LeafinAse;
22    IntMeter pisteLaskuri;
23    Image pelaajanKuva = LoadImage("lintu");
24    Image gene = LoadImage("gene");
25    Image nuke = LoadImage("nuke");
26    Image orkki = LoadImage("orkki");
27    Image GuninKuva = LoadImage("gun");
28    Image BossinKuva = LoadImage("Boss");
29    Image boxinKuva = LoadImage("box");
30    Image piikinKuva = LoadImage("piikki");
31    AssaultRifle pelaajan1Ase;
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33    int ammustenMaara = 60;
34    SoundEffect hyppyAani = LoadSoundEffect("Jump17");
35    public override void Begin()
36    {
37        MultiSelectWindow alkuValikko = new MultiSelectWindow("ZlandZ",
38"Aloita peli", "Parhaat pisteet", "Lopeta");
39        Add(alkuValikko);
40        alkuValikko.AddItemHandler(0, AloitaPeli);
41        alkuValikko.AddItemHandler(1, ParhaatPisteet);
42        alkuValikko.AddItemHandler(2, Exit);
43        Level.Background.Image = LoadImage("niga");
44        Level.Background.FitToLevel();
45        alkuValikko.Color = Color.Red;
46        Level.Background.Color = Color.Black;
47    }
48
49
50
51    void AloitaPeli()
52    {
53        ClearAll();
54        Gravity = new Vector(0, -1000);
55
56        LuoKentta();
57
58        LisaaNappaimet();
59        LuoAmmusLaskuri();
60
61        Camera.Follow(Leaf);
62        Camera.ZoomFactor = 1.2;
63        Camera.StayInLevel = true;
64    }
65
66    void ParhaatPisteet()
67    {
68    }
69
70    void LuoKentta()
71    {
72
73        TileMap kentta = TileMap.FromLevelAsset("kentta1");
74
75        kentta.SetTileMethod('#', LisaaTaso);
76        kentta.SetTileMethod('d', LisaaGene);
77        kentta.SetTileMethod('G', Lisaagun);
78        kentta.SetTileMethod('O', LisaaOrkki);
79        kentta.SetTileMethod('B', LisaaBoss);
80        kentta.SetTileMethod('b', LisaaBox);
81        kentta.SetTileMethod('N', LisaaPelaaja);
82        kentta.SetTileMethod('L', LisaaNuke);
83        kentta.SetTileMethod('P', LisaaPiikki);
84        kentta.SetTileMethod('S', LisaaVihu);
85        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
86        Level.CreateBorders();
87        Level.Background.CreateGradient(Color.Black, Color.Red);
88
89
90    }
91
92
93    void LisaaTaso(Vector paikka, double leveys, double korkeus)
94    {
95        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
96        taso.Position = paikka;
97        taso.Color = Color.Green;
98        Add(taso);
99    }
100    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
101    {
102        PhysicsObject Piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
103        Piikki.Position = paikka;
104        Piikki.Color = Color.Red;
105        Add(Piikki);
106        Piikki.Image = piikinKuva;
107        Piikki.Tag = "piikki";
108    }
109    void LisaaBoss(Vector paikka, double leveys, double korkeus)
110    {
111        PlatformCharacter Boss = new PlatformCharacter(leveys, korkeus);
112        Boss.Position = paikka;
113        Add(Boss);
114        Boss.Image = BossinKuva;
115        Boss.Tag = "pahis";
116        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
117        tasoAivot.Speed = 50;
118        tasoAivot.Active = true;
119
120        Boss.Brain = tasoAivot;
121    }
122    void LisaaOrkki(Vector paikka, double leveys, double korkeus)
123    {
124        PlatformCharacter Orkki = new PlatformCharacter(200, 200);
125        Orkki.Position = paikka;
126        Add(Orkki);
127        Orkki.Image = orkki;
128        Orkki.Tag = "orkki";
129        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
130        tasoAivot.Speed = 50;
131        tasoAivot.Active = true;
132
133        Orkki.Brain = tasoAivot;
134    }
135    IntMeter ammusLaskuri;
136
137    void LuoAmmusLaskuri()
138    {
139        ammusLaskuri = new IntMeter(ammustenMaara);
140        Label pisteNaytto = new Label();
141        pisteNaytto.X = Screen.Left + 100;
142        pisteNaytto.Y = Screen.Top - 100;
143        pisteNaytto.TextColor = Color.Red;
144        pisteNaytto.Color = Color.Green;
145
146        pisteNaytto.BindTo(ammusLaskuri);
147        Add(pisteNaytto);
148    }
149
150
151
152    void LisaaBox(Vector paikka, double leveys, double korkeus)
153    {
154        PhysicsObject Box = PhysicsObject.CreateStaticObject(leveys, korkeus);
155        Box.IgnoresCollisionResponse = true;
156        Box.Position = paikka;
157        Box.Image = boxinKuva;
158        Box.Tag = "Box";
159        Add(Box);
160    }
161    void LisaaNuke(Vector paikka, double leveys, double korkeus)
162    {
163        PhysicsObject nuke = PhysicsObject.CreateStaticObject(leveys, korkeus);
164        nuke.IgnoresCollisionResponse = true;
165        nuke.Position = paikka;
166        nuke.Image = this.nuke;
167        nuke.Tag = "nuke";
168        Add(nuke);
169
170    }
171
172    void LisaaGene(Vector paikka, double leveys, double korkeus)
173    {
174        PhysicsObject gene = PhysicsObject.CreateStaticObject(leveys, korkeus);
175        gene.IgnoresCollisionResponse = true;
176        gene.Position = paikka;
177        gene.Image = this.gene;
178        gene.Tag = "gene";
179        Add(gene);
180
181    }
182
183
184    void LisaaVihu(Vector paikka, double leveys, double korkeus)
185    {
186        Sombombo = new PlatformCharacter(leveys, korkeus);
187        Add(Sombombo);
188        Sombombo.Image = LoadImage("vihu");
189        Sombombo.Tag = "pahis";
190        // Sombombo.X = 140;Sombombo.Y = 180;
191        Sombombo.Position = paikka;
192
193
194
195        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
196        tasoAivot.Speed = 50;
197
198        Sombombo.Brain = tasoAivot;
199    }
200
201    void Lisaagun(Vector paikka, double leveys, double korkeus)
202    {
203        PhysicsObject gun = PhysicsObject.CreateStaticObject(leveys, korkeus);
204        //gun.IgnoresCollisionResponse = true;
205        gun.Position = paikka;
206        gun.Image = GuninKuva;
207        gun.Tag = "gun";
208        Add(gun);
209    }
210
211
212
213    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
214    {
215        Leaf = new PlatformCharacter(leveys, korkeus);
216        Leaf.Position = paikka;
217        Leaf.Mass = 4.0;
218        Leaf.Image = pelaajanKuva;
219        AddCollisionHandler(Leaf, "Box", TormaaTahteen);
220        AddCollisionHandler(Leaf, "gun", TormaaGuniin);
221        AddCollisionHandler(Leaf, "pahis", TormaaVihuun);
222        AddCollisionHandler(Leaf, "piikki", TormaaPiikkiin);
223        AddCollisionHandler(Leaf, "gene", TormaaGeneen);
224        Add(Leaf);
225        //pelaaja1 on PlatformCharacter-tyyppinen
226        Leaf.Weapon = new AssaultRifle(30, 10);
227
228        //Ammusten määrä aluksi:
229        Leaf.Weapon.Ammo.Value = ammustenMaara;
230
231        //Mitä tapahtuu kun ammus osuu johonkin?
232        Leaf.Weapon.ProjectileCollision = AmmusOsui;
233        //Leaf.Add(pelaajan1Ase);
234    }
235    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
236    {
237        ammus.Destroy();
238        if (kohde.Tag.Equals("pahis"))
239        {
240            kohde.Destroy();
241        }
242        if (kohde.Tag.Equals("orkki"))
243        {
244            bossinElamat -= 10;
245            if (bossinElamat <= 0) kohde.Destroy();
246        }
247    }
248    void AmmuAseella(PlatformCharacter pelaaja)
249    {
250        PhysicsObject ammus = pelaaja.Weapon.Shoot();
251        ammusLaskuri.Value--;
252        if (ammus != null)
253        {
254
255            //ammus.Size *= 3;
256            //ammus.Image = ...
257            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
258        }
259        Level.Background.Color = Color.Red;
260    }
261
262    void LuotiOsuu(PhysicsObject tormaaja, PlatformCharacter kohde)
263    {
264        Sombombo.Destroy();
265        pisteLaskuri.Value += 2;
266    }
267
268
269    void LuoPistelaskuri()
270    {
271        pisteLaskuri = new IntMeter(0);
272
273        Label pisteNaytto = new Label();
274        pisteNaytto.X = Screen.Left + 100;
275        pisteNaytto.Y = Screen.Top - 100;
276        pisteNaytto.TextColor = Color.Black;
277        pisteNaytto.Color = Color.White;
278
279        pisteNaytto.BindTo(pisteLaskuri);
280        Add(pisteNaytto);
281    }
282
283    void LisaaNappaimet()
284    {
285        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
286        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
287
288        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, -nopeus);
289        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", Leaf, nopeus);
290        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
291        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuAseella, "Ammu", Leaf);
292        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
293
294        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", Leaf, -nopeus);
295        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", Leaf, nopeus);
296        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", Leaf, hyppyNopeus);
297        IntMeter pisteLaskuri;
298    }
299
300
301
302
303    void Liikuta(PlatformCharacter hahmo, double nopeus)
304    {
305        hahmo.Walk(nopeus);
306    }
307
308    void Hyppaa(PlatformCharacter hahmo, double nopeus)
309    {
310        hahmo.Jump(nopeus);
311        hyppyAani.Play();
312    }
313
314    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject Box)
315    {
316        maaliAani.Play();
317        MessageDisplay.Add("Keräsit Boxin!");
318        Box.Destroy();
319        pisteLaskuri.Value += 5;
320    }
321    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject vihu)
322    {
323        maaliAani.Play();
324        MessageDisplay.Add("You died");
325        hahmo.Destroy();
326    }
327    void TormaaOrkkiin(PhysicsObject hahmo, PhysicsObject orkki)
328    {
329        maaliAani.Play();
330        MessageDisplay.Add("You died");
331        hahmo.Destroy();
332    }
333    void TormaaGiantiin(PhysicsObject hahmo, PhysicsObject Giant)
334    {
335        maaliAani.Play();
336        MessageDisplay.Add("You died");
337        Giant.Destroy();
338
339    }
340    void TormaaPiikkiin(PhysicsObject hahmo, PhysicsObject piikki)
341    {
342        maaliAani.Play();
343        MessageDisplay.Add("You died");
344        hahmo.Destroy();
345    }
346    void TormaaGuniin(PhysicsObject hahmo, PhysicsObject gun)
347    {
348        maaliAani.Play();
349        MessageDisplay.Add("Keräsit Aseen!");
350        gun.Destroy();
351
352        Leaf.Weapon = new PlasmaCannon(20, 5);
353        Leaf.Weapon.Ammo.Value = 60;
354        Leaf.Weapon.FireRate = 1;
355        Leaf.Weapon.ProjectileCollision = AmmusOsui;
356    }
357    void TormaaGeneen(PhysicsObject pelaaja, PhysicsObject gene)
358    {
359        StopAll();
360        PelaajaKuoli();
361
362
363
364    }
365
366    void PelaajaKuoli()
367    {
368
369        topLista.EnterAndShow(pisteLaskuri.Value);
370        topLista.HighScoreWindow.Closed += PeliLoppui;
371    }
372
373    void PeliLoppui(Window sender)
374    {
375        ClearAll();
376        Begin();
377    }
378}
Note: See TracBrowser for help on using the repository browser.