source: 2012/24/PyryL/RageFight/RageFight/RageFight/RageFight.cs @ 3002

Revision 3002, 16.7 KB checked in by pyjuella, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class RageFight : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 1000;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17
18    Explosion rajahdys = new Explosion(250);
19
20    PhysicsObject kone2;
21    PhysicsObject kone;
22
23    Image norsu = LoadImage("norsu");
24    Image tahtiKuva = LoadImage("tahti");
25    Image pelaaja = LoadImage("LOL1");
26    Image muurikuva = LoadImage("muuri");
27    Image paikallaanVasemmalle = LoadImage("LOL1");
28    Image paikallaanOikealle;
29    Image koneEhja = LoadImage("kone1");
30    Image koneRikki = LoadImage("kone2");
31    Image grass = LoadImage("taso");
32
33
34    Image[] kavelyVasemmalle = LoadImages("LOL2", "LOL3", "LOL4");
35    Image[] kavelyOikealle;
36    Image[] potku = LoadImages("LOLpotku3", "LOLpotku", "LOLpotku2");
37    Image[] potkuPeilattu;
38    Image[] rage = LoadImages("rage","rage2");
39    Image[] kup = LoadImages("kup1", "kup2", "kup3", "kup4", "kup5", "kup6");
40    Image[] kupPeilattu;
41
42    DoubleMeter voimaMittari1;
43    DoubleMeter voimaMittari2;
44    DoubleMeter koneMittari1;
45    DoubleMeter koneMittari2;
46
47
48
49    SoundEffect maaliAani = LoadSoundEffect("maali");
50
51
52    public override void Begin()
53    {
54        Gravity = new Vector(0, -1000);
55
56        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
57        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
58
59
60
61
62
63        luoKentta();
64        lisaaNappaimet();
65
66        Camera.ZoomToLevel (1) ;
67        //Camera.ZoomFactor = (0.3);
68        Camera.StayInLevel = false;
69    }
70
71    void luoKentta()
72    {
73        TileMap kentta = TileMap.FromFile("kentta1.txt");
74        kentta.SetTileMethod('#', lisaaTaso);
75        kentta.SetTileMethod('=', lisaaMuuri);
76        kentta.SetTileMethod('*', lisaaTahti);
77        kentta.SetTileMethod('N', lisaaPelaaja);
78        kentta.SetTileMethod('M', lisaaPelaaja2);
79        kentta.SetTileMethod('K', luoKone);
80        kentta.SetTileMethod('T', luoKone2);
81        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
82        Level.CreateBorders();
83        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
84
85
86    }
87
88    void lisaaTaso(Vector paikka, double leveys, double korkeus)
89    {
90        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
91        taso.Position = paikka;
92        taso.Color = Color.Green;
93        taso.Image = grass;
94        Add(taso,2);
95    }
96
97    void luoKone(Vector paikka, double leveys, double korkeus)
98    {
99
100        kone = PhysicsObject.CreateStaticObject(75, 75);
101        kone.Position = paikka;
102        kone.Image = koneEhja;
103        kone.IgnoresCollisionResponse = true;
104        Add(kone);
105
106        luoKoneMittari1();
107    }
108
109    void luoKone2(Vector paikka, double leveys, double korkeus)
110    {
111        kone2 = PhysicsObject.CreateStaticObject(75, 75);
112        kone2.Position = paikka;
113        kone2.Image = koneEhja;
114        kone2.IgnoresCollisionResponse = true;
115        Add(kone2);
116
117        luoKoneMittari2();
118    }
119
120
121    void lisaaMuuri(Vector paikka, double leveys, double korkeus)
122    {
123        PhysicsObject muuri = PhysicsObject.CreateStaticObject(leveys, korkeus);
124        muuri.Position = paikka;
125        muuri.Color = Color.Gray;
126        muuri.Image = muurikuva;
127        Add(muuri);
128
129    }
130    void lisaaTahti(Vector paikka, double leveys, double korkeus)
131    {
132        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
133        tahti.IgnoresCollisionResponse = true;
134        tahti.Position = paikka;
135        tahti.Image = tahtiKuva;
136        tahti.Tag = "tahti";
137        Add(tahti);
138    }
139
140    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
141    {
142        pelaaja1 = new PlatformCharacter(75, 75);
143        pelaaja1.Position = paikka;
144        pelaaja1.Mass = 4.0;
145        pelaaja1.Image = pelaaja;
146        pelaaja1.Tag = "pelaaja1";
147        AddCollisionHandler(pelaaja1, kasittelePelaajanTormays);
148
149        //AddCollisionHandler(pelaaja1,kasitteleLyonti);
150        Add(pelaaja1);
151
152
153        pelaaja1.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
154        pelaaja1.RightIdleAnimation = new Animation(paikallaanOikealle);
155
156        pelaaja1.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
157        pelaaja1.RightWalkingAnimation = new Animation(kavelyOikealle);
158
159        luomittari1();
160
161        pelaaja1.Destroyed += delegate
162        {
163            Keyboard.Disable(Key.Down);
164        };
165
166
167
168
169
170
171    }
172
173    void lisaaPelaaja2(Vector paikka, double leveys, double korkeus)
174    {
175        pelaaja2 = new PlatformCharacter(75, 75);
176        pelaaja2.Position = paikka;
177        pelaaja2.Mass = 4.0;
178        pelaaja2.Image = pelaaja;
179        pelaaja2.Tag = "pelaaja2";
180        AddCollisionHandler(pelaaja2, kasittelePelaajanTormays);
181        Add(pelaaja2);
182
183
184        pelaaja2.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
185        pelaaja2.RightIdleAnimation = new Animation(paikallaanOikealle);
186
187        pelaaja2.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
188        pelaaja2.RightWalkingAnimation = new Animation(kavelyOikealle);
189       
190        luomittari2();
191
192        pelaaja2.Destroyed += delegate {
193            Keyboard.Disable(Key.S);
194        };
195
196
197    }
198
199
200    void lisaaNappaimet()
201    {
202        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
203        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Poistu pelistä");
204        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
205
206        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
207        //Keyboard.Listen(Key.Left, ButtonState.Down, p1AnVas,"Animaatio");
208        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
209        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
210        Keyboard.Listen(Key.Down, ButtonState.Pressed, lyo, "Pelaaja potkaisee");
211
212        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
213        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
214        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyNopeus);
215        Keyboard.Listen(Key.S, ButtonState.Released, lyo2, "Pelaaja2 potkaisee");
216
217        Keyboard.Listen(Key.Down, ButtonState.Pressed, osuu2, "");
218        Keyboard.Listen(Key.S, ButtonState.Pressed, osuu1, "");
219
220
221
222        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Poistu pelistä");
223
224        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
225        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
226        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
227
228        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
229    }
230
231    void liikuta(PlatformCharacter hahmo, double nopeus)
232    {
233        hahmo.Walk(nopeus);
234    }
235
236    void hyppaa(PlatformCharacter hahmo, double nopeus)
237    {
238        hahmo.Jump(nopeus);
239    }
240
241    void kasittelePelaajanTormays(PhysicsObject hahmo, PhysicsObject kohde)
242    {
243        if (kohde.Tag.ToString() == "tahti")
244        {
245            maaliAani.Play();
246            MessageDisplay.Add("Keräsit tähden!");
247            kohde.Destroy();
248        }
249    }
250
251    void lyo()
252    {
253        // tähän sellaiset mitä tehään joka tapauksessa (oltiin likkeessä tai ei)
254
255        if (pelaaja1.Velocity.X > 10)
256        {
257            kupPeilattu = Image.Mirror(kup);
258            pelaaja1.Animation = new Animation(kupPeilattu);
259            pelaaja1.Animation.FPS = 10;
260            pelaaja1.Animation.Start(1);
261
262            Timer ajastin = new Timer();
263            ajastin.Interval = 0.6;
264            ajastin.Timeout += p1AnOik;
265            ajastin.Start(1);
266           
267            return;
268        }
269
270        if (pelaaja1.Velocity.X < -10)
271        {
272            pelaaja1.Animation = new Animation(kup);
273            pelaaja1.Animation.FPS = 10;
274            pelaaja1.Animation.Start(1);
275
276            Timer ajastin = new Timer();
277            ajastin.Interval = 0.6;
278            ajastin.Timeout += p1AnVas;
279            ajastin.Start(1);
280
281            return;
282        }
283
284
285
286            // tänne muut tapaukset
287
288
289            potkuPeilattu = Image.Mirror(potku);
290            Animation l = pelaaja1.LeftIdleAnimation;
291            Animation r = pelaaja1.RightIdleAnimation;
292            pelaaja1.LeftIdleAnimation = new Animation(potku);
293            pelaaja1.RightIdleAnimation = new Animation(potkuPeilattu);
294            pelaaja1.LeftIdleAnimation.Played += delegate
295            {
296                pelaaja1.LeftIdleAnimation = l;
297                pelaaja1.RightIdleAnimation = r;
298            };
299            pelaaja1.RightIdleAnimation.Played += delegate
300            {
301                pelaaja1.LeftIdleAnimation = l;
302                pelaaja1.RightIdleAnimation = r;
303            };
304        }
305   
306
307    void lyo2()
308    {
309       // PelaajatTormaavat(pelaaja2, pelaaja1);
310        if (pelaaja2.Velocity.X > 10)
311        {
312            kupPeilattu = Image.Mirror(kup);
313            pelaaja2.Animation = new Animation(kupPeilattu);
314            pelaaja2.Animation.FPS = 10;
315            pelaaja2.Animation.Start(1);
316
317            Timer ajastin = new Timer();
318            ajastin.Interval = 0.7;
319            ajastin.Timeout += p2AnOik;
320            ajastin.Start(1);
321
322            return;
323        }
324
325        if (pelaaja2.Velocity.X < -10)
326        {
327            pelaaja2.Animation = new Animation(kup);
328            pelaaja2.Animation.FPS = 10;
329            pelaaja2.Animation.Start(1);
330
331            Timer ajastin = new Timer();
332            ajastin.Interval = 0.7;
333            ajastin.Timeout += p2AnVas;
334            ajastin.Start(1);
335
336            return;
337        }
338
339        potkuPeilattu = Image.Mirror(potku);
340        Animation l = pelaaja2.LeftIdleAnimation;
341        Animation r = pelaaja2.RightIdleAnimation;
342        pelaaja2.LeftIdleAnimation = new Animation(potku);
343        pelaaja2.RightIdleAnimation = new Animation(potkuPeilattu);
344        pelaaja2.LeftIdleAnimation.Played += delegate
345        {
346            pelaaja2.LeftIdleAnimation = l;
347            pelaaja2.RightIdleAnimation = r;
348        };
349        pelaaja2.RightIdleAnimation.Played += delegate
350        {
351            pelaaja2.LeftIdleAnimation = l;
352            pelaaja2.RightIdleAnimation = r;
353        };
354        //pelaaja2.Animation = new Animation(potku);
355        //pelaaja2.Animation.Start(1);
356        //pelaaja2.Animation.FPS = 7;
357
358
359    }
360
361
362    void osuu2()
363    {
364
365        if (Vector.Distance(pelaaja1.Position, pelaaja2.Position) < 100)
366        {
367            Animation l = pelaaja2.LeftIdleAnimation;
368            Animation r = pelaaja2.RightIdleAnimation;
369            pelaaja2.LeftIdleAnimation = new Animation(rage);
370            pelaaja2.RightIdleAnimation = new Animation(rage);
371            pelaaja2.LeftIdleAnimation.Played += delegate
372            {
373                pelaaja2.LeftIdleAnimation = l;
374                pelaaja2.RightIdleAnimation = r;
375            };
376            pelaaja2.RightIdleAnimation.Played += delegate
377            {
378                pelaaja2.LeftIdleAnimation = l;
379                pelaaja2.RightIdleAnimation = r;
380            };
381            VahennaVoimia2();
382
383        }
384
385        if (Vector.Distance(pelaaja1.Position, kone2.Position) < 100)
386        {
387            VahennaVoimiaKone2();
388        }
389
390    }
391
392    void osuu1()
393    {
394
395        if (Vector.Distance(pelaaja1.Position, pelaaja2.Position) < 100)
396        {
397            Animation l = pelaaja1.LeftIdleAnimation;
398            Animation r = pelaaja1.RightIdleAnimation;
399            pelaaja1.LeftIdleAnimation = new Animation(rage);
400            pelaaja1.RightIdleAnimation = new Animation(rage);
401            pelaaja1.LeftIdleAnimation.Played += delegate
402            {
403                pelaaja1.LeftIdleAnimation = l;
404                pelaaja1.RightIdleAnimation = r;
405            };
406            pelaaja1.RightIdleAnimation.Played += delegate
407            {
408                pelaaja1.LeftIdleAnimation = l;
409                pelaaja1.RightIdleAnimation = r;
410            };
411            VahennaVoimia1();
412
413
414        }
415
416
417        if (Vector.Distance(pelaaja2.Position, kone.Position) < 100)
418        {
419            VahennaVoimiaKone1();
420        }
421
422
423
424    }
425
426    void p1AnVas()
427    {
428        pelaaja1.Animation = new Animation(kavelyVasemmalle);
429        pelaaja1.Animation.Start();
430    }
431
432    void p1AnOik()
433    {
434        pelaaja1.Animation = new Animation(kavelyOikealle);
435        pelaaja1.Animation.Start();
436    }
437
438    void p2AnVas()
439    {
440        pelaaja2.Animation = new Animation(kavelyVasemmalle);
441        pelaaja2.Animation.Start();
442    }
443
444    void p2AnOik()
445    {
446        pelaaja2.Animation = new Animation(kavelyOikealle);
447        pelaaja2.Animation.Start();
448    }
449
450    void luomittari1()
451    {
452
453    voimaMittari1 = new DoubleMeter(10);
454        voimaMittari1.MaxValue = 10;
455        ProgressBar voimaPalkki = new ProgressBar(150, 20);
456        voimaPalkki.BindTo(voimaMittari1);
457        Add(voimaPalkki);
458
459        voimaPalkki.X = Screen.Right - 300;
460        voimaPalkki.Y = Screen.Top - 20;
461        voimaPalkki.Angle = Angle.RightAngle;
462        voimaPalkki.BarColor = Color.Aqua;
463        voimaPalkki.BorderColor = Color.Aqua;
464        voimaPalkki.Angle = Angle.FromDegrees(180);
465
466        // Kun voima loppuu, kutsutaan VoimaLoppui1-aliohjelmaa
467        voimaMittari1.LowerLimit += VoimaLoppui1;
468
469    }
470
471    void luomittari2()
472    {
473        voimaMittari2 = new DoubleMeter(10);
474        voimaMittari2.MaxValue = 10;
475        ProgressBar voimaPalkki2 = new ProgressBar(150, 20);
476        voimaPalkki2.BindTo(voimaMittari2);
477        Add(voimaPalkki2);
478
479        voimaPalkki2.X = Screen.Right - 1000;
480        voimaPalkki2.Y = Screen.Top - 20;
481        voimaPalkki2.Angle = Angle.RightAngle;
482        voimaPalkki2.BarColor = Color.Aqua;
483        voimaPalkki2.BorderColor = Color.Aqua;
484        voimaPalkki2.Angle = Angle.FromDegrees(0);
485
486        // Kun voima loppuu, kutsutaan VoimaLoppui2-aliohjelmaa
487        voimaMittari2.LowerLimit += VoimaLoppui2;
488
489
490    }
491
492    void luoKoneMittari1()
493    {
494
495        koneMittari1 = new DoubleMeter(32);
496        koneMittari1.MaxValue = 32;
497        ProgressBar voimaPalkki = new ProgressBar(150, 20);
498        voimaPalkki.BindTo(koneMittari1);
499        Add(voimaPalkki);
500
501        voimaPalkki.X = Screen.Right - 1000;
502        voimaPalkki.Y = Screen.Top - 1000;
503        voimaPalkki.Angle = Angle.RightAngle;
504        voimaPalkki.BarColor = Color.Red;
505        voimaPalkki.BorderColor = Color.Red;
506        voimaPalkki.Angle = Angle.FromDegrees(0);
507
508        koneMittari1.LowerLimit += koneTuhoutui1;
509
510    }
511
512    void luoKoneMittari2()
513    {
514
515        koneMittari2 = new DoubleMeter(32);
516        koneMittari2.MaxValue = 32;
517        ProgressBar voimaPalkki = new ProgressBar(150, 20);
518        voimaPalkki.BindTo(koneMittari2);
519        Add(voimaPalkki);
520
521        voimaPalkki.X = Screen.Right - 300;
522        voimaPalkki.Y = Screen.Top - 1000;
523        voimaPalkki.Angle = Angle.RightAngle;
524        voimaPalkki.BarColor = Color.Red;
525        voimaPalkki.BorderColor = Color.Red;
526        voimaPalkki.Angle = Angle.FromDegrees(180);
527
528        koneMittari2.LowerLimit += koneTuhoutui2;
529
530    }
531
532
533
534    void VahennaVoimia1()
535    {
536        voimaMittari1.Value--;
537    }
538
539    void VahennaVoimia2()
540    {
541        voimaMittari2.Value--;
542    }
543
544    void VahennaVoimiaKone1()
545    {
546        koneMittari1.Value--;
547    }
548
549    void VahennaVoimiaKone2()
550    {
551        koneMittari2.Value--;
552    }
553
554
555
556
557    void VoimaLoppui1(double mittarinArvo)
558    {
559        MessageDisplay.Add("Pelaaja 1 sai turpiin.");
560        pelaaja1.Destroy();
561    }
562
563    void VoimaLoppui2(double mittarinArvo)
564    {
565        MessageDisplay.Add("Pelaaja 2 sai turpiin.");
566        pelaaja2.Destroy();
567    }
568
569    void koneTuhoutui1(double mittarinArvo)
570    {
571        MessageDisplay.Add("Pelaaja 2 voitti!");
572        rajahdys.Position = kone.Position;
573        Add(rajahdys,2);
574        kone.Destroy();
575    }
576
577    void koneTuhoutui2(double mittarinArvo)
578    {
579        MessageDisplay.Add("Pelaaja 1 voitti!");
580        rajahdys.Position = kone2.Position;
581        Add(rajahdys,2);
582        kone2.Destroy();
583
584    }
585
586
587}
Note: See TracBrowser for help on using the repository browser.