source: 2017/24/OliverK/Destroyer/Destroyer/Destroyer/Destroyer.cs @ 8799

Revision 8799, 14.2 KB checked in by nupeohje, 2 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 Destroyer : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17
18    List<FollowerBrain> aivolista = new List<FollowerBrain>();
19
20    Image palikka = LoadImage("New piskel (22)");
21    Image pelaajanKuva1;
22    Image pelaajanKuva2;
23    Image maaYlapuoli = LoadImage("New Piskel (14)");
24    Image tausta = LoadImage("New piskel (13)");
25    Image kivenkuva = LoadImage("new piskel (6)");
26    Image zombinkuva = LoadImage("new piskel (15)");
27    Image panoksenkuva = LoadImage("new piskel(16)");
28    Image hakki = LoadImage("New Piskel (24)");
29    Image ammuskuva = LoadImage("New piskel (20)");
30
31    //SoundEffect maaliAani = LoadSoundEffect("maali");
32    private Handler moniikkua;
33
34
35    public object Zombi { get; private set; }
36
37    //public Action<int> PainettiinValikonNappia { get; private set; }
38    void PainettiinValikonNappia(int valinta)
39    {
40        switch (valinta)
41        {
42            case 0:
43                Maailmat();
44                break;
45            case 1:
46                Exit();
47                break;
48
49        }
50    }
51    void PainettiinMaailmaNappia(int valinta)
52    {
53        switch (valinta)
54        {
55            case 0:
56                LegoMap();
57                break;
58            case 1:
59                KaupunkiMap();
60                break;
61            case 2:
62                MetsaMap();
63                break;
64            case 3:
65                Exit();
66                break;
67        }
68    }
69
70    void Alusta()
71    {
72        Camera.Follow(pelaaja1);
73        Camera.ZoomFactor = 1.2;
74        Camera.StayInLevel = true;
75        LisaaNappaimet();
76        AloitaPeli();
77    }
78
79    void LegoMap()
80    {
81        LuoKenttä2();
82        Alusta();
83    }
84    void KaupunkiMap()
85    {
86        LuoKentta3();
87        Alusta();
88    }
89    void MetsaMap()
90    {
91        LuoKentta1();
92        Alusta();
93    }
94
95
96    public override void Begin()
97    {
98        SmoothTextures = false;
99        Gravity = new Vector(0, -1000);
100
101        moniikkuna();
102        //alkuValikko();
103
104
105
106
107        //Camera.(pelaaja1);
108    }
109    void alkuValikko()
110    {
111        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
112      "Aloita peli", "Parhaat pisteet", "Lopeta");
113
114        alkuValikko.DefaultCancel = 3;
115        alkuValikko.Color = Color.Red;
116
117
118        Add(alkuValikko);
119
120
121
122
123    }
124    void moniikkuna()
125    {
126        MultiSelectWindow valikko = new MultiSelectWindow("RUN",
127        "Valitse map", "Lopetapeli");
128        valikko.ItemSelected += PainettiinValikonNappia;
129        valikko.Color = Color.Red;
130
131        Add(valikko);
132    }
133    void Maailmat()
134    {
135        MultiSelectWindow valikko = new MultiSelectWindow("Mapit",
136        "Lego Map", "Kaupunki Map", "Metsä Map", "Lopetapeli");
137        valikko.ItemSelected += PainettiinMaailmaNappia;
138        valikko.Color = Color.Red;
139
140        Add(valikko);
141
142    }
143
144
145
146
147    void AloitaPeli()
148    {
149        foreach (FollowerBrain aivo in aivolista) aivo.Active = true;
150        LisaaKiviaAjastetusti();
151
152        foreach (FollowerBrain aivo in aivolista) aivo.Active = true;
153        LisaazombejaAjastetusti();
154
155
156
157    }
158    void LuoKentta3()
159    {//KAUPUNKI
160        pelaajanKuva1 = LoadImage("New Piskel (25)");
161        pelaajanKuva2 = LoadImage("New piskel (25)");
162        tausta = LoadImage("New Piskel (29)");
163        maaYlapuoli = LoadImage("New Piskel (32)");
164        hakki = LoadImage("New Piskel (18)");
165
166        TileMap kentta = TileMap.FromLevelAsset("KaupunkiMap");
167        kentta.SetTileMethod('#', LisaaTaso);
168        kentta.SetTileMethod('*', LisaaTahti);
169        kentta.SetTileMethod('1', LisaaPelaaja1);
170        kentta.SetTileMethod('2', LisaaPelaaja2);
171        //kentta.SetTileMethod('k', (AbstractTileMap<char>.TileMethodWithPos)this.LisaaKivia);
172        kentta.SetTileMethod('%', LisaaTaso2);
173        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
174        Level.CreateBorders();
175        Level.Background.Image = tausta;
176        Level.Background.FitToLevel();
177        Level.Background.TextureWrapSize = new Vector(3, 1);
178        pelaaja1.Image = pelaajanKuva1;
179
180    }
181    void LuoKenttä2()
182
183    //LEGO MAP
184    {
185        pelaajanKuva1 = LoadImage("New Piskel (22)");
186        pelaajanKuva2 = LoadImage("New piskel (22)");
187        tausta = LoadImage("New Piskel (28)");
188        maaYlapuoli = LoadImage("New Piskel (27)");
189        hakki = LoadImage("New Piskel (18)");
190
191
192        TileMap kentta = TileMap.FromLevelAsset("LegoMap");
193        kentta.SetTileMethod('#', LisaaTaso);
194        kentta.SetTileMethod('*', LisaaTahti);
195        kentta.SetTileMethod('1', LisaaPelaaja1);
196        kentta.SetTileMethod('2', LisaaPelaaja2);
197        //kentta.SetTileMethod('k', (AbstractTileMap<char>.TileMethodWithPos)this.LisaaKivia);
198        kentta.SetTileMethod('%', LisaaTaso2);
199        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
200        Level.CreateBorders();
201        Level.Background.Image = tausta;
202        Level.Background.FitToLevel();
203        Level.Background.TextureWrapSize = new Vector(3, 1);
204        pelaaja1.Image = pelaajanKuva1;
205
206    }
207    void LuoKentta1()
208
209    // METSÄ MAP
210
211    {
212        pelaajanKuva1 = LoadImage("New Piskel (23)");
213        pelaajanKuva2 = LoadImage("New piskel (23)");
214        tausta = LoadImage("New Piskel (13)");
215        maaYlapuoli = LoadImage("New Piskel (14)");
216        hakki = LoadImage("New Piskel (24)");
217
218        TileMap kentta = TileMap.FromLevelAsset("MetsäMap");
219        kentta.SetTileMethod('#', LisaaTaso);
220        kentta.SetTileMethod('*', LisaaTahti);
221        kentta.SetTileMethod('1', LisaaPelaaja1);
222        kentta.SetTileMethod('2', LisaaPelaaja2);
223        //kentta.SetTileMethod('k', (AbstractTileMap<char>.TileMethodWithPos)this.LisaaKivia);
224        kentta.SetTileMethod('%', LisaaTaso2);
225        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
226        Level.CreateBorders();
227        Level.Background.Image = tausta;
228        Level.Background.FitToLevel();
229        Level.Background.TextureWrapSize = new Vector(3, 1);
230
231
232
233
234    }
235
236
237
238
239
240    void LisaaTaso(Vector paikka, double leveys, double korkeus)
241    {
242        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
243        taso.Position = paikka;
244        taso.Image = maaYlapuoli;
245        Add(taso);
246    }
247    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
248    {
249        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
250        taso.Position = paikka;
251        taso.Image = hakki;
252        Add(taso);
253    }
254    void LisaaTahti(Vector paikka, double leveys, double korkeus)
255    {
256        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
257        tahti.IgnoresCollisionResponse = true;
258        tahti.Position = paikka;
259
260        tahti.Tag = "tahti";
261        Add(tahti);
262    }
263
264    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
265    {
266        pelaaja1 = new PlatformCharacter(64.0, 64.0);
267        pelaaja1.Position = paikka;
268        pelaaja1.Image = pelaajanKuva1;
269        pelaaja1.Mass = 4.0;
270        AddCollisionHandler(pelaaja1, "kivi", Tormaakiveen1);
271        AssaultRifle pyssy = new AssaultRifle(leveys * 10.0, korkeus * 5.0);
272        pelaaja1.Weapon = new AssaultRifle(30, 10);
273
274        //Ammusten määrä aluksi:
275        pelaaja1.Weapon.Ammo.Value = 1000;
276
277        //Mitä tapahtuu kun ammus osuu johonkin?
278        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
279
280        Add(pelaaja1);
281    }
282    void LisaaPelaaja2(Vector paikka, double korkeus, double leveys)
283    {
284        pelaaja2 = new PlatformCharacter(64.0, 64.0);
285        pelaaja2.Position = paikka;
286        pelaaja2.Mass = 4.0;
287        pelaaja2.Image = pelaajanKuva2;
288        AddCollisionHandler(pelaaja2, "kivi", Tormaakiveen2);
289        AssaultRifle pyssy = new AssaultRifle(20, 5);
290        pelaaja2.Weapon = new AssaultRifle(30, 10);
291
292        //Ammusten määrä aluksi:
293        pelaaja2.Weapon.Ammo.Value = 1000;
294
295        //Mitä tapahtuu kun ammus osuu johonkin?
296        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
297
298        Add(pelaaja2);
299    }
300
301
302    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
303    {
304        if (kohde.Tag.Equals("kivi")) { kohde.Destroy(); }
305        if (kohde.Tag.Equals("zombi")) { kohde.Destroy(); }
306    }
307
308
309    void AmmuAseella(PlatformCharacter pelaaja)
310    {
311
312        PhysicsObject ammus = pelaaja.Weapon.Shoot();
313
314        if (ammus != null)
315        {
316            ammus.Size *= 1;
317            ammus.Image = ammuskuva;
318            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
319        }
320
321        {
322        }
323
324
325
326    }
327
328
329
330
331
332
333
334    void LisaaKivia(Vector paikka, double leveys, double korkeus)
335    {
336        PlatformCharacter kivi = new PlatformCharacter(leveys, korkeus);
337        kivi.Position = paikka;
338        kivi.Image = kivenkuva;
339        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1, pelaaja2);
340        seuraajanAivot.Active = false;
341        kivi.Brain = seuraajanAivot;
342        kivi.Tag = "kivi";
343        Add(kivi);
344        aivolista.Add(seuraajanAivot);
345
346
347
348    }
349    void LisaaKiviaAjastetusti()
350    {
351        Timer ajastin = new Timer();
352        ajastin.Interval = 1.0;
353        ajastin.Timeout += LuoKivia;
354        ajastin.Start();
355    }
356    void LuoKivia()
357    {
358        LisaaKivia(new Vector(0, -10), 70, 70);
359        aivolista[aivolista.Count - 1].Active = true;
360    }
361
362
363
364    //--------------------------------------------
365
366
367    void LisaaZombeja(Vector paikka, double leveys, double korkeus)
368    {
369        PlatformCharacter zobmi = new PlatformCharacter(leveys, korkeus);
370        zobmi.Position = paikka;
371        zobmi.Image = zombinkuva;
372        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1, pelaaja2);
373        seuraajanAivot.Active = false;
374        zobmi.Brain = seuraajanAivot;
375        zobmi.Tag = "zombi";
376        Add(zobmi);
377        aivolista.Add(seuraajanAivot);
378
379
380
381    }
382    void LisaazombejaAjastetusti()
383    {
384        Timer ajastin = new Timer();
385        ajastin.Interval = 1.0;
386        ajastin.Timeout += LuoZombeja;
387        ajastin.Start();
388    }
389    void LuoZombeja()
390    {
391        LisaaZombeja(new Vector(0, +10), 70, 70);
392        aivolista[aivolista.Count - 1].Active = true;
393    }
394
395
396
397
398
399
400
401
402
403    void LisaaNappaimet()
404    {
405        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
406        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
407
408        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
409        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
410        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
411        //       Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja1);
412        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "ammu", pelaaja1);
413        Keyboard.Listen(Key.P, ButtonState.Pressed, moniikkua, "avaa moniikkuna");
414
415        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
416
417        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
418        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
419        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
420        ControllerOne.Listen(Button.X, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja1);
421        //----------------------------------------------------------------------------------------------------------------
422        Keyboard.Listen(Key.X, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
423        Keyboard.Listen(Key.C, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
424        Keyboard.Listen(Key.D, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
425        Keyboard.Listen(Key.Z, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
426
427
428        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
429
430        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
431        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
432        ControllerTwo.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
433        ControllerTwo.Listen(Button.X, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja2);
434
435
436
437
438
439        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
440    }
441
442    private void PainettiinValikonNappia()
443    {
444        throw new NotImplementedException();
445    }
446
447    void Liikuta(PlatformCharacter hahmo, double nopeus)
448    {
449        hahmo.Walk(nopeus);
450    }
451
452    void Hyppaa(PlatformCharacter hahmo, double nopeus)
453    {
454        hahmo.Jump(nopeus);
455    }
456
457    void Tormaakiveen1(PhysicsObject hahmo, PhysicsObject kivi)
458    {
459        //maaliAani.Play();
460        MessageDisplay.Add("pelaaja1 kuoli");
461        ShowMessageWindow("PAINA esc NÄPPÄINTÄ");
462        {
463
464        }
465        pelaaja1.Destroy();
466
467    }
468    void Tormaakiveen2(IPhysicsObject hahmo, IPhysicsObject kivi)
469    {
470        //maaliAani.Play();
471        MessageDisplay.Add("pelaaja2 kuoli");
472
473        pelaaja2.Destroy();
474    }
475    void TormaaZombiin1(IPhysicsObject hahmo, IPhysicsObject zombi)
476    {
477        //maaliAani.Play();
478        MessageDisplay.Add("zombi tappoi pelaaja1");
479        ShowMessageWindow("PELI LOPPUI");
480        pelaaja1.Destroy();
481        //Destroy = Exit();
482    }
483    void TormaaZombiin(IPhysicsObject hahmo, IPhysicsObject zombi)
484    {
485        //maaliAani.Play();
486        MessageDisplay.Add("Zombi tappoi pelaaja2");
487        pelaaja2.Destroy();
488    }
489}
490
491
492
493
494
495
496
497
Note: See TracBrowser for help on using the repository browser.