source: 2015/23/EeroK/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1.cs @ 5895

Revision 5895, 13.9 KB checked in by empaheik, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Widgets;
7
8public class Peli : PhysicsGame
9{
10        Image PHenkikuva = LoadImage ("Smiley");
11        Image Tiilit = LoadImage ("Tiles");
12        Image Ovi = LoadImage("Ovi");
13    Image wood = LoadImage("wood");
14    Image guns = LoadImage("guns");
15    Image bed = LoadImage("bed");
16    Image salimyyja = LoadImage("salimyyja");
17    Image karatekidi = LoadImage("karatekidi");
18    Image aseammus = LoadImage("ammusjuttu");
19    Image rifle = LoadImage("pelaajaase");
20    Image bosskeho = LoadImage("bossinkeho");
21
22    double ruudunkorkeus = 45;
23    double ruudunleveys = 66;
24
25
26
27
28        PhysicsObject PHenki;
29
30    Cannon PHenkiAse;
31
32        int KenttaNro = 1;
33    int PorttiNro = 0;
34    int PlayerHealth = 100;
35    int Tapettuja = 0;
36
37
38        public override void Begin ()
39        {
40        LuoKentta();
41        LuoKentta();
42
43        Mouse.IsCursorVisible = true;
44
45
46               
47
48                //TODO korjaa ongelma, PHenkilo kulkee seinien läpi kulmissa.
49
50                //AddCollisionHandler (PHenki, "koti", TormasiKotiin);
51
52
53
54
55        }
56
57    void LuoPelaaja()
58    {
59        PHenki = new PhysicsObject(40.0, 40.0);
60        PHenki.Shape = Shape.Circle;
61        PHenki.Image = PHenkikuva;
62        PHenki.Tag = "pelaaja";
63        if (KenttaNro == 2)
64        {
65            PHenki.Y = -136;
66        }
67        if (KenttaNro == 3)
68        {
69            PHenki.Y = -60;
70        }
71        if (KenttaNro == 4)
72        {
73            PHenki.Y = -245;
74        }
75        if (KenttaNro == 5)
76        {
77            PHenki.Y = 0;
78            PHenki.X = -10;
79        }
80
81        if (PorttiNro == 1)
82        {
83            PHenki.Restitution = 1;
84        }
85        Add(PHenki);
86        PHenki.Restitution = 0.3;
87
88        Ase();
89
90
91
92        PHenki.KineticFriction = 1.0;
93        PHenki.LinearDamping = 0.9;
94        PHenki.CanRotate = false;
95
96        PlayerHealth = 100;
97    }
98
99    void Ase()
100    {
101        PHenkiAse = new Cannon(63, 36);
102        PHenkiAse.Ammo.Value = 100000;
103        PHenkiAse.Image = rifle;
104
105        if (KenttaNro <= 5)
106        {
107            PHenki.Add(PHenkiAse);
108        }
109
110        if (KenttaNro == 5)
111        {
112            MessageWindow komminismi = new MessageWindow("Aseesi Poistetaan, koska                kommunismia vastaan ei voi          taistella");
113            Add(komminismi);
114            PHenkiAse.Destroy();
115        }
116    }
117
118    void Nappaimet()
119    {
120        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
121
122        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-2000, 0));
123        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(2000, 0));
124        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 2000));
125        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -2000));
126
127        Mouse.ListenMovement(0.1, Tahtaa, "tahtaa");
128        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ampuu", PHenkiAse);
129    }
130
131    void AmmuAseella(Cannon PHenkiAse)
132    {
133        PhysicsObject ammus = PHenkiAse.Shoot();
134        PHenkiAse.ProjectileCollision = AmmusOsui;
135
136        if(ammus != null)
137        {
138            ammus.Size *= 2;
139            ammus.Image = aseammus;
140        }
141    }
142
143        void LiikutaPelaajaa(Vector vektori)
144        {
145                PHenki.Push (vektori);
146        }
147
148    void Tahtaa(AnalogState hiirenLiike)
149    {
150        Vector suunta = (Mouse.PositionOnWorld - PHenki.AbsolutePosition).Normalize();
151        PHenki.Angle = suunta.Angle;
152    }
153
154        void LisaaSeina(Vector paikka, double leveys, double korkeus)
155        {
156                PhysicsObject tiili = PhysicsObject.CreateStaticObject(leveys,korkeus);
157                tiili.Position = paikka;
158                tiili.Restitution = 0.3;
159                tiili.Image = Tiilit;
160        tiili.Tag = "tiili";
161        Add(tiili);
162        }
163
164        void LisaaKoti(Vector paikka, double leveys, double korkeus)
165        {
166                PhysicsObject koti = PhysicsObject.CreateStaticObject (leveys, korkeus);
167                koti.Position = paikka;
168                koti.Restitution = 0.3;
169                koti.Image = Ovi;
170                koti.Tag = "koti";
171                Add (koti);
172        }
173
174        void LisaaAseet (Vector paikka, double leveys, double korkeus)
175        {
176                PhysicsObject aseet = PhysicsObject.CreateStaticObject (leveys, korkeus);
177                aseet.Position = paikka;
178                aseet.Restitution = 0.3;
179                aseet.Image = guns;
180                aseet.Tag = "aseet";
181                Add (aseet);
182        }
183
184    void LisaaPoyta(Vector paikka, double leveys, double korkeus)
185    {
186        PhysicsObject poyta = PhysicsObject.CreateStaticObject (leveys, korkeus);
187                poyta.Position = paikka;
188                poyta.Restitution = 0.3;
189                poyta.Image = wood;
190                poyta.Tag = "kassa";
191        Add(poyta);
192    }
193
194    void LisaaKauppaovi(Vector paikka, double leveys, double korkeus)
195    {
196        PhysicsObject kauppaovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
197        kauppaovi.Position = paikka;
198        kauppaovi.Restitution = 0.3;
199        kauppaovi.Image = Ovi;
200        kauppaovi.Tag = "kauppaovi";
201        Add(kauppaovi);
202    }
203
204    void LisaaSanky(Vector paikka, double leveys, double korkeus)
205    {
206        PhysicsObject sanky = PhysicsObject.CreateStaticObject(leveys, korkeus);
207        sanky.Position = paikka;
208        sanky.Restitution = 0.3;
209        sanky.Image = bed;
210        sanky.Tag = "sanky";
211        Add(sanky);
212    }
213
214    void LisaaPoisovi(Vector paikka, double leveys, double korkeus)
215    {
216        PhysicsObject poisovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
217        poisovi.Position = paikka;
218        poisovi.Restitution = 0.3;
219        poisovi.Image = Ovi;
220        poisovi.Tag = "poisovi";
221        Add(poisovi);
222    }
223
224    void LisaaKotiovi(Vector paikka, double leveys, double korkeus)
225    {
226        PhysicsObject kotiovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
227        kotiovi.Position = paikka;
228        kotiovi.Restitution = 0.3;
229        kotiovi.Image = Ovi;
230        kotiovi.Tag = "kotiovi";
231        Add(kotiovi);
232    }
233
234    void LisaaSaliovi(Vector paikka, double leveys, double korkeus)
235    {
236        PhysicsObject saliovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
237        saliovi.Position = paikka;
238        saliovi.Restitution = 0.3;
239        saliovi.Image = Ovi;
240        saliovi.Tag = "saliovi";
241        Add(saliovi);
242    }
243
244    void LisaaPomoovi(Vector paikka, double leveys, double korkeus)
245    {
246        PhysicsObject pomoovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
247        pomoovi.Position = paikka;
248        pomoovi.Restitution = 0.3;
249        pomoovi.Image = Ovi;
250        pomoovi.Tag = "bossovi";
251        Add(pomoovi);
252    }
253
254    void LisaaMyyja(Vector paikka, double leveys, double korkeus)
255    {
256        PhysicsObject myyja = PhysicsObject.CreateStaticObject(leveys, korkeus);
257        myyja.Position = paikka;
258        myyja.Restitution = 0.3;
259        myyja.Image = salimyyja;
260        myyja.Tag = "myyja";
261        Add(myyja);
262    }
263
264    void LisaaPortti(Vector paikka, double leveys, double korkeus)
265    {
266
267        PhysicsObject portti = PhysicsObject.CreateStaticObject(leveys, korkeus);
268        portti.Position = paikka;
269        portti.Restitution = 0.3;
270        portti.Image = Ovi;
271        portti.Tag = "portti";
272
273        if (PorttiNro == 0)
274        {
275            Add(portti);
276        }
277
278        if (PorttiNro == 1)
279        {
280            portti.Destroy();
281        }
282    }
283
284    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
285    {
286        PhysicsObject karatekid = new PhysicsObject(leveys, korkeus);
287        karatekid.Position = paikka;
288        karatekid.Restitution = 1;
289        karatekid.Image = karatekidi;
290        karatekid.Tag = "karatekid";
291
292        FollowerBrain karatekidaivot = new FollowerBrain(PHenki);
293        karatekidaivot.Speed = 120;
294
295        if (PorttiNro == 0)
296        {
297            karatekidaivot.Active = false;
298        }
299
300        if(PorttiNro == 1)
301        {
302            karatekidaivot.Active = true;
303        }
304
305        karatekid.Brain = karatekidaivot;
306
307        Add(karatekid);
308    }
309
310    void LisaaBoss(Vector paikka, double leveys, double korkeus)
311    {
312        PhysicsObject bossi = new PhysicsObject(82, 111);
313        bossi.Position = paikka;
314        bossi.Restitution = 1;
315        bossi.Image = bosskeho;
316        bossi.Tag = "boss";
317
318        FollowerBrain bossaivot = new FollowerBrain(PHenki);
319        bossaivot.Speed = 180;
320        bossaivot.Active = true;
321
322        bossi.Brain = bossaivot;
323
324        Add(bossi);
325    }
326
327    void PuhuiMyyjalle(PhysicsObject PHenki, PhysicsObject myyja)
328    {
329        MultiSelectWindow valikko = new MultiSelectWindow("Haluatko Taistella",
330"Kyllä", "En");
331        valikko.ItemSelected += PainettiinValikonNappia;
332        Add(valikko);
333    }
334
335    void PainettiinValikonNappia(int valinta)
336    {
337        switch (valinta)
338        {
339            case 0:
340                PorttiNro = 1;
341                LuoSali();
342                break;
343            case 1:
344                break;
345        }
346    }
347
348        void TormasiKotiin(PhysicsObject PHenki, PhysicsObject koti)
349    {
350        LuoKoti();
351        }
352
353    void TormasiBossiin(PhysicsObject PHenki, PhysicsObject bossovi)
354    {
355        if (Tapettuja >= 7)
356        {
357            Bosshuone();
358        }
359        if (Tapettuja <= 7)
360        {
361            MessageWindow etpaase = new MessageWindow("Et pääse, voita ihmiset salissa");
362            Add(etpaase);
363        }
364    }
365
366    void Painettiinkuolit1nappia(int kuolit1)
367    {
368        switch (kuolit1)
369        {
370            case 0:
371                LuoKentta();
372                Tapettuja = 0;
373                PorttiNro = 0;
374                break;
375            case 1:
376                Exit();
377                break;
378        }
379    }
380
381    void MeneePoisKaupasta(PhysicsObject PHenki, PhysicsObject poisovi)
382    {
383        LuoKentta();
384    }
385
386    void MeneePoisKotoa(PhysicsObject PHenki, PhysicsObject kotiovi)
387    {
388        LuoKentta();
389    }
390
391    void TormasiAseeseen(PhysicsObject PHenki, PhysicsObject kauppaovi)
392    {
393        LuoKauppa();
394    }
395
396    void TormasiSaliin(PhysicsObject PHenki, PhysicsObject saliovi)
397    {
398        LuoSali();
399    }
400
401    void Potku(PhysicsObject PHenki, PhysicsObject karatekid)
402    {
403        PlayerHealth -= 100;
404        if (KenttaNro <= 4)
405        {
406            MultiSelectWindow kuolit1 = new MultiSelectWindow("Hävisit Pelin", "Aloita Alusta", "Poistu");
407            kuolit1.ItemSelected += Painettiinkuolit1nappia;
408            Add(kuolit1);
409        }
410        if (KenttaNro == 5)
411        {
412            MessageWindow kuolit2 = new MessageWindow("Olet nyt osa kommunismin                 maailmanvaltaa");
413            Add(kuolit2);
414        }
415    }
416
417    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
418    {
419        ammus.Destroy();
420        if (kohde.Tag.Equals("karatekid"))
421        {
422            kohde.Destroy();
423            Tapettuja += 1;
424        }
425    }
426
427        void LuoKentta()
428        {
429        ClearAll();
430
431        TileMap mappi = TileMap.FromLevelAsset("Map");
432
433        KenttaNro = 1;
434
435        LuoPelaaja();
436
437        Nappaimet();
438
439                mappi.SetTileMethod ('x', LisaaSeina);
440                mappi.SetTileMethod ('-', LisaaSeina);
441                mappi.SetTileMethod ('h', LisaaKoti);
442                mappi.SetTileMethod ('a', LisaaKauppaovi);
443                mappi.SetTileMethod ('g', LisaaSaliovi);
444        mappi.SetTileMethod('f', LisaaPomoovi);
445
446        AddCollisionHandler(PHenki, "kauppaovi", TormasiAseeseen);
447        AddCollisionHandler(PHenki, "koti", TormasiKotiin);
448        AddCollisionHandler(PHenki, "saliovi", TormasiSaliin);
449        AddCollisionHandler(PHenki, "bossovi", TormasiBossiin);
450
451                mappi.Execute (ruudunleveys, ruudunkorkeus);
452        }
453
454    void LuoKauppa()
455    {
456        ClearAll();
457
458        KenttaNro = 2;
459
460        LuoPelaaja();
461
462        Nappaimet();
463
464        TileMap kauppa = TileMap.FromLevelAsset("kauppa");
465
466        kauppa.SetTileMethod('-', LisaaSeina);
467        kauppa.SetTileMethod('x', LisaaSeina);
468        kauppa.SetTileMethod('s', LisaaPoyta);
469        kauppa.SetTileMethod('a', LisaaAseet);
470        kauppa.SetTileMethod('d', LisaaPoisovi);
471
472        AddCollisionHandler(PHenki, "poisovi", MeneePoisKaupasta);
473
474        kauppa.Execute(ruudunleveys, ruudunkorkeus);
475    }
476
477    void LuoKoti()
478    {
479        ClearAll();
480
481        KenttaNro = 3;
482
483        LuoPelaaja();
484
485        Nappaimet();
486
487        TileMap koti = TileMap.FromLevelAsset("koti");
488
489        koti.SetTileMethod('-', LisaaSeina);
490        koti.SetTileMethod('b', LisaaSanky);
491        koti.SetTileMethod('p', LisaaPoyta);
492        koti.SetTileMethod('k', LisaaPoyta);
493        koti.SetTileMethod('d', LisaaKotiovi);
494
495        AddCollisionHandler(PHenki, "kotiovi", MeneePoisKotoa);
496
497        koti.Execute(ruudunleveys, ruudunkorkeus);
498    }
499
500    void LuoSali()
501    {
502        ClearAll();
503
504        KenttaNro = 4;
505
506        LuoPelaaja();
507        Ase();
508
509        Nappaimet();
510
511        TileMap sali = TileMap.FromLevelAsset("sali");
512
513        sali.SetTileMethod('x', LisaaPoyta);
514        sali.SetTileMethod('-', LisaaSeina);
515        sali.SetTileMethod('a', LisaaPortti);
516        sali.SetTileMethod('e', LisaaVihollinen);
517        sali.SetTileMethod('s', LisaaMyyja);
518        sali.SetTileMethod('d', LisaaPoisovi);
519
520        AddCollisionHandler(PHenki, "myyja", PuhuiMyyjalle);
521        AddCollisionHandler(PHenki, "karatekid", Potku);
522        AddCollisionHandler(PHenki, "poisovi", MeneePoisKaupasta);
523
524        Tapettuja = 0;
525
526        sali.Execute(ruudunleveys, ruudunkorkeus);
527    }
528
529    void Bosshuone()
530    {
531        ClearAll();
532
533        KenttaNro = 5;
534
535        LuoPelaaja();
536        Ase();
537
538        Nappaimet();
539
540        TileMap bosshuone = TileMap.FromLevelAsset("bosshuone");
541
542        bosshuone.SetTileMethod('-', LisaaSeina);
543        bosshuone.SetTileMethod('b', LisaaBoss);
544
545        AddCollisionHandler(PHenki, "boss", Potku);
546
547        bosshuone.Execute(ruudunleveys, ruudunkorkeus);
548    }
549
550
551}
Note: See TracBrowser for help on using the repository browser.