source: 2010/24/Vilvaini/SmilejumpToimiva/Peli.cs @ 995

Revision 995, 31.7 KB checked in by vilvaini, 11 years ago (diff)
Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6class Tasohyppely : PhysicsGame
7{
8    const double nopeus = 300;
9    const double hyppyVoima = 4000;
10    double tasokorkeus = 0;
11    double vihollistiheytys = 1;
12    double tasoleveys = 150;
13    double viholliskorkeus = 800;
14
15    bool Kolmepelaajaa = false;
16    bool Kaksipelaajaa = false;
17    bool Neljapelaajaa = false;
18    bool p1SaiVoiton = false;
19    bool p2SaiVoiton = false;
20    bool p3SaiVoiton = false;
21    bool p4SaiVoiton = false;
22
23    IntMeter pelaajan1pisteet;
24    IntMeter pelaajan2pisteet;
25    IntMeter pelaajan3pisteet;
26    IntMeter pelaajan4pisteet;
27
28    PhysicsObject p1voitti;
29    PhysicsObject p2voitti;
30    PhysicsObject p3voitti;
31    PhysicsObject p4voitti;
32
33    PlatformCharacter pelaaja1;
34    PlatformCharacter pelaaja2;
35    PlatformCharacter pelaaja3;
36    PlatformCharacter pelaaja4;
37
38    PhysicsObject Alku;
39    PhysicsObject Ohje2p;
40    PhysicsObject Ohje3p;
41    PhysicsObject taso;
42
43    Timer aikaLaskuri2;
44    Timer aikaLaskuri;
45
46    PhysicsObject vasenReuna;
47    PhysicsObject alaReuna;
48    PhysicsObject oikeaReuna;
49    PhysicsObject DownReuna;
50
51    protected override void Begin()
52    {
53        Level.Width = 1024;
54        Level.Height = 15000;
55        pelaajan1pisteet = new IntMeter(0);
56        pelaajan2pisteet = new IntMeter(0);
57        pelaajan3pisteet = new IntMeter(0);
58        pelaajan4pisteet = new IntMeter(0);
59        Camera.StayInLevel = true;
60        Alkukentta();
61        MediaPlayer.Play("popcorn");
62    }
63
64    void Alkukentta()
65    {
66        ClearAll();
67        AlustaPistelaskurit();
68        Alkunappaimet();
69        lisaaPelaajat();
70        LisaaDownReuna();
71        alaReuna = Level.CreateBottomBorder();
72        Level.Background.CreateGradient(Color.Beige, Color.Wheat);
73        LisaaAloitusruutu();
74        Kolmepelaajaa = false;
75        Kaksipelaajaa = false;
76    }
77
78    private void AlustaPistelaskurit()
79    {
80        pelaajan1pisteet.Reset();
81        pelaajan2pisteet.Reset();
82        pelaajan3pisteet.Reset();
83        pelaajan4pisteet.Reset();
84    }
85
86    private void Alkunappaimet()
87    {
88        Keyboard.Listen(Key.D2, ButtonState.Pressed, Kahdenpelaajanpeli, "");
89        Keyboard.Listen(Key.D3, ButtonState.Pressed, Kolmenpelaajanpeli, "");
90        Keyboard.Listen(Key.D4, ButtonState.Pressed, Neljanpelaajanpeli, "");
91        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
92    }
93
94    void seuraavaKentta()
95    {
96        ClearAll();
97        if (Kolmepelaajaa == true)
98        {
99            lisaaPelaaja3();
100        }
101
102        if (Neljapelaajaa == true)
103        {
104            lisaaPelaaja3();
105            lisaaPelaaja4();
106        }
107        lisaaTaso(RandomGen.NextDouble(Level.Left + 50, Level.Right - 50), Level.Bottom + 150, 150);
108
109        TeeReunat();
110        TeePistenaytot();
111
112        Gravity = new Vector(0, -600);
113
114        luoKentta();
115        lisaaNappaimet();
116        Camera.Follow(pelaaja1);
117    }
118
119    void TeePistenaytot()
120    {
121        ValueDisplay pisteNaytto = new ValueDisplay();
122        pisteNaytto.Text = "Pelaaja 1: ";
123        pisteNaytto.X = Screen.Left + 200;
124        pisteNaytto.Y = Screen.Top - 100;
125        pisteNaytto.ValueColor = Color.Red;
126        pisteNaytto.TextColor = Color.Red;
127        pisteNaytto.BindTo(pelaajan1pisteet);
128        Add(pisteNaytto);
129
130
131        ValueDisplay pisteNaytto2 = new ValueDisplay();
132        pisteNaytto2.Text = "Pelaaja 2: ";
133        pisteNaytto2.X = Screen.Left + 400;
134        pisteNaytto2.Y = Screen.Top - 100;
135        pisteNaytto2.ValueColor = Color.Red;
136        pisteNaytto2.TextColor = Color.Red;
137        pisteNaytto2.BindTo(pelaajan2pisteet);
138        Add(pisteNaytto2);
139
140        if (Kolmepelaajaa == true)
141        {
142            ValueDisplay pisteNaytto3 = new ValueDisplay();
143            pisteNaytto3.Text = "Pelaaja 3: ";
144            pisteNaytto3.X = Screen.Right - 400;
145            pisteNaytto3.Y = Screen.Top - 100;
146            pisteNaytto3.ValueColor = Color.Red;
147            pisteNaytto3.TextColor = Color.Red;
148            pisteNaytto3.BindTo(pelaajan3pisteet);
149            Add(pisteNaytto3);
150        }
151        if (Neljapelaajaa == true)
152        {
153            ValueDisplay pisteNaytto3 = new ValueDisplay();
154            pisteNaytto3.Text = "Pelaaja 3: ";
155            pisteNaytto3.X = Screen.Right - 400;
156            pisteNaytto3.Y = Screen.Top - 100;
157            pisteNaytto3.ValueColor = Color.Red;
158            pisteNaytto3.TextColor = Color.Red;
159            pisteNaytto3.BindTo(pelaajan3pisteet);
160            Add(pisteNaytto3);
161
162            ValueDisplay pisteNaytto4 = new ValueDisplay();
163            pisteNaytto4.Text = "Pelaaja 4: ";
164            pisteNaytto4.X = Screen.Right - 200;
165            pisteNaytto4.Y = Screen.Top - 100;
166            pisteNaytto4.ValueColor = Color.Red;
167            pisteNaytto4.TextColor = Color.Red;
168            pisteNaytto4.BindTo(pelaajan4pisteet);
169            Add(pisteNaytto4);
170        }
171    }
172
173    void TeeReunat()
174    {
175        vasenReuna = Level.CreateLeftBorder();
176        vasenReuna.Restitution = 0.0;
177        vasenReuna.IsVisible = false;
178
179        alaReuna = Level.CreateBottomBorder();
180        vasenReuna.Restitution = 0.0;
181        vasenReuna.IsVisible = false;
182
183        oikeaReuna = Level.CreateRightBorder();
184        vasenReuna.Restitution = 0.0;
185        vasenReuna.IsVisible = false;
186    }
187
188    void LisaaAloitusruutu()
189    {
190        Alku = PhysicsObject.CreateStaticObject(1024, 640);
191        Alku.X = 0;
192        Alku.Y = Level.Bottom + 320;
193        Alku.Image = LoadImage("Aloituskokonaytto2");
194        Alku.IgnoresCollisionResponse = true;
195        Alku.IgnoresPhysicsLogics = true;
196        Add(Alku);
197    }
198
199    void voitto(int voittavaPelaaja)
200    {
201        p1voitti = PhysicsObject.CreateStaticObject(1024, 640);
202        Camera.Position = new Vector(0, 0);
203        p1voitti.X = Camera.Position.X;
204        p1voitti.Y = Camera.Position.Y;
205        p1voitti.Image = LoadImage("Smile Jump(pelaaja " + voittavaPelaaja+ "1voitti)");
206
207        p1voitti.IgnoresCollisionResponse = true;
208        p1voitti.IgnoresPhysicsLogics = true;
209        Add(p1voitti);
210    }
211
212    void pelaaja1voitti()
213    {
214        p1voitti = PhysicsObject.CreateStaticObject(1024, 640);
215        Camera.Position = new Vector(0, 0);
216        p1voitti.X = Camera.Position.X;
217        p1voitti.Y = -7180;
218        p1voitti.Image = LoadImage("Smile Jump(pelaaja1voitti)");
219
220        p1voitti.IgnoresCollisionResponse = true;
221        p1voitti.IgnoresPhysicsLogics = true;
222        Add(p1voitti);
223    }
224
225    void pelaaja2voitti()
226    {
227        p2voitti = PhysicsObject.CreateStaticObject(1024, 640);
228        Camera.Position = new Vector(0,0);
229        p2voitti.X = Camera.Position.X;
230        p2voitti.Y = -7180;
231        p2voitti.Image = LoadImage("Smile Jump(pelaaja2voitti)");
232
233        p2voitti.IgnoresCollisionResponse = true;
234        p2voitti.IgnoresPhysicsLogics = true;
235        Add(p2voitti);
236    }
237
238    void pelaaja3voitti()
239    {
240        p3voitti = PhysicsObject.CreateStaticObject(1024, 640);
241        Camera.Position = new Vector(0, 0);
242        p3voitti.X = Camera.Position.X;
243        p3voitti.Y = -7180;
244        p3voitti.Image = LoadImage("Smile Jump(pelaaja3voitti)");
245
246        p3voitti.IgnoresCollisionResponse = true;
247        p3voitti.IgnoresPhysicsLogics = true;
248        Add(p3voitti);
249    }
250
251    void pelaaja4voitti()
252    {
253        p4voitti = PhysicsObject.CreateStaticObject(1024, 640);
254        Camera.Position = new Vector(0, 0);
255        p4voitti.X = Camera.Position.X;
256        p4voitti.Y = -7180;
257        p4voitti.Image = LoadImage("Smile Jump(pelaaja4voitti)");
258
259        p4voitti.IgnoresCollisionResponse = true;
260        p4voitti.IgnoresPhysicsLogics = true;
261        Add(p4voitti);
262    }
263
264    void KasittelePallonTormays(PhysicsObject pelaaja1, PhysicsObject kohde)
265    {
266        if (kohde == oikeaReuna)
267        {
268            pelaaja1.X = Level.Left + 30;
269        }
270        else if (kohde == vasenReuna)
271        {
272            pelaaja1.X = Level.Right - 30;
273        }
274    }
275
276    void TasonTormays(PhysicsObject taso, PhysicsObject kohde)
277    {
278        if (kohde == DownReuna)
279        {
280            taso.Destroy();
281        }
282
283    }
284
285    void Pelaaja1Osui(PhysicsObject p1, PhysicsObject kohde)
286    {
287        if (kohde == DownReuna)
288        {
289            p1.Destroy();
290            ControllerOne.Vibrate(1, 1, 0.0, 0.0, 0.5);
291        }
292
293        if (kohde.Tag.ToString() == "vihollinen")
294        {
295            kohde.Destroy();
296            p1.Destroy();
297            ControllerOne.Vibrate(1, 1, 0.0, 0.0, 0.5);
298        }
299
300    }
301
302    void Pelaaja2Osui(PhysicsObject p2, PhysicsObject kohde)
303    {
304        if (kohde == DownReuna)
305        {
306            p2.Destroy();
307            ControllerTwo.Vibrate(1, 1, 0.0, 0.0, 0.5);
308
309        }
310
311        if (kohde.Tag.ToString() == "vihollinen")
312        {
313            kohde.Destroy();
314            p2.Destroy();
315            ControllerTwo.Vibrate(1, 1, 0.0, 0.0, 0.5);
316        }
317
318    }
319
320
321    void Pelaaja3Osui(PhysicsObject p3, PhysicsObject kohde)
322    {
323        if (kohde == DownReuna)
324        {
325            p3.Destroy();
326            ControllerThree.Vibrate(1, 1, 0.0, 0.0, 0.5);
327        }
328
329        if (kohde.Tag.ToString() == "vihollinen")
330        {
331            kohde.Destroy();
332            p3.Destroy();
333            ControllerThree.Vibrate(1, 1, 0.0, 0.0, 0.5);
334        }
335
336    }
337
338    void Pelaaja4Osui(PhysicsObject p4, PhysicsObject kohde)
339    {
340        if (kohde == DownReuna)
341        {
342            p4.Destroy();
343        }
344
345        if (kohde.Tag.ToString() == "vihollinen")
346        {
347            kohde.Destroy();
348            p4.Destroy();
349        }
350
351    }
352
353    void VihollisKaantyVR(PhysicsObject vihulainen, PhysicsObject kohde)
354    {
355        if (kohde == vasenReuna)
356        {
357            vihulainen.Velocity = new Vector(220.0, 0.0);
358        }
359
360    }
361
362    void VihollisKaantyOR(PhysicsObject vihulainen, PhysicsObject kohde)
363    {
364        if (kohde == oikeaReuna)
365        {
366            vihulainen.Velocity = new Vector(-220.0, 0.0);
367        }
368
369    }
370
371    void luoKentta()
372    {
373        tasokorkeus = 50;
374        tasoleveys = 150;
375        for (int i = 0; i < 145; i++)
376        {
377            lisaaTaso(RandomGen.NextDouble(Level.Left + 50, -150), Level.Bottom + tasokorkeus + RandomGen.NextDouble(10.0, 15.0), tasoleveys);
378            lisaaTaso(RandomGen.NextDouble(150, Level.Right - 50), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
379            tasokorkeus = tasokorkeus + 170;
380            tasoleveys = tasoleveys - 1;
381        }
382        vihollistiheytys = 0;
383        viholliskorkeus = 0;
384        for (int v = 0; v < 55; v++)
385        {
386            viholliskorkeus = viholliskorkeus + 600 - vihollistiheytys;
387            LisaaVihollinen(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom + viholliskorkeus + RandomGen.NextDouble(0.0, 40.0));
388            vihollistiheytys = vihollistiheytys + 10;
389        }
390
391        tasokorkeus = 150;
392        tasoleveys = 150;
393        for (int h = 0; h < 75; h++)
394        {
395            lisaaTaso(RandomGen.NextDouble(150, -150), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
396            tasoleveys = tasoleveys - 2;
397            tasokorkeus = tasokorkeus + 170;
398        }
399        LisaaDownReuna();
400
401        Level.Background.CreateGradient(Color.SkyBlue, Color.DarkBlue);
402        lisaaPelaajat();
403
404        aikaLaskuri = new Timer();
405        aikaLaskuri.Interval = 2;
406        aikaLaskuri.Trigger += aikaLoppui;
407        Add(aikaLaskuri);
408        aikaLaskuri.Start(1);
409
410        aikaLaskuri2 = new Timer();
411        aikaLaskuri2.Interval = 5;
412        aikaLaskuri2.Trigger += aikaLoppui2;
413        Add(aikaLaskuri2);
414
415        Level.Width = 1024;
416        Level.Height = 15000;
417
418        LisaaVihollinen(0.0, Level.Bottom + 500);
419        Camera.StayInLevel = true;
420
421        if (Kaksipelaajaa == true)
422        {
423            Ohjeet2pelaajaa();
424        }
425        if (Kolmepelaajaa == true)
426        {
427            Ohjeet3pelaajaa();
428        }
429        if (Neljapelaajaa == true)
430        {
431            Ohjeet3pelaajaa();
432        }
433    }
434
435    private void Ohjeet2pelaajaa()
436    {
437        Ohje2p = PhysicsObject.CreateStaticObject(800, 200);
438        Ohje2p.X = 0;
439        Ohje2p.Y = Level.Bottom + 400;
440        Ohje2p.Image = LoadImage("Ohje2p");
441        Ohje2p.IgnoresCollisionResponse = true;
442        Ohje2p.IgnoresPhysicsLogics = true;
443        Add(Ohje2p);
444    }
445
446    private void Ohjeet3pelaajaa()
447    {
448        Ohje3p = PhysicsObject.CreateStaticObject(800, 200);
449        Ohje3p.X = 0;
450        Ohje3p.Y = Level.Bottom + 400;
451        Ohje3p.Image = LoadImage("Ohje3p");
452        Ohje3p.IgnoresCollisionResponse = true;
453        Ohje3p.IgnoresPhysicsLogics = true;
454        Add(Ohje3p);
455    }
456
457    void lisaaTaso(double x, double y, double leveys)
458    {
459        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 30);
460        taso.Color = Color.Green;
461        taso.X = x;
462        taso.Y = y;
463        taso.Image = LoadImage("Smile Jump(laatta)");
464        AddCollisionHandler(taso, TasonTormays);
465        Add(taso);
466    }
467
468    void lisaaPelaajat()
469    {
470        pelaaja1 = new PlatformCharacter(40, 40);
471        pelaaja1.Mass = 4.0;
472        pelaaja1.Shape = Shapes.Circle;
473        pelaaja1.Image = LoadImage("smile jump(keltainen pelaaja) (2)");
474        pelaaja1.X = 0;
475        pelaaja1.Y = Level.Bottom + 50;
476
477        pelaaja2 = new PlatformCharacter(40, 40);
478        pelaaja2.Mass = 4.0;
479        pelaaja2.Shape = Shapes.Circle;
480        pelaaja2.Image = LoadImage("smile jump (vihreä pelaaja) (2)");
481        pelaaja2.X = 50;
482        pelaaja2.Y = Level.Bottom + 50;
483
484        AddCollisionHandler(pelaaja1, KasittelePallonTormays);
485        AddCollisionHandler(pelaaja2, KasittelePallonTormays);
486
487        Add(pelaaja1);
488        Add(pelaaja2);
489    }
490
491    void lisaaPelaaja3()
492    {
493        pelaaja3 = new PlatformCharacter(40, 40);
494        pelaaja3.Mass = 4.0;
495        pelaaja3.Shape = Shapes.Circle;
496        pelaaja3.Image = LoadImage("smile jump(sininen pelaaja)");
497        pelaaja3.X = -50;
498        pelaaja3.Y = Level.Bottom + 50;
499
500        AddCollisionHandler(pelaaja3, KasittelePallonTormays);
501
502        Add(pelaaja3);
503    }
504
505    void lisaaPelaaja4()
506    {
507        pelaaja4 = new PlatformCharacter(40, 40);
508        pelaaja4.Mass = 4.0;
509        pelaaja4.Shape = Shapes.Circle;
510        pelaaja4.Image = LoadImage("smile jump(pinkki pelaaja)");
511        pelaaja4.X = 100;
512        pelaaja4.Y = Level.Bottom + 50;
513
514        AddCollisionHandler(pelaaja4, KasittelePallonTormays);
515
516        Add(pelaaja4);
517    }
518
519    void LisaaVihollinen(double x, double y)
520    {
521        PhysicsObject vihollinen = new PhysicsObject(60, 60);
522        vihollinen.Image = LoadImage("smile jump(vihollinen) (2)");
523        vihollinen.Tag = "vihollinen";
524        vihollinen.Shape = Shapes.Circle;
525        vihollinen.X = x;
526        vihollinen.Y = y;
527        vihollinen.IgnoresCollisionResponse = true;
528        vihollinen.IgnoresPhysicsLogics = true;
529        vihollinen.Velocity = new Vector(220.0, 0.0);
530        Add(vihollinen);
531
532        AddCollisionHandler(vihollinen, VihollisKaantyOR);
533        AddCollisionHandler(vihollinen, VihollisKaantyVR);
534    }
535
536    private void aikaLoppui(Timer sender)
537    {
538        if (Kaksipelaajaa == true)
539        {
540            Ohje2p.Destroy();
541        }
542        AddCollisionHandler(pelaaja1, Pelaaja1Osui);
543        AddCollisionHandler(pelaaja2, Pelaaja2Osui);
544        if (Kolmepelaajaa == true)
545        {
546            AddCollisionHandler(pelaaja1, Pelaaja1Osui);
547            AddCollisionHandler(pelaaja2, Pelaaja2Osui);
548            AddCollisionHandler(pelaaja3, Pelaaja3Osui);
549            Ohje3p.Destroy();
550        }
551        if (Neljapelaajaa == true)
552        {
553            AddCollisionHandler(pelaaja1, Pelaaja1Osui);
554            AddCollisionHandler(pelaaja2, Pelaaja2Osui);
555            AddCollisionHandler(pelaaja3, Pelaaja3Osui);
556            AddCollisionHandler(pelaaja4, Pelaaja4Osui);
557            Ohje3p.Destroy();
558        }
559    }
560    private void aikaLoppui2(Timer sender)
561    {
562            if (p1SaiVoiton == true)
563            {
564                p1voitti.Destroy();
565                p1SaiVoiton = false;
566                Alkukentta();
567            }
568            if (p2SaiVoiton == true)
569            {
570                p2voitti.Destroy();
571                p2SaiVoiton = false;
572                Alkukentta();
573            }
574            if (p3SaiVoiton == true)
575            {
576                p3voitti.Destroy();
577                p3SaiVoiton = false;
578                Alkukentta();
579            }
580            if (p4SaiVoiton == true)
581            {
582                p4voitti.Destroy();
583                p4SaiVoiton = false;
584                Alkukentta();
585            }
586    }
587   
588    void lisaaNappaimet()
589    {
590        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
591        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
592
593        if (Kaksipelaajaa == true)
594        {
595            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
596            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
597            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
598
599            Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
600            Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
601            Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
602        }
603
604        lisaaGamePadNappaimet(ControllerOne);
605    }
606
607    // TODO: kesken
608    //void KasitteleAse(PhysicsObject Ase, PhysicsObject pelaaja)
609    //{
610    //    if (pelaaja == pelaaja1)
611    //    {
612    //        pelaajan1ase = true;
613    //    }
614    //    else if (pelaaja == pelaaja2)
615    //    {
616    //        pelaajan2ase = true;
617    //   }
618    // }   
619
620    void lisaaGamePadNappaimet(GamePad controller)
621    {
622        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
623        if (Kaksipelaajaa == true)
624        {
625            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
626            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
627            ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
628
629            ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
630            ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
631            ControllerTwo.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja2, hyppyVoima);
632        }
633        if (Kolmepelaajaa == true)
634        {
635            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
636            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
637            ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
638
639            ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
640            ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
641            ControllerTwo.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja2, hyppyVoima);
642
643            ControllerThree.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja3, -nopeus);
644            ControllerThree.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja3, nopeus);
645            ControllerThree.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja3, hyppyVoima);
646        }
647
648        if (Neljapelaajaa == true)
649        {
650            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
651            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
652            ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
653
654            ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
655            ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
656            ControllerTwo.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja2, hyppyVoima);
657
658            ControllerThree.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja3, -nopeus);
659            ControllerThree.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja3, nopeus);
660            ControllerThree.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja3, hyppyVoima);
661
662            Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja4, -nopeus);
663            Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja4, nopeus);
664            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja4, hyppyVoima);
665        }
666    }
667
668    void liikuta(PlatformCharacter hahmo, double nopeus)
669    {
670        hahmo.Walk(nopeus);
671    }
672
673    void hyppaa(PlatformCharacter hahmo, double voima)
674    {
675        hahmo.Jump(voima);
676    }
677
678    /// <summary>
679    /// DownReuna tuhoaa pelaajat ja tasot, jotka ovat
680    /// ruudun alapuolella.
681    /// </summary>
682    void LisaaDownReuna()
683    {
684        DownReuna = new PhysicsObject(2000, 100);
685        DownReuna.X = 0;
686        DownReuna.Y = Level.Bottom + 50;
687        DownReuna.IgnoresCollisionResponse = true;
688        DownReuna.IgnoresGravity = true;
689        Add(DownReuna);
690    }
691
692    void Kolmenpelaajanpeli()
693    {
694        Kolmepelaajaa = true;
695        seuraavaKentta();
696    }
697
698    void Neljanpelaajanpeli()
699    {
700        Neljapelaajaa = true;
701        seuraavaKentta();
702    }
703
704    void Kahdenpelaajanpeli()
705    {
706        Kaksipelaajaa = true;
707        seuraavaKentta();
708    }
709
710    protected override void Update(Time time)
711    {
712        PlatformCharacter highest = pelaaja1;
713        if (pelaaja2.Y > highest.Y) highest = pelaaja2;
714        if (pelaaja3 != null && pelaaja3.Y > highest.Y) highest = pelaaja3;
715        if (pelaaja4 != null && pelaaja4.Y > highest.Y) highest = pelaaja4;
716
717        Camera.Follow(highest);
718        /*
719        PlatformCharacter eloOlio;
720        int elossa = 0;
721        if (!pelaaja1.IsDestroyed())
722        {
723            elossa++;
724            eloOlio = pelaaja1;
725        }
726        if (!pelaaja2.IsDestroyed()) elossa++;
727        {
728            elossa++;
729            eloOlio = pelaaja2;
730        }
731        if (pelaaja3 != null && !pelaaja3.IsDestroyed()) elossa++;
732        {
733            elossa++;
734            eloOlio = pelaaja3;
735        }
736        if (pelaaja4 != null && !pelaaja4.IsDestroyed()) elossa++;
737        {
738            elossa++;
739            eloOlio = pelaaja4;
740        }
741
742        if (elossa == 1)
743        {
744            seuraavaKentta();
745            ClearAll();
746            Kolmepelaajaa = false;
747            Kaksipelaajaa = false;
748            Neljapelaajaa = false;
749            if (eloOlio == pelaaja1) { voitto(1); }
750            if (eloOlio == pelaaja2) { voitto(2); }
751            if (eloOlio == pelaaja3) { voitto(3); }
752            if (eloOlio == pelaaja4) { voitto(4); }
753        }*/
754       
755        if (Kolmepelaajaa == true)
756        {
757
758            if (pelaaja3.IsDestroyed())
759            {
760                if (pelaaja2.IsDestroyed())
761                {
762                    pelaajan1pisteet.Value++;
763                    if (pelaajan1pisteet >= 7)
764                    {
765                        seuraavaKentta();
766                        ClearAll();
767                        Kolmepelaajaa = false;
768                        Kaksipelaajaa = false;
769                        p1SaiVoiton = true;
770                        pelaaja1voitti();
771                        aikaLaskuri2.Start(1);
772                    }
773                    else
774                    {
775                        seuraavaKentta();
776                    }
777                }
778                if (pelaaja1.IsDestroyed())
779                {
780                    pelaajan2pisteet.Value++;
781                    if (pelaajan2pisteet >= 7)
782                    {
783                        seuraavaKentta();
784                        ClearAll();
785                        Kolmepelaajaa = false;
786                        Kaksipelaajaa = false;
787                        p2SaiVoiton = true;
788                        pelaaja2voitti();
789                        aikaLaskuri2.Start(1);
790                    }
791                    else
792                    {
793                    seuraavaKentta();
794                    }
795                }
796            }
797            if (pelaaja1.IsDestroyed())
798            {
799                if (pelaaja2.IsDestroyed())
800                {
801                    pelaajan3pisteet.Value++;
802                    if (pelaajan3pisteet >= 7)
803                    {
804                        seuraavaKentta();
805                        ClearAll();
806                        Kolmepelaajaa = false;
807                        Kaksipelaajaa = false;
808                        p3SaiVoiton = true;
809                        pelaaja3voitti();
810                        aikaLaskuri2.Start(1);
811                    }
812                    else
813                    {
814                        seuraavaKentta();
815                    }
816                }
817            }
818        }
819        if (Neljapelaajaa == true)
820        {
821            if (pelaaja4.IsDestroyed())
822            {
823                if (pelaaja3.IsDestroyed())
824                {
825                    if (pelaaja2.IsDestroyed())
826                    {
827                        pelaajan1pisteet.Value++;
828                        if (pelaajan1pisteet >= 7)
829                        {
830                            seuraavaKentta();
831                            ClearAll();
832                            Kolmepelaajaa = false;
833                            Kaksipelaajaa = false;
834                            p1SaiVoiton = true;
835                            pelaaja1voitti();
836                            aikaLaskuri2.Start(1);
837                        }
838                        else
839                        {
840                            seuraavaKentta();
841                        }
842                    }
843                    if (pelaaja1.IsDestroyed())
844                    {
845                        pelaajan2pisteet.Value++;
846                        if (pelaajan2pisteet >= 7)
847                        {
848                            seuraavaKentta();
849                            ClearAll();
850                            Kolmepelaajaa = false;
851                            Kaksipelaajaa = false;
852                            p2SaiVoiton = true;
853                            pelaaja2voitti();
854                            aikaLaskuri2.Start(1);
855                        }
856                        else
857                        {
858                            seuraavaKentta();
859                        }
860                    }
861                }
862            }
863            if (pelaaja1.IsDestroyed())
864            {
865                if (pelaaja2.IsDestroyed())
866                {
867                    if (pelaaja3.IsDestroyed())
868                    {
869                        pelaajan4pisteet.Value++;
870                        if (pelaajan4pisteet >= 7)
871                        {
872                            seuraavaKentta();
873                            ClearAll();
874                            Kolmepelaajaa = false;
875                            Kaksipelaajaa = false;
876                            p4SaiVoiton = true;
877                            pelaaja4voitti();
878                            aikaLaskuri2.Start(1);
879                        }
880                        else
881                        {
882                            seuraavaKentta();
883                        }
884                    }
885                    if (pelaaja4.IsDestroyed())
886                    {
887                        pelaajan3pisteet.Value++;
888                        if (pelaajan3pisteet >= 7)
889                        {
890                            seuraavaKentta();
891                            ClearAll();
892                            Kolmepelaajaa = false;
893                            Kaksipelaajaa = false;
894                            p3SaiVoiton = true;
895                            pelaaja3voitti();
896                            aikaLaskuri2.Start(1);
897                        }
898                        else
899                        {
900                            seuraavaKentta();
901                        }
902                    }
903                }
904            }
905        }
906       
907        if (Kaksipelaajaa == false)
908        {
909            if (Kolmepelaajaa == false)
910            {
911                if (Neljapelaajaa == false)
912                {
913                    if (pelaaja1.Y > pelaaja2.Y)
914                    {
915                        Camera.Follow(pelaaja1);
916                    }
917                    else
918                    {
919                        Camera.Follow(pelaaja2);
920                    }
921                }
922            }
923        }
924       
925        if (Kaksipelaajaa == true)
926        {
927                    if (pelaaja2.IsDestroyed())
928                    {
929                        pelaajan1pisteet.Value++;
930                        if (pelaajan1pisteet >= 7)
931                        {
932                            seuraavaKentta();
933                            ClearAll();
934                            Kolmepelaajaa = false;
935                            Kaksipelaajaa = false;
936                            p1SaiVoiton = true;
937                            pelaaja1voitti();
938                            aikaLaskuri2.Start(1);
939                        }
940                        else
941                        {
942                            seuraavaKentta();
943                        }
944                    }
945
946                    if (pelaaja1.IsDestroyed())
947                    {
948
949                        pelaajan2pisteet.Value++;
950                        if (pelaajan2pisteet >= 7)
951                        {
952                            seuraavaKentta();
953                            ClearAll();
954                            Kolmepelaajaa = false;
955                            Kaksipelaajaa = false;
956                            p2SaiVoiton = true;
957                            pelaaja2voitti();
958                            aikaLaskuri2.Start(1);
959                        }
960                        else
961                        {
962                            seuraavaKentta();
963                        }
964                    }
965                    if (pelaaja1.Y > pelaaja2.Y)
966                    {
967                        Camera.Follow(pelaaja1);
968                    }
969                    else
970                    {
971                        Camera.Follow(pelaaja2);
972                    }
973        }
974       
975        // Tämä pitää huolen siitä, että kun kamera menee ylöspäin, niin kameran
976        // alapuolella olevat asiat tuhoutuvat.
977        DownReuna.Y = Camera.Position.Y - 400;
978        base.Update(time);
979    }
980}
Note: See TracBrowser for help on using the repository browser.