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

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