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

Revision 1021, 33.4 KB checked in by vilvaini, 11 years ago (diff)

Pieniä muutoksia ja koodin lyhentelemistä.

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        MediaPlayer.Play("E Api");
63    }
64
65    void Alkukentta()
66    {
67        ClearAll();
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    }
736
737    void Neljanpelaajanpeli()
738    {
739        Neljapelaajaa = true;
740        seuraavaKentta();
741    }
742
743    void Kahdenpelaajanpeli()
744    {
745        Kaksipelaajaa = true;
746        seuraavaKentta();
747    }
748
749    protected override void Update(Time time)
750    {
751        PlatformCharacter highest = pelaaja1;
752        if (pelaaja2.Y > highest.Y) highest = pelaaja2;
753        if (pelaaja3 != null && pelaaja3.Y > highest.Y) highest = pelaaja3;
754        if (pelaaja4 != null && pelaaja4.Y > highest.Y) highest = pelaaja4;
755
756        Camera.Follow(highest);
757        /*
758        PlatformCharacter eloOlio;
759        int elossa = 0;
760        if (!pelaaja1.IsDestroyed())
761        {
762            elossa++;
763            eloOlio = pelaaja1;
764        }
765        if (!pelaaja2.IsDestroyed()) elossa++;
766        {
767            elossa++;
768            eloOlio = pelaaja2;
769        }
770        if (pelaaja3 != null && !pelaaja3.IsDestroyed()) elossa++;
771        {
772            elossa++;
773            eloOlio = pelaaja3;
774        }
775        if (pelaaja4 != null && !pelaaja4.IsDestroyed()) elossa++;
776        {
777            elossa++;
778            eloOlio = pelaaja4;
779        }
780
781        if (elossa == 1)
782        {
783            seuraavaKentta();
784            ClearAll();
785            Kolmepelaajaa = false;
786            Kaksipelaajaa = false;
787            Neljapelaajaa = false;
788            if (eloOlio == pelaaja1) { voitto(1); }
789            if (eloOlio == pelaaja2) { voitto(2); }
790            if (eloOlio == pelaaja3) { voitto(3); }
791            if (eloOlio == pelaaja4) { voitto(4); }
792        }*/
793       
794        if (Kolmepelaajaa == true)
795        {
796
797            if (pelaaja3.IsDestroyed())
798            {
799                if (pelaaja2.IsDestroyed())
800                {
801                    pelaajan1pisteet.Value++;
802                    if (pelaajan1pisteet >= 7)
803                    {
804                        seuraavaKentta();
805                        ClearAll();
806                        Kolmepelaajaa = false;
807                        Kaksipelaajaa = false;
808                        Neljapelaajaa = false;
809                        p1SaiVoiton = true;
810                        pelaaja1voitti();
811                        aikaLaskuri2.Start();
812                    }
813                    else
814                    {
815                        seuraavaKentta();
816                    }
817                }
818                if (pelaaja1.IsDestroyed())
819                {
820                    pelaajan2pisteet.Value++;
821                    if (pelaajan2pisteet >= 7)
822                    {
823                        seuraavaKentta();
824                        ClearAll();
825                        Kolmepelaajaa = false;
826                        Kaksipelaajaa = false;
827                        Neljapelaajaa = false;
828                        p2SaiVoiton = true;
829                        pelaaja2voitti();
830                        aikaLaskuri2.Start();
831                    }
832                    else
833                    {
834                    seuraavaKentta();
835                    }
836                }
837            }
838            if (pelaaja1.IsDestroyed())
839            {
840                if (pelaaja2.IsDestroyed())
841                {
842                    pelaajan3pisteet.Value++;
843                    if (pelaajan3pisteet >= 7)
844                    {
845                        seuraavaKentta();
846                        ClearAll();
847                        Kolmepelaajaa = false;
848                        Kaksipelaajaa = false;
849                        Neljapelaajaa = false;
850                        p3SaiVoiton = true;
851                        pelaaja3voitti();
852                        aikaLaskuri2.Start();
853                    }
854                    else
855                    {
856                        seuraavaKentta();
857                    }
858                }
859            }
860        }
861        if (Neljapelaajaa == true)
862        {
863            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
864            {
865                        pelaajan4pisteet.Value++;
866                        if (pelaajan4pisteet >= 7)
867                        {
868                            seuraavaKentta();
869                            ClearAll();
870                            Kolmepelaajaa = false;
871                            Kaksipelaajaa = false;
872                            Neljapelaajaa = false;
873                            p4SaiVoiton = true;
874                            pelaaja4voitti();
875                            aikaLaskuri2.Start();
876                        }
877                        else
878                        {
879                            seuraavaKentta();
880                        }
881                    }
882            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja4.IsDestroyed())
883            {
884                pelaajan3pisteet.Value++;
885                if (pelaajan3pisteet >= 7)
886                {
887                    seuraavaKentta();
888                    ClearAll();
889                    Kolmepelaajaa = false;
890                    Kaksipelaajaa = false;
891                    Neljapelaajaa = false;
892                    p3SaiVoiton = true;
893                    pelaaja3voitti();
894                    aikaLaskuri2.Start();
895                }
896                else
897                {
898                    seuraavaKentta();
899                }
900            }
901            if (pelaaja1.IsDestroyed() && pelaaja4.IsDestroyed() && pelaaja3.IsDestroyed())
902            {
903                pelaajan2pisteet.Value++;
904                if (pelaajan2pisteet >= 7)
905                {
906                    seuraavaKentta();
907                    ClearAll();
908                    Kolmepelaajaa = false;
909                    Kaksipelaajaa = false;
910                    Neljapelaajaa = false;
911                    p2SaiVoiton = true;
912                    pelaaja2voitti();
913                    aikaLaskuri2.Start();
914                }
915                else
916                {
917                    seuraavaKentta();
918                }
919            }
920            if (pelaaja4.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
921            {
922                pelaajan1pisteet.Value++;
923                if (pelaajan1pisteet >= 7)
924                {
925                    seuraavaKentta();
926                    ClearAll();
927                    Kolmepelaajaa = false;
928                    Kaksipelaajaa = false;
929                    Neljapelaajaa = false;
930                    p1SaiVoiton = true;
931                    pelaaja1voitti();
932                    aikaLaskuri2.Start();
933                }
934                else
935                {
936                    seuraavaKentta();
937                }
938            }
939        }
940
941        if (Kaksipelaajaa == false && Kolmepelaajaa == false && Neljapelaajaa == false)
942        {
943                    if (pelaaja1.Y > pelaaja2.Y)
944                    {
945                        Camera.Follow(pelaaja1);
946                    }
947                    else
948                    {
949                        Camera.Follow(pelaaja2);
950                    }
951        }
952       
953        if (Kaksipelaajaa == true)
954        {
955                    if (pelaaja2.IsDestroyed())
956                    {
957                        pelaajan1pisteet.Value++;
958                        if (pelaajan1pisteet >= 7)
959                        {
960                            seuraavaKentta();
961                            ClearAll();
962                            Kolmepelaajaa = false;
963                            Kaksipelaajaa = false;
964                            Neljapelaajaa = false;
965                            p1SaiVoiton = true;
966                            pelaaja1voitti();
967                            aikaLaskuri2.Start();
968                        }
969                        else
970                        {
971                            seuraavaKentta();
972                        }
973                    }
974
975                    if (pelaaja1.IsDestroyed())
976                    {
977
978                        pelaajan2pisteet.Value++;
979                        if (pelaajan2pisteet >= 7)
980                        {
981                            seuraavaKentta();
982                            ClearAll();
983                            Kolmepelaajaa = false;
984                            Kaksipelaajaa = false;
985                            Neljapelaajaa = false;
986                            p2SaiVoiton = true;
987                            pelaaja2voitti();
988                            aikaLaskuri2.Start();
989                        }
990                        else
991                        {
992                            seuraavaKentta();
993                        }
994                    }
995                    /*if (pelaaja1.Y > pelaaja2.Y)
996                    {
997                        Camera.Follow(pelaaja1);
998                    }
999                    else
1000                    {
1001                        Camera.Follow(pelaaja2);
1002                    }
1003                     */ 
1004        }
1005       
1006        // Tämä pitää huolen siitä, että kun kamera menee ylöspäin, niin kameran
1007        // alapuolella olevat asiat tuhoutuvat.
1008        DownReuna.Y = Camera.Position.Y - 400;
1009        base.Update(time);
1010    }
1011}
Note: See TracBrowser for help on using the repository browser.