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

Revision 1259, 66.0 KB checked in by vilvaini, 10 years ago (diff)

Koodin optimointia, bugikorjauksia, ja tasojen ilmestymisen järkevöittämistä.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6using Jypeli.Widgets;
7using Jypeli.Effects;
8
9//Tekijät: Ville Vainio ja Elias Iilomo
10
11public class Tasohyppely : PhysicsGame
12{
13
14    GameObject Pelaajamaaranappi = new GameObject(600, 100);
15    GameObject Ohjeetnappi = new GameObject(600, 100);
16    GameObject Pisteetnappi = new GameObject(600, 100);
17    GameObject Poistunappi = new GameObject(600, 100);
18
19    const double nopeus = 5000;
20    const double hyppyVoima = 4000;
21
22    const double Kuplaaika = 5;
23
24    const double KPPisteraja = 7;
25
26    double tasokorkeus = 0;
27    double vihollistiheytys = 1;
28    double tasoleveys = 150;
29    double viholliskorkeus = 800;
30    double pelaajamaara = 0;
31    double korkeus;
32    double korkein;
33
34    bool YP = false;
35    bool PeliKäynnissä = false;
36    bool p1SaiVoiton = false;
37    bool p2SaiVoiton = false;
38    bool p3SaiVoiton = false;
39    bool p4SaiVoiton = false;
40    bool p1elamamenetys = false;
41    bool p2elamamenetys = false;
42    bool p3elamamenetys = false;
43    bool p4elamamenetys = false;
44    bool p1OnKuplassa = false;
45    bool p2OnKuplassa = false;
46    bool p3OnKuplassa = false;
47    bool p4OnKuplassa = false;
48
49    IntMeter pelaajan1pisteet;
50    IntMeter pelaajan2pisteet;
51    IntMeter pelaajan3pisteet;
52    IntMeter pelaajan4pisteet;
53    IntMeter pelaajan1elamat;
54    IntMeter pelaajan2elamat;
55    IntMeter pelaajan3elamat;
56    IntMeter pelaajan4elamat;
57
58    PlatformCharacter pelaaja1;
59    PlatformCharacter pelaaja2;
60    PlatformCharacter pelaaja3;
61    PlatformCharacter pelaaja4;
62
63    PhysicsObject P1kupla;
64    PhysicsObject P2kupla;
65    PhysicsObject P3kupla;
66    PhysicsObject P4kupla;
67    PhysicsObject voittaja;
68    PhysicsObject Alku;
69    PhysicsObject PMäärä;
70    PhysicsObject Tappio;
71    PhysicsObject Ohje2p;
72    PhysicsObject Ohje3p;
73    PhysicsObject vasenReuna;
74    PhysicsObject alaReuna;
75    PhysicsObject oikeaReuna;
76    PhysicsObject DownReuna;
77
78    Timer aikaLaskuri3;
79    Timer aikaLaskuri2;
80    Timer aikaLaskuri;
81
82    Timer KuplaSyntymä1;
83    Timer KuplaSyntymä2;
84    Timer KuplaSyntymä3;
85    Timer KuplaSyntymä4;
86
87    TextDisplay mittari;
88
89    HighScoreList korkeustaulukko;
90
91    Image RikkoutuvanLaatanPartikkelikuva;
92
93    Vector aloituspaikka;
94
95    protected override void Begin()
96    {
97        //MediaPlayer.Play("Menu");
98        MediaPlayer.IsRepeating = true;
99        TeeKorkeustaulukko();
100        //IsFullScreen = true;
101        Level.Width = 1024;
102        Level.Height = 30000;
103        Teelaskurit();
104        Camera.StayInLevel = true;
105        Alkukentta();
106    }
107
108    /*void TeeEfektit(double x, double y, int partikkelit)
109    {
110        RikkoutuvanLaatanPartikkelikuva = LoadImage("smile jump(keltainen pelaaja)");
111        ExplosionSystem Räks = new ExplosionSystem(RikkoutuvanLaatanPartikkelikuva, 20);
112        Add(Räks);
113        Räks.AddEffect(x, y, partikkelit);
114    }
115     */
116
117    private void TeeKorkeustaulukko()
118    {
119        korkeustaulukko = HighScoreList.LoadOrCreate("jeejee.dat", 20);
120        korkeustaulukko.ScreenList.ItemColor = Color.Black;
121        korkeustaulukko.ScreenList.BackGroundColor = Color.TransparentWhite;
122        korkeustaulukko.ScreenList.X = -280;
123        korkeustaulukko.ScreenList.Y = 40;
124        korkeustaulukko.ScreenList.HighlightColor = Color.TransparentBlack;
125        korkeustaulukko.ScreenInput.QueryText.TextColor = Color.Blue;
126        korkeustaulukko.CongratulationText = "Onnittelut! Pääsitte {1} pikseliä korkealle! Saitte {0}. sijan parhaat pisteet-taulukossa. Syötä nimesi:";
127    }
128
129    private void Teelaskurit()
130    {
131        pelaajan1pisteet = new IntMeter(0);
132        pelaajan2pisteet = new IntMeter(0);
133        pelaajan3pisteet = new IntMeter(0);
134        pelaajan4pisteet = new IntMeter(0);
135        pelaajan1elamat = new IntMeter(5);
136        pelaajan2elamat = new IntMeter(5);
137        pelaajan3elamat = new IntMeter(5);
138        pelaajan4elamat = new IntMeter(5);
139    }
140
141    void Alkukentta()
142    {
143        PeliKäynnissä = false;
144        ClearAll();
145        YP = false;
146
147        Mouse.IsCursorVisible = true;
148        AlustaLaskurit();
149        Alkunappaimet();
150        lisaaPelaaja1(0, Level.Bottom + 50);
151        lisaaPelaaja2(100, Level.Bottom + 50);
152        LisaaDownReuna();
153        LisaaEitoimiruutu();
154        alaReuna = Level.CreateBottomBorder();
155        LisaaAloitusruutu();
156        pelaajamaara = 0;
157        TeePäävalikkoNapit();
158    }
159
160    private void TeePäävalikkoNapit()
161    {
162        Pelaajamaaranappi = new GameObject(400, 70);
163        Pisteetnappi = new GameObject(400, 70);
164        Ohjeetnappi = new GameObject(400, 70);
165        Poistunappi = new GameObject(400, 70);
166
167        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Pressed, Pelaajamaarakentta, "");
168        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (4));
169        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Pressed, Parhaatpisteetkentta, "");
170        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (5));
171        Mouse.ListenOn(Ohjeetnappi, MouseButton.Left, ButtonState.Pressed, Ohjevalikko, "");
172        Mouse.ListenOn(Ohjeetnappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (6));
173        Mouse.ListenOn(Poistunappi, MouseButton.Left, ButtonState.Pressed, Exit, "");
174        Mouse.ListenOn(Poistunappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (7));
175
176        Pelaajamaaranappi.Image = LoadImage("NappiAloitapeli");
177        Pisteetnappi.Image = LoadImage("NappiPisteet");
178        Ohjeetnappi.Image = LoadImage("NappiOhjeet");
179        Poistunappi.Image = LoadImage("NappiPoistu");
180
181        Pelaajamaaranappi.X = 0;
182        Pelaajamaaranappi.Y = Level.Bottom + 330;
183        Pisteetnappi.X = 0;
184        Pisteetnappi.Y = Level.Bottom + 240;
185        Ohjeetnappi.X = 0;
186        Ohjeetnappi.Y = Level.Bottom + 150;
187        Poistunappi.X = 0;
188        Poistunappi.Y = Level.Bottom + 60;
189
190        Add(Pelaajamaaranappi);
191        Add(Pisteetnappi);
192        Add(Ohjeetnappi);
193        Add(Poistunappi);
194
195    }
196
197    private void Nappipunainen(int nappi)
198    {
199        //Pelaajamääränapit ja ohjenapit
200        if (nappi == 1)
201        {
202            Pelaajamaaranappi.Image = LoadImage("NappiKaksinpeli2");
203            Pisteetnappi.Image = LoadImage("NappiKolminpeli");
204            Ohjeetnappi.Image = LoadImage("NappiNelinpeli");
205            Poistunappi.Image = LoadImage("NappiPäävalikkoon");
206        }
207        if (nappi == 2)
208        {
209            Pisteetnappi.Image = LoadImage("NappiKolminpeli2");
210            Pelaajamaaranappi.Image = LoadImage("NappiKaksinpeli");
211            Ohjeetnappi.Image = LoadImage("NappiNelinpeli");
212            Poistunappi.Image = LoadImage("NappiPäävalikkoon");
213        }
214        if (nappi == 3)
215        {
216            Ohjeetnappi.Image = LoadImage("NappiNelinpeli2");
217            Pelaajamaaranappi.Image = LoadImage("NappiKaksinpeli");
218            Pisteetnappi.Image = LoadImage("NappiKolminpeli");
219            Poistunappi.Image = LoadImage("NappiPäävalikkoon");
220        }
221        //Päävalikkonapit
222        if (nappi == 4)
223        {
224            Ohjeetnappi.Image = LoadImage("NappiOhjeet");
225            Pisteetnappi.Image = LoadImage("NappiPisteet");
226            Pelaajamaaranappi.Image = LoadImage("NappiAloitapeli2");
227            Poistunappi.Image = LoadImage("NappiPoistu");
228        }
229        if (nappi == 5)
230        {
231            Pelaajamaaranappi.Image = LoadImage("NappiAloitapeli");
232            Ohjeetnappi.Image = LoadImage("NappiOhjeet");
233            Pisteetnappi.Image = LoadImage("NappiPisteet2");
234            Poistunappi.Image = LoadImage("NappiPoistu");
235        }
236        if (nappi == 6)
237        {
238            Pelaajamaaranappi.Image = LoadImage("NappiAloitapeli");
239            Pisteetnappi.Image = LoadImage("NappiPisteet");
240            Ohjeetnappi.Image = LoadImage("NappiOhjeet2");
241            Poistunappi.Image = LoadImage("NappiPoistu");
242        }
243        if (nappi == 7)
244        {
245            Pelaajamaaranappi.Image = LoadImage("NappiAloitapeli");
246            Pisteetnappi.Image = LoadImage("NappiPisteet");
247            Ohjeetnappi.Image = LoadImage("NappiOhjeet");
248            Poistunappi.Image = LoadImage("NappiPoistu2");
249        }
250        //Pelimodinapit
251        if (nappi == 8)
252        {
253            Pelaajamaaranappi.Image = LoadImage("NappiKP");
254            Pisteetnappi.Image = LoadImage("NappiYP");
255            Poistunappi.Image = LoadImage("NappiPäävalikkoon");
256        }
257        if (nappi == 9)
258        {
259            Pelaajamaaranappi.Image = LoadImage("NappiKP2");
260            Pisteetnappi.Image = LoadImage("NappiYP2");
261            Poistunappi.Image = LoadImage("NappiPäävalikkoon");
262        }
263        //if (nappi == 10)
264        //{
265        //    Poistunappi.Image = LoadImage("NappiPäävalikkoon2");
266        //}
267
268        //Ohjenapit = pelaajamääränapit
269
270        //Paluunappi
271        if (nappi == 14)
272        {
273            Poistunappi.Image = LoadImage("NappiPäävalikkoon2");
274            Pelaajamaaranappi.Image = LoadImage("NappiKaksinpeli");
275            Pisteetnappi.Image = LoadImage("NappiKolminpeli");
276            Ohjeetnappi.Image = LoadImage("NappiNelinpeli");
277        }
278        if (nappi == 15)
279        {
280            Poistunappi.Image = LoadImage("NappiPäävalikkoon2");
281            Pelaajamaaranappi.Image = LoadImage("NappiKP2");
282            Pisteetnappi.Image = LoadImage("NappiYP");
283        }
284    }
285
286    private void TeePelimodiNapit()
287    {
288        Pelaajamaaranappi = new GameObject(400, 70);
289        Pisteetnappi = new GameObject(400, 70);
290        //Poistunappi = new GameObject(400, 70);
291
292        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Pressed, AloitaKP, "");
293        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (8));
294        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Pressed, AloitaYP, "");
295        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (9));
296        //Mouse.ListenOn(Poistunappi, MouseButton.Left, ButtonState.Pressed, Alkukentta, "");
297        //Mouse.ListenOn(Poistunappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (10));
298
299        Pelaajamaaranappi.Image = LoadImage("NappiKP2");
300        Pisteetnappi.Image = LoadImage("NappiYP");
301        //Poistunappi.Image = LoadImage("NappiPäävalikkoon");
302
303        Pelaajamaaranappi.X = 0;
304        Pelaajamaaranappi.Y = Level.Bottom + 330;
305        Pisteetnappi.X = 0;
306        Pisteetnappi.Y = Level.Bottom + 240;
307        //Poistunappi.X = 0;
308        //Poistunappi.Y = Level.Bottom + 60;
309
310        Add(Pelaajamaaranappi);
311        Add(Pisteetnappi);
312        //Add(Poistunappi);
313        TeePaluuNappi(0, Level.Bottom + 60, 400, 70, 2);
314    }
315
316    private void TeePelaajamääräNapit()
317    {
318        Pelaajamaaranappi = new GameObject(400, 70);
319        Pisteetnappi = new GameObject(400, 70);
320        Ohjeetnappi = new GameObject(400, 70);
321
322        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Pressed, Kahdenpelaajanpeli, "");
323        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (1));
324        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Pressed, Kolmenpelaajanpeli, "");
325        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (2));
326        Mouse.ListenOn(Ohjeetnappi, MouseButton.Left, ButtonState.Pressed, Neljanpelaajanpeli, "");
327        Mouse.ListenOn(Ohjeetnappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (3));
328
329        Pelaajamaaranappi.Image = LoadImage("NappiKaksinpeli");
330        Pisteetnappi.Image = LoadImage("NappiKolminpeli");
331        Ohjeetnappi.Image = LoadImage("NappiNelinpeli");
332
333        Pelaajamaaranappi.X = 0;
334        Pelaajamaaranappi.Y = Level.Bottom + 360;
335        Pisteetnappi.X = 0;
336        Pisteetnappi.Y = Level.Bottom + 270;
337        Ohjeetnappi.X = 0;
338        Ohjeetnappi.Y = Level.Bottom + 180;
339
340        Add(Pelaajamaaranappi);
341        Add(Pisteetnappi);
342        Add(Ohjeetnappi);
343        TeePaluuNappi(0, Level.Bottom + 50, 400, 70, 1);
344    }
345
346    private void TeeOhjeNapit()
347    {
348        Pelaajamaaranappi = new GameObject(400, 70);
349        Pisteetnappi = new GameObject(400, 70);
350        Ohjeetnappi = new GameObject(400, 70);
351
352        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Pressed, ohjevalikko2p, "");
353        Mouse.ListenOn(Pelaajamaaranappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (1));
354        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Pressed, ohjevalikko3p, "");
355        Mouse.ListenOn(Pisteetnappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (2));
356        Mouse.ListenOn(Ohjeetnappi, MouseButton.Left, ButtonState.Pressed, ohjevalikko4p, "");
357        Mouse.ListenOn(Ohjeetnappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (3));
358
359        Pelaajamaaranappi.Image = LoadImage("NappiKaksinpeli");
360        Pisteetnappi.Image = LoadImage("NappiKolminpeli");
361        Ohjeetnappi.Image = LoadImage("NappiNelinpeli");
362
363        Pelaajamaaranappi.X = 0;
364        Pelaajamaaranappi.Y = Level.Bottom + 330;
365        Pisteetnappi.X = 0;
366        Pisteetnappi.Y = Level.Bottom + 240;
367        Ohjeetnappi.X = 0;
368        Ohjeetnappi.Y = Level.Bottom + 150;
369
370        Add(Pelaajamaaranappi);
371        Add(Pisteetnappi);
372        Add(Ohjeetnappi);
373        TeePaluuNappi(0, Level.Bottom + 60, 400, 70, 1);
374
375    }
376
377    private void TeePaluuNappi(double x, double y, double leveys, double korkeus, double ruutu)
378    {
379        Poistunappi = new GameObject(leveys, korkeus);
380
381        Mouse.ListenOn(Poistunappi, MouseButton.Left, ButtonState.Pressed, Alkukentta, "");
382        if (ruutu == 1)
383        {
384            Mouse.ListenOn(Poistunappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (14));
385        }
386        if (ruutu == 2)
387        {
388            Mouse.ListenOn(Poistunappi, MouseButton.Left, ButtonState.Up, Nappipunainen, "", (15));
389        }
390
391        Poistunappi.Image = LoadImage("NappiPäävalikkoon");
392
393        Poistunappi.X = x;
394        Poistunappi.Y = y;
395
396        Add(Poistunappi);
397
398    }
399
400    void AloitaYP()
401    {
402        if (pelaajamaara == 2)
403        {
404            KahdenpelaajanYP();
405        }
406        if (pelaajamaara == 3)
407        {
408            KolmenpelaajanYP();
409        }
410        if (pelaajamaara == 4)
411        {
412            NeljanpelaajanYP();
413        }
414        PeliKäynnissä = true;
415    }
416
417    void AloitaKP()
418    {
419        if (pelaajamaara == 2)
420        {
421            KahdenpelaajanKP();
422        }
423        if (pelaajamaara == 3)
424        {
425            KolmenpelaajanKP();
426        }
427        if (pelaajamaara == 4)
428        {
429            NeljanpelaajanKP();
430        }
431        PeliKäynnissä = true;
432    }
433
434    void Pelimodikentta()
435    {
436        ClearAll();
437        LisaaEitoimiruutu();
438        TeePelimodivalikko();
439        TeePelimodiNapit();
440    }
441
442    void Ohjevalikko()
443    {
444        ClearAll();
445        LisaaEitoimiruutu();
446        TeeOhjevalikko();
447        TeeOhjeNapit();
448    }
449
450    void Pelaajamaarakentta()
451    {
452        ClearAll();
453        LisaaEitoimiruutu();
454        TeePelaajaMäärä();
455        TeePelaajamääräNapit();
456    }
457
458    void Parhaatpisteetkentta()
459    {
460        PeliKäynnissä = false;
461        ClearAll();
462        Tappionappaimet();
463        TeeTappiovalikko();
464        pelaajamaara = 0;
465        korkeustaulukko.Show((int)korkeus);
466        TeePaluuNappi(6, Level.Bottom + 31, 300, 50, 1);
467        //MediaPlayer.Stop();
468    }
469
470    void Tappionappaimet()
471    {
472        Keyboard.Listen(Key.P, ButtonState.Pressed, Alkukentta, "");
473    }
474
475    private void AlustaLaskurit()
476    {
477        pelaajan1pisteet.Reset();
478        pelaajan2pisteet.Reset();
479        pelaajan3pisteet.Reset();
480        pelaajan4pisteet.Reset();
481
482        pelaajan1elamat.Reset();
483        pelaajan2elamat.Reset();
484        pelaajan3elamat.Reset();
485        pelaajan4elamat.Reset();
486    }
487
488    private void Alkunappaimet()
489    {
490        Keyboard.Listen(Key.D2, ButtonState.Pressed, Kahdenpelaajanpeli, "");
491        Keyboard.Listen(Key.D3, ButtonState.Pressed, Kolmenpelaajanpeli, "");
492        Keyboard.Listen(Key.D4, ButtonState.Pressed, Neljanpelaajanpeli, "");
493        Keyboard.Listen(Key.D5, ButtonState.Pressed, korkeustaulukko.Show, "");
494        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
495    }
496
497    private void Pelimodinappaimet()
498    {
499        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
500        if (pelaajamaara == 2)
501        {
502            Keyboard.Listen(Key.D1, ButtonState.Pressed, KahdenpelaajanKP, "");
503            Keyboard.Listen(Key.D2, ButtonState.Pressed, KahdenpelaajanYP, "");
504            Keyboard.Listen(Key.H, ButtonState.Pressed, ohjevalikko2p, "");
505        }
506        if (pelaajamaara == 3)
507        {
508            Keyboard.Listen(Key.D1, ButtonState.Pressed, KolmenpelaajanKP, "");
509            Keyboard.Listen(Key.D2, ButtonState.Pressed, KolmenpelaajanYP, "");
510            Keyboard.Listen(Key.H, ButtonState.Pressed, ohjevalikko3p, "");
511        }
512        if (pelaajamaara == 4)
513        {
514            Keyboard.Listen(Key.D1, ButtonState.Pressed, NeljanpelaajanKP, "");
515            Keyboard.Listen(Key.D2, ButtonState.Pressed, NeljanpelaajanYP, "");
516            Keyboard.Listen(Key.H, ButtonState.Pressed, ohjevalikko4p, "");
517        }
518    }
519
520    void seuraavaKentta()
521    {
522        ClearAll();
523
524        if (pelaajamaara == 3)
525        {
526            lisaaPelaaja3(-100, Level.Bottom + 50);
527        }
528
529        if (pelaajamaara == 4)
530        {
531            lisaaPelaaja3(-100, Level.Bottom + 50);
532            lisaaPelaaja4(200, Level.Bottom + 50);
533        }
534        TeeReunat();
535        if (YP == false) TeePistenaytot();
536
537        Gravity = new Vector(0, -600);
538
539        luoKentta();
540        lisaaNappaimetp1();
541        lisaaNappaimetp2();
542        if (pelaajamaara == 3)
543        {
544            lisaaNappaimetp3();
545        }
546        if (pelaajamaara == 4)
547        {
548            lisaaNappaimetp3();
549            lisaaNappaimetp4();
550        }
551        if (YP == true)
552        {
553            Timer korkeusAjastin = new Timer();
554            korkeusAjastin.Interval = 0.1;
555            korkeusAjastin.Trigger += NaytaKorkeus;
556            Add(korkeusAjastin);
557            korkeusAjastin.Start();
558
559            TeeElamanaytot();
560            lisaaYPNappaimet();
561            p1OnKuplassa = false;
562            p2OnKuplassa = false;
563            p3OnKuplassa = false;
564            p4OnKuplassa = false;
565        }
566    }
567
568    private void lisaaYPNappaimet()
569    {
570        Keyboard.Listen(Key.Down, ButtonState.Pressed, Pelaaja1kupla, "");
571        Keyboard.Listen(Key.S, ButtonState.Pressed, Pelaaja2kupla, "");
572        if (pelaajamaara == 3) Keyboard.Listen(Key.K, ButtonState.Pressed, Pelaaja3kupla, "");
573        if (pelaajamaara == 4) Keyboard.Listen(Key.K, ButtonState.Pressed, Pelaaja3kupla, "");
574    }
575
576    void lisaaPelaaja1kupla(double x, double y)
577    {
578        P1kupla = new PhysicsObject(55, 55);
579        P1kupla.Image = LoadImage("P1bubble");
580        P1kupla.Shape = Shapes.Circle;
581        P1kupla.X = x;
582        P1kupla.Y = y;
583        P1kupla.IgnoresCollisionResponse = true;
584        P1kupla.IgnoresPhysicsLogics = true;
585        AddCollisionHandler(P1kupla, KasitteleKuplan1Tormays);
586
587        Add(P1kupla);
588    }
589
590    void lisaaPelaaja2kupla(double x, double y)
591    {
592        P2kupla = new PhysicsObject(55, 55);
593        P2kupla.Image = LoadImage("P2bubble");
594        P2kupla.Shape = Shapes.Circle;
595        P2kupla.X = x;
596        P2kupla.Y = y;
597        P2kupla.IgnoresCollisionResponse = true;
598        P2kupla.IgnoresPhysicsLogics = true;
599        AddCollisionHandler(P2kupla, KasitteleKuplan2Tormays);
600
601        Add(P2kupla);
602    }
603
604    void lisaaPelaaja3kupla(double x, double y)
605    {
606        P3kupla = new PhysicsObject(55, 55);
607        P3kupla.Image = LoadImage("P3bubble");
608        P3kupla.Shape = Shapes.Circle;
609        P3kupla.X = x;
610        P3kupla.Y = y;
611        P3kupla.IgnoresCollisionResponse = true;
612        P3kupla.IgnoresPhysicsLogics = true;
613        AddCollisionHandler(P3kupla, KasitteleKuplan3Tormays);
614
615        Add(P3kupla);
616    }
617
618    void lisaaPelaaja4kupla(double x, double y)
619    {
620        P4kupla = new PhysicsObject(55, 55);
621        P4kupla.Image = LoadImage("P4bubble");
622        P4kupla.Shape = Shapes.Circle;
623        P4kupla.X = x;
624        P4kupla.Y = y;
625        P4kupla.IgnoresCollisionResponse = true;
626        P4kupla.IgnoresPhysicsLogics = true;
627        AddCollisionHandler(P4kupla, KasitteleKuplan4Tormays);
628
629        Add(P4kupla);
630    }
631    void Pelaaja1kupla()
632    {
633        if (p1OnKuplassa == false)
634        {
635            if (pelaaja1.IsDestroyed())
636            {
637
638            }
639            else
640            {
641                lisaaPelaaja1kupla(pelaaja1.X, pelaaja1.Y);
642                p1OnKuplassa = true;
643            }
644        }
645        pelaaja1.Destroy();
646    }
647
648    void Pelaaja2kupla()
649    {
650        if (p2OnKuplassa == false)
651        {
652            if (pelaaja2.IsDestroyed())
653            {
654
655            }
656            else
657            {
658                lisaaPelaaja2kupla(pelaaja2.X, pelaaja2.Y);
659                p2OnKuplassa = true;
660            }
661        }
662        pelaaja2.Destroy();
663    }
664
665    void Pelaaja3kupla()
666    {
667        if (p3OnKuplassa == false)
668        {
669            if (pelaaja3.IsDestroyed())
670            {
671
672            }
673            else
674            {
675                lisaaPelaaja3kupla(pelaaja3.X, pelaaja3.Y);
676                p3OnKuplassa = true;
677            }
678        }
679        if (pelaaja3 != null)
680        {
681            pelaaja3.Destroy();
682        }
683    }
684
685    void Pelaaja4kupla()
686    {
687        if (p4OnKuplassa == false)
688        {
689            if (pelaaja4.IsDestroyed())
690            {
691
692            }
693            else
694            {
695                lisaaPelaaja4kupla(pelaaja4.X, pelaaja4.Y);
696                p4OnKuplassa = true;
697            }
698        }
699        pelaaja4.Destroy();
700    }
701
702    void TeePistenaytot()
703    {
704        ValueDisplay pisteNaytto = new ValueDisplay();
705        pisteNaytto.Text = "Pelaaja 1: ";
706        pisteNaytto.X = Screen.Left + 200;
707        pisteNaytto.Y = Screen.Top - 100;
708        pisteNaytto.ValueColor = Color.Red;
709        pisteNaytto.TextColor = Color.Red;
710        pisteNaytto.BindTo(pelaajan1pisteet);
711        Add(pisteNaytto);
712
713        ValueDisplay pisteNaytto2 = new ValueDisplay();
714        pisteNaytto2.Text = "Pelaaja 2: ";
715        pisteNaytto2.X = Screen.Left + 400;
716        pisteNaytto2.Y = Screen.Top - 100;
717        pisteNaytto2.ValueColor = Color.Red;
718        pisteNaytto2.TextColor = Color.Red;
719        pisteNaytto2.BindTo(pelaajan2pisteet);
720        Add(pisteNaytto2);
721
722        if (pelaajamaara == 3)
723        {
724            ValueDisplay pisteNaytto3 = new ValueDisplay();
725            pisteNaytto3.Text = "Pelaaja 3: ";
726            pisteNaytto3.X = Screen.Right - 400;
727            pisteNaytto3.Y = Screen.Top - 100;
728            pisteNaytto3.ValueColor = Color.Red;
729            pisteNaytto3.TextColor = Color.Red;
730            pisteNaytto3.BindTo(pelaajan3pisteet);
731            Add(pisteNaytto3);
732        }
733        if (pelaajamaara == 4)
734        {
735            ValueDisplay pisteNaytto3 = new ValueDisplay();
736            pisteNaytto3.Text = "Pelaaja 3: ";
737            pisteNaytto3.X = Screen.Right - 400;
738            pisteNaytto3.Y = Screen.Top - 100;
739            pisteNaytto3.ValueColor = Color.Red;
740            pisteNaytto3.TextColor = Color.Red;
741            pisteNaytto3.BindTo(pelaajan3pisteet);
742            Add(pisteNaytto3);
743
744            ValueDisplay pisteNaytto4 = new ValueDisplay();
745            pisteNaytto4.Text = "Pelaaja 4: ";
746            pisteNaytto4.X = Screen.Right - 200;
747            pisteNaytto4.Y = Screen.Top - 100;
748            pisteNaytto4.ValueColor = Color.Red;
749            pisteNaytto4.TextColor = Color.Red;
750            pisteNaytto4.BindTo(pelaajan4pisteet);
751            Add(pisteNaytto4);
752        }
753    }
754
755    void TeeElamanaytot()
756    {
757        ValueDisplay elamaNaytto = new ValueDisplay();
758        elamaNaytto.Text = "Pelaaja 1:n elämät: ";
759        elamaNaytto.X = Screen.Left + 150;
760        elamaNaytto.Y = Screen.Top - 100;
761        elamaNaytto.ValueColor = Color.Red;
762        elamaNaytto.TextColor = Color.Red;
763        elamaNaytto.BindTo(pelaajan1elamat);
764        Add(elamaNaytto);
765
766
767        ValueDisplay elamaNaytto2 = new ValueDisplay();
768        elamaNaytto2.Text = "Pelaaja 2:n elämät: ";
769        elamaNaytto2.X = Screen.Left + 400;
770        elamaNaytto2.Y = Screen.Top - 100;
771        elamaNaytto2.ValueColor = Color.Red;
772        elamaNaytto2.TextColor = Color.Red;
773        elamaNaytto2.BindTo(pelaajan2elamat);
774        Add(elamaNaytto2);
775
776        if (pelaajamaara == 3)
777        {
778            ValueDisplay elamaNaytto3 = new ValueDisplay();
779            elamaNaytto3.Text = "Pelaaja 3:n elämät: ";
780            elamaNaytto3.X = Screen.Right - 400;
781            elamaNaytto3.Y = Screen.Top - 100;
782            elamaNaytto3.ValueColor = Color.Red;
783            elamaNaytto3.TextColor = Color.Red;
784            elamaNaytto3.BindTo(pelaajan3elamat);
785            Add(elamaNaytto3);
786        }
787        if (pelaajamaara == 4)
788        {
789            ValueDisplay elamaNaytto3 = new ValueDisplay();
790            elamaNaytto3.Text = "Pelaaja 3:n elämät: ";
791            elamaNaytto3.X = Screen.Right - 400;
792            elamaNaytto3.Y = Screen.Top - 100;
793            elamaNaytto3.ValueColor = Color.Red;
794            elamaNaytto3.TextColor = Color.Red;
795            elamaNaytto3.BindTo(pelaajan3elamat);
796            Add(elamaNaytto3);
797
798            ValueDisplay elamaNaytto4 = new ValueDisplay();
799            elamaNaytto4.Text = "Pelaaja 4:n elämät: ";
800            elamaNaytto4.X = Screen.Right - 150;
801            elamaNaytto4.Y = Screen.Top - 100;
802            elamaNaytto4.ValueColor = Color.Red;
803            elamaNaytto4.TextColor = Color.Red;
804            elamaNaytto4.BindTo(pelaajan4elamat);
805            Add(elamaNaytto4);
806        }
807    }
808
809    void TeeReunat()
810    {
811        vasenReuna = Level.CreateLeftBorder();
812        vasenReuna.Restitution = 0.0;
813        vasenReuna.IsVisible = false;
814
815        alaReuna = Level.CreateBottomBorder();
816        vasenReuna.Restitution = 0.0;
817        vasenReuna.IsVisible = false;
818
819        oikeaReuna = Level.CreateRightBorder();
820        vasenReuna.Restitution = 0.0;
821        vasenReuna.IsVisible = false;
822    }
823
824    void LisaaEitoimiruutu()
825    {
826        Alku = PhysicsObject.CreateStaticObject(1024, 768);
827        Alku.X = 0;
828        Alku.Y = Level.Bottom + 400;
829        Alku.Image = LoadImage("SJeitoimi");
830        Alku.IgnoresCollisionResponse = true;
831        Alku.IgnoresPhysicsLogics = true;
832        Add(Alku);
833    }
834
835    void LisaaAloitusruutu()
836    {
837        Alku = PhysicsObject.CreateStaticObject(1024, 640);
838        Alku.X = 0;
839        Alku.Y = Level.Bottom + 320;
840        Alku.Image = LoadImage("SJpäävalikko");
841        Alku.IgnoresCollisionResponse = true;
842        Alku.IgnoresPhysicsLogics = true;
843        Add(Alku);
844    }
845
846    void TeePelimodivalikko()
847    {
848        Alku = PhysicsObject.CreateStaticObject(1024, 640);
849        Alku.X = 0;
850        Alku.Y = Level.Bottom + 320;
851        Alku.Image = LoadImage("SJpelimodi");
852        Alku.IgnoresCollisionResponse = true;
853        Alku.IgnoresPhysicsLogics = true;
854        Add(Alku);
855    }
856
857    void TeeOhjevalikko()
858    {
859        Alku = PhysicsObject.CreateStaticObject(1024, 640);
860        Alku.X = 0;
861        Alku.Y = Level.Bottom + 320;
862        Alku.Image = LoadImage("SJohjeet");
863        Alku.IgnoresCollisionResponse = true;
864        Alku.IgnoresPhysicsLogics = true;
865        Add(Alku);
866    }
867
868    void TeePelaajaMäärä()
869    {
870        PMäärä = PhysicsObject.CreateStaticObject(1024, 640);
871        PMäärä.X = 0;
872        PMäärä.Y = Level.Bottom + 320;
873        PMäärä.Image = LoadImage("SJpelaajamaara");
874        PMäärä.IgnoresCollisionResponse = true;
875        PMäärä.IgnoresPhysicsLogics = true;
876        Add(PMäärä);
877    }
878
879    void TeeTappiovalikko()
880    {
881        Tappio = PhysicsObject.CreateStaticObject(1024, 640);
882        Camera.Position = new Vector(0, 0);
883        Tappio.X = Camera.Position.X;
884        Tappio.Y = -14680;
885        Tappio.Image = LoadImage("SJparhaatpisteet");
886        Tappio.IgnoresCollisionResponse = true;
887        Tappio.IgnoresPhysicsLogics = true;
888        Add(Tappio);
889    }
890
891    void ohjevalikko2p()
892    {
893        Alku = PhysicsObject.CreateStaticObject(1024, 640);
894        Alku.X = 0;
895        Alku.Y = Level.Bottom + 320;
896        Alku.Image = LoadImage("SJ2pohjeet");
897        Alku.IgnoresCollisionResponse = true;
898        Alku.IgnoresPhysicsLogics = true;
899        Add(Alku);
900        NappiAlkuvalikkoon();
901    }
902
903    void ohjevalikko3p()
904    {
905        Alku = PhysicsObject.CreateStaticObject(1024, 640);
906        Alku.X = 0;
907        Alku.Y = Level.Bottom + 320;
908        Alku.Image = LoadImage("SJ3pohjeet");
909        Alku.IgnoresCollisionResponse = true;
910        Alku.IgnoresPhysicsLogics = true;
911        Add(Alku);
912        NappiAlkuvalikkoon();
913    }
914
915    void ohjevalikko4p()
916    {
917        Alku = PhysicsObject.CreateStaticObject(1024, 640);
918        Alku.X = 0;
919        Alku.Y = Level.Bottom + 320;
920        Alku.Image = LoadImage("SJ4pohjeet");
921        Alku.IgnoresCollisionResponse = true;
922        Alku.IgnoresPhysicsLogics = true;
923        Add(Alku);
924        NappiAlkuvalikkoon();
925    }
926
927    private void NappiAlkuvalikkoon()
928    {
929        Keyboard.Listen(Key.P, ButtonState.Pressed, Alkukentta, "");
930    }
931
932    void voitto()
933    {
934        voittaja = PhysicsObject.CreateStaticObject(1024, 640);
935        Camera.Position = new Vector(0, 0);
936        voittaja.X = Camera.Position.X;
937        voittaja.Y = -14680;
938        if (p1SaiVoiton == true)
939        {
940            voittaja.Image = LoadImage("Smile Jump(pelaaja1voitti)");
941        }
942        if (p2SaiVoiton == true)
943        {
944            voittaja.Image = LoadImage("Smile Jump(pelaaja2voitti)");
945        }
946        if (p3SaiVoiton == true)
947        {
948            voittaja.Image = LoadImage("Smile Jump(pelaaja3voitti)");
949        }
950        if (p4SaiVoiton == true)
951        {
952            voittaja.Image = LoadImage("Smile Jump(pelaaja4voitti)");
953        }
954
955        voittaja.IgnoresCollisionResponse = true;
956        Add(voittaja);
957    }
958
959    void KasittelePallonTormays(PhysicsObject pelaaja1, PhysicsObject kohde)
960    {
961        if (kohde == oikeaReuna)
962        {
963            pelaaja1.X = Level.Left + 30;
964        }
965        else if (kohde == vasenReuna)
966        {
967            pelaaja1.X = Level.Right - 30;
968        }
969    }
970
971    void KasitteleKuplan1Tormays(PhysicsObject kupla, PhysicsObject kohde)
972    {
973        if (kohde == pelaaja2)
974        {
975            lisaaPelaaja1(kupla.X, kupla.Y);
976            kupla.Destroy();
977            Kupla1puhkesi();
978        }
979        if (kohde == pelaaja3)
980        {
981            lisaaPelaaja1(kupla.X, kupla.Y);
982            kupla.Destroy();
983            Kupla1puhkesi();
984        }
985        if (kohde == pelaaja4)
986        {
987            lisaaPelaaja1(kupla.X, kupla.Y);
988            kupla.Destroy();
989            Kupla1puhkesi();
990        }
991    }
992
993    void Kupla1puhkesi()
994    {
995        lisaaNappaimetp1();
996        AddCollisionHandler(pelaaja1, Pelaaja1Osui);
997        p1elamamenetys = false;
998        p1OnKuplassa = false;
999    }
1000
1001    void KasitteleKuplan2Tormays(PhysicsObject kupla, PhysicsObject kohde)
1002    {
1003        if (kohde == pelaaja1)
1004        {
1005            lisaaPelaaja2(kupla.X, kupla.Y);
1006            kupla.Destroy();
1007            Kupla2puhkesi();
1008        }
1009        if (kohde == pelaaja3)
1010        {
1011            lisaaPelaaja2(kupla.X, kupla.Y);
1012            kupla.Destroy();
1013            Kupla2puhkesi();
1014        }
1015        if (kohde == pelaaja4)
1016        {
1017            lisaaPelaaja2(kupla.X, kupla.Y);
1018            kupla.Destroy();
1019            Kupla2puhkesi();
1020        }
1021    }
1022
1023    void Kupla2puhkesi()
1024    {
1025        lisaaNappaimetp2();
1026        AddCollisionHandler(pelaaja2, Pelaaja2Osui);
1027        p2elamamenetys = false;
1028        p2OnKuplassa = false;
1029    }
1030
1031    void KasitteleKuplan3Tormays(PhysicsObject kupla, PhysicsObject kohde)
1032    {
1033        if (kohde == pelaaja2)
1034        {
1035            lisaaPelaaja3(kupla.X, kupla.Y);
1036            kupla.Destroy();
1037            Kupla3puhkesi();
1038        }
1039        if (kohde == pelaaja1)
1040        {
1041            lisaaPelaaja3(kupla.X, kupla.Y);
1042            kupla.Destroy();
1043            Kupla3puhkesi();
1044        }
1045        if (kohde == pelaaja4)
1046        {
1047            lisaaPelaaja3(kupla.X, kupla.Y);
1048            kupla.Destroy();
1049            Kupla3puhkesi();
1050        }
1051    }
1052
1053    void Kupla3puhkesi()
1054    {
1055        lisaaNappaimetp3();
1056        AddCollisionHandler(pelaaja3, Pelaaja3Osui);
1057        p3elamamenetys = false;
1058        p3OnKuplassa = false;
1059    }
1060
1061    void KasitteleKuplan4Tormays(PhysicsObject kupla, PhysicsObject kohde)
1062    {
1063        if (kohde == pelaaja2)
1064        {
1065            lisaaPelaaja4(kupla.X, kupla.Y);
1066            kupla.Destroy();
1067            Kupla4puhkesi();
1068        }
1069        if (kohde == pelaaja3)
1070        {
1071            lisaaPelaaja4(kupla.X, kupla.Y);
1072            kupla.Destroy();
1073            Kupla4puhkesi();
1074        }
1075        if (kohde == pelaaja1)
1076        {
1077            lisaaPelaaja4(kupla.X, kupla.Y);
1078            kupla.Destroy();
1079            Kupla4puhkesi();
1080        }
1081
1082    }
1083    void Kupla4puhkesi()
1084    {
1085        lisaaNappaimetp4();
1086        AddCollisionHandler(pelaaja4, Pelaaja4Osui);
1087        p4elamamenetys = false;
1088        p4OnKuplassa = false;
1089    }
1090    void TasonTormays(PhysicsObject taso, PhysicsObject kohde)
1091    {
1092        if (kohde == DownReuna)
1093        {
1094            taso.Destroy();
1095        }
1096
1097    }
1098
1099    void Pelaaja1Osui(PhysicsObject p1, PhysicsObject kohde)
1100    {
1101        if (kohde == DownReuna)
1102        {
1103            if (YP == true && p1elamamenetys == false)
1104            {
1105                p1elamamenetys = true;
1106                pelaajan1elamat.Value--;
1107                if (pelaajan1elamat > 0)
1108                    KuplaSyntymä1.Start(1);
1109            }
1110            p1.Destroy();
1111            ControllerOne.Vibrate(1, 1, 0.0, 0.0, 0.5);
1112        }
1113
1114        if (kohde.Tag.ToString() == "vihollinen")
1115        {
1116            if (YP == true && p1elamamenetys == false)
1117            {
1118                p1elamamenetys = true;
1119                pelaajan1elamat.Value--;
1120                if (pelaajan1elamat > 0)
1121                    KuplaSyntymä1.Start(1);
1122            }
1123            kohde.Destroy();
1124            p1.Destroy();
1125            ControllerOne.Vibrate(1, 1, 0.0, 0.0, 0.5);
1126
1127        }
1128
1129    }
1130
1131    void Pelaaja2Osui(PhysicsObject p2, PhysicsObject kohde)
1132    {
1133        if (kohde == DownReuna)
1134        {
1135            p2.Destroy();
1136            ControllerTwo.Vibrate(1, 1, 0.0, 0.0, 0.5);
1137            if (YP == true && p2elamamenetys == false)
1138            {
1139                p2elamamenetys = true;
1140                pelaajan2elamat.Value--;
1141                if (pelaajan2elamat > 0)
1142                    KuplaSyntymä2.Start(1);
1143            }
1144        }
1145
1146        if (kohde.Tag.ToString() == "vihollinen")
1147        {
1148            kohde.Destroy();
1149            p2.Destroy();
1150            ControllerTwo.Vibrate(1, 1, 0.0, 0.0, 0.5);
1151            if (YP == true && p2elamamenetys == false)
1152            {
1153                p2elamamenetys = true;
1154                pelaajan2elamat.Value--;
1155                if (pelaajan2elamat > 0)
1156                    KuplaSyntymä2.Start(1);
1157            }
1158        }
1159
1160    }
1161
1162    void Pelaaja3Osui(PhysicsObject p3, PhysicsObject kohde)
1163    {
1164        if (kohde == DownReuna)
1165        {
1166            p3.Destroy();
1167            ControllerThree.Vibrate(1, 1, 0.0, 0.0, 0.5);
1168            if (YP == true && p3elamamenetys == false)
1169            {
1170                p3elamamenetys = true;
1171                pelaajan3elamat.Value--;
1172                if (pelaajan3elamat > 0)
1173                    KuplaSyntymä3.Start(1);
1174            }
1175        }
1176
1177        if (kohde.Tag.ToString() == "vihollinen")
1178        {
1179            kohde.Destroy();
1180            p3.Destroy();
1181            ControllerThree.Vibrate(1, 1, 0.0, 0.0, 0.5);
1182            if (YP == true && p3elamamenetys == false)
1183            {
1184                p3elamamenetys = true;
1185                pelaajan3elamat.Value--;
1186                if (pelaajan3elamat > 0)
1187                    KuplaSyntymä3.Start(1);
1188            }
1189        }
1190
1191    }
1192
1193    void Pelaaja4Osui(PhysicsObject p4, PhysicsObject kohde)
1194    {
1195        if (kohde == DownReuna)
1196        {
1197            if (YP == true && p4elamamenetys == false)
1198            {
1199                p4elamamenetys = true;
1200                pelaajan4elamat.Value--;
1201                if (pelaajan4elamat > 0)
1202                    KuplaSyntymä4.Start(1);
1203            }
1204            p4.Destroy();
1205            ControllerFour.Vibrate(1, 1, 0.0, 0.0, 0.5);
1206        }
1207
1208        if (kohde.Tag.ToString() == "vihollinen")
1209        {
1210            if (YP == true && p4elamamenetys == false)
1211            {
1212                p4elamamenetys = true;
1213                pelaajan4elamat.Value--;
1214                if (pelaajan4elamat > 0)
1215                    KuplaSyntymä4.Start(1);
1216            }
1217            kohde.Destroy();
1218            p4.Destroy();
1219            ControllerFour.Vibrate(1, 1, 0.0, 0.0, 0.5);
1220        }
1221
1222    }
1223
1224    void VihollisKaanty(PhysicsObject vihulainen, PhysicsObject kohde)
1225    {
1226        if (kohde == vasenReuna)
1227        {
1228            vihulainen.Velocity = new Vector(220.0, 0.0);
1229        }
1230        if (kohde == oikeaReuna)
1231        {
1232            vihulainen.Velocity = new Vector(-220.0, 0.0);
1233        }
1234
1235    }
1236
1237    void Nappainohje()
1238    {
1239        MessageDisplay.Add("Katso ohjeet valikosta");
1240    }
1241
1242    void luoKentta()
1243    {
1244        lisaaTaso(RandomGen.NextDouble(Level.Left + 50, Level.Right - 50), Level.Bottom + 100, 150);
1245
1246        mittari = new TextDisplay();
1247        Add(mittari);
1248
1249        TeeTasot();
1250        vihollistiheytys = 0;
1251        viholliskorkeus = 0;
1252        for (int v = 0; v < 55; v++)
1253        {
1254            viholliskorkeus = viholliskorkeus + 600 - vihollistiheytys;
1255            LisaaVihollinen(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom + viholliskorkeus + RandomGen.NextDouble(0.0, 40.0));
1256            vihollistiheytys = vihollistiheytys + 10;
1257        }
1258
1259        LisaaDownReuna();
1260
1261        Level.Background.CreateGradient(Color.SkyBlue, Color.DarkBlue);
1262        lisaaPelaaja1(0, Level.Bottom + 50);
1263        lisaaPelaaja2(100, Level.Bottom + 50);
1264        Teeaikalaskurit();
1265        TeeKuplaSyntymälaskurit();
1266
1267        Level.Width = 1024;
1268        Level.Height = 30000;
1269
1270
1271        if (pelaajamaara == 2)
1272        {
1273            Ohjeet2pelaajaa();
1274        }
1275        if (pelaajamaara == 3)
1276        {
1277            Ohjeet3pelaajaa();
1278        }
1279        if (pelaajamaara == 4)
1280        {
1281            Ohjeet3pelaajaa();
1282        }
1283        aloituspaikka = pelaaja1.Position;
1284    }
1285
1286    private void TeeTasot()
1287    {
1288        tasokorkeus = 100;
1289        tasoleveys = 150;
1290        for (int i = 0; i < 36; i++)
1291        {
1292            lisaaTaso(RandomGen.NextDouble(Level.Left + 50, -250), Level.Bottom + tasokorkeus + RandomGen.NextDouble(10.0, 15.0), tasoleveys);
1293            tasokorkeus = tasokorkeus + 170;
1294            tasoleveys = tasoleveys - 2;
1295        }
1296
1297        tasokorkeus = 100;
1298        tasoleveys = 150;
1299        for (int i = 0; i < 38; i++)
1300        {
1301            lisaaTaso(RandomGen.NextDouble(250, Level.Right - 50), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1302            tasokorkeus = tasokorkeus + 170;
1303            tasoleveys = tasoleveys - 2;
1304        }
1305
1306        tasokorkeus = 6780;
1307        tasoleveys = 100;
1308        for (int i = 0; i < 40; i++)
1309        {
1310            lisaaTaso(RandomGen.NextDouble(250, Level.Right - 50), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1311            tasokorkeus = tasokorkeus + 340;
1312            tasoleveys = tasoleveys - 2;
1313        }
1314
1315        tasokorkeus = 150;
1316        tasoleveys = 150;
1317        for (int i = 0; i < 9; i++)
1318        {
1319            lisaaTaso(RandomGen.NextDouble(250, -250), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1320            tasokorkeus = tasokorkeus + 170;
1321            tasoleveys = tasoleveys - 1;
1322        }
1323
1324        tasokorkeus = 1700;
1325        tasoleveys = 150;
1326        for (int i = 0; i < 10; i++)
1327        {
1328            lisaaTaso(RandomGen.NextDouble(250, -250), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1329            tasokorkeus = tasokorkeus + 340;
1330            tasoleveys = tasoleveys - 1;
1331        }
1332
1333        tasokorkeus = 1870;
1334        tasoleveys = 140;
1335        for (int i = 0; i < 6; i++)
1336        {
1337            lisaaLiikkuvaTasoVer(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1338            tasokorkeus = tasokorkeus + 340;
1339            tasoleveys = tasoleveys - 1;
1340        }
1341
1342        tasokorkeus = 8550;
1343        tasoleveys = 110;
1344        for (int h = 0; h < 75; h++)
1345        {
1346            lisaaRikkoutuvaTaso(RandomGen.NextDouble(Level.Left + 50, 200), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
1347            tasoleveys = tasoleveys - 1;
1348            tasokorkeus = tasokorkeus + 170;
1349        }
1350
1351        tasokorkeus = 3700;
1352        tasoleveys = 130;
1353        for (int h = 0; h < 15; h++)
1354        {
1355            lisaaLiikkuvaTasoVer(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
1356            tasoleveys = tasoleveys - 1;
1357            tasokorkeus = tasokorkeus + 170;
1358        }
1359
1360        tasokorkeus = 6400;
1361        tasoleveys = 110;
1362        for (int h = 0; h < 5; h++)
1363        {
1364            lisaaLiikkuvaTasoVer(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
1365            tasoleveys = tasoleveys - 1;
1366            tasokorkeus = tasokorkeus + 340;
1367        }
1368
1369        tasokorkeus = 6570;
1370        tasoleveys = 110;
1371        for (int h = 0; h < 6; h++)
1372        {
1373            lisaaRikkoutuvaTaso(RandomGen.NextDouble(Level.Left + 50, 200), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
1374            tasoleveys = tasoleveys - 1;
1375            tasokorkeus = tasokorkeus + 340;
1376        }
1377
1378        tasokorkeus = 6700;
1379        tasoleveys = 120;
1380        for (int h = 0; h < 40; h++)
1381        {
1382            lisaaRikkoutuvaTaso(RandomGen.NextDouble(Level.Right - 50, 200), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
1383            tasoleveys = tasoleveys - 1;
1384            tasokorkeus = tasokorkeus + 340;
1385        }
1386    }
1387
1388    void Teeaikalaskurit()
1389    {
1390        aikaLaskuri = new Timer();
1391        aikaLaskuri.Interval = 2;
1392        aikaLaskuri.Trigger += aikaLoppui;
1393        Add(aikaLaskuri);
1394        aikaLaskuri.Start(1);
1395
1396        aikaLaskuri2 = new Timer();
1397        aikaLaskuri2.Interval = 5;
1398        aikaLaskuri2.Trigger += aikaLoppui2;
1399        Add(aikaLaskuri2);
1400
1401        aikaLaskuri3 = new Timer();
1402        aikaLaskuri3.Interval = 2;
1403        aikaLaskuri3.Trigger += aikaLoppui3;
1404        Add(aikaLaskuri3);
1405    }
1406
1407    void TeeKuplaSyntymälaskurit()
1408    {
1409        KuplaSyntymä1 = new Timer();
1410        KuplaSyntymä1.Interval = Kuplaaika;
1411        KuplaSyntymä1.Trigger += KuplaSyntymä1aika;
1412        Add(KuplaSyntymä1);
1413
1414        KuplaSyntymä2 = new Timer();
1415        KuplaSyntymä2.Interval = Kuplaaika;
1416        KuplaSyntymä2.Trigger += KuplaSyntymä2aika;
1417        Add(KuplaSyntymä2);
1418
1419        KuplaSyntymä3 = new Timer();
1420        KuplaSyntymä3.Interval = Kuplaaika;
1421        KuplaSyntymä3.Trigger += KuplaSyntymä3aika;
1422        Add(KuplaSyntymä3);
1423
1424        KuplaSyntymä4 = new Timer();
1425        KuplaSyntymä4.Interval = Kuplaaika;
1426        KuplaSyntymä4.Trigger += KuplaSyntymä4aika;
1427        Add(KuplaSyntymä4);
1428    }
1429
1430    private void Ohjeet2pelaajaa()
1431    {
1432        Ohje2p = PhysicsObject.CreateStaticObject(800, 200);
1433        Ohje2p.X = 0;
1434        Ohje2p.Y = Level.Bottom + 400;
1435        Ohje2p.Image = LoadImage("Ohje2p");
1436        Ohje2p.IgnoresCollisionResponse = true;
1437        Ohje2p.IgnoresPhysicsLogics = true;
1438        if (YP == false)
1439        {
1440            Add(Ohje2p);
1441        }
1442    }
1443
1444    private void Ohjeet3pelaajaa()
1445    {
1446        Ohje3p = PhysicsObject.CreateStaticObject(800, 200);
1447        Ohje3p.X = 0;
1448        Ohje3p.Y = Level.Bottom + 400;
1449        Ohje3p.Image = LoadImage("Ohje3p");
1450        Ohje3p.IgnoresCollisionResponse = true;
1451        Ohje3p.IgnoresPhysicsLogics = true;
1452        if (YP == false)
1453        {
1454            Add(Ohje3p);
1455        }
1456    }
1457
1458    void lisaaTaso(double x, double y, double leveys)
1459    {
1460        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 30);
1461        taso.X = x;
1462        taso.Y = y;
1463        taso.Image = LoadImage("Smile Jump(laatta)");
1464        AddCollisionHandler(taso, TasonTormays);
1465        Add(taso);
1466    }
1467
1468    void lisaaRikkoutuvaTaso(double x, double y, double leveys)
1469    {
1470        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 30);
1471        taso.X = x;
1472        taso.Y = y;
1473        taso.Image = LoadImage("Smile Jump(rikkoutuva laatta)");
1474        AddCollisionHandler(taso, TasonTormays);
1475        taso.Tag = "Rikkoutuva Taso";
1476        Add(taso);
1477    }
1478
1479    void lisaaLiikkuvaTasoVer(double äks, double yy, double leveys)
1480    {
1481        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 30);
1482        taso.X = äks;
1483        taso.Y = yy;
1484        taso.Image = LoadImage("Smile Jump(liikkuva laatta)");
1485        AddCollisionHandler(taso, TasonTormays);
1486        Add(taso);
1487
1488        PathFollowerBrain polkuAivot = new PathFollowerBrain();
1489        polkuAivot.Active = true;
1490
1491        List<Vector> polku = new List<Vector>();
1492
1493        polku.Add(new Vector(300, yy));
1494        polku.Add(new Vector(-300, yy));
1495        polkuAivot.Path = polku;
1496        polkuAivot.Speed = 100;
1497        taso.Brain = polkuAivot;
1498    }
1499    void lisaaRikkimennytTaso(double x, double y, double leveys)
1500    {
1501
1502        PhysicsObject taso = new PhysicsObject(leveys / 150 * 24, 30);
1503        taso.Mass = 10;
1504        taso.X = x - (leveys / 150 * 65);
1505        taso.Y = y;
1506        taso.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 1)");
1507        taso.Velocity = new Vector(-20.0, 0.0);
1508        AddCollisionHandler(taso, TasonTormays);
1509        Add(taso);
1510
1511        PhysicsObject taso1 = new PhysicsObject(leveys / 150 * 80, 30);
1512        taso1.Mass = 10;
1513        taso1.X = x - (leveys / 150 * 25);
1514        taso1.Y = y;
1515        taso1.Velocity = new Vector(-10.0, 0.0);
1516        taso1.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 2)");
1517        AddCollisionHandler(taso1, TasonTormays);
1518        Add(taso1);
1519
1520
1521        PhysicsObject taso2 = new PhysicsObject(leveys / 150 * 55, 30);
1522        taso2.Mass = 10;
1523        taso2.X = x + (leveys / 150 * 22);
1524        taso2.Y = y;
1525        taso2.Velocity = new Vector(10.0, 0.0);
1526        taso2.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 3)");
1527        AddCollisionHandler(taso2, TasonTormays);
1528        Add(taso2);
1529
1530        PhysicsObject taso3 = new PhysicsObject(leveys / 150 * 35, 30);
1531        taso3.Mass = 10;
1532        taso3.X = x + (leveys / 150 * 60);
1533        taso3.Y = y;
1534        taso3.Velocity = new Vector(20.0, 0.0);
1535        taso3.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 4)");
1536        AddCollisionHandler(taso3, TasonTormays);
1537        Add(taso3);
1538
1539    }
1540
1541    void RikkoutuvaTaso(PhysicsObject collidingObject, PhysicsObject otherObject)
1542    {
1543        if (otherObject.Tag.ToString() == "Rikkoutuva Taso")
1544        {
1545            otherObject.Destroy();
1546            //TeeEfektit(otherObject.X, otherObject.Y, 15);
1547            lisaaRikkimennytTaso(otherObject.X, otherObject.Y, otherObject.Width);
1548        }
1549    }
1550
1551    void lisaaPelaaja1(double x, double y)
1552    {
1553        pelaaja1 = new PlatformCharacter(40, 40);
1554        pelaaja1.Mass = 4.0;
1555        pelaaja1.Shape = Shapes.Circle;
1556        pelaaja1.Image = LoadImage("smile jump(keltainen pelaaja) (2)");
1557        pelaaja1.X = x;
1558        pelaaja1.Y = y;
1559
1560        AddCollisionHandler(pelaaja1, RikkoutuvaTaso);
1561        AddCollisionHandler(pelaaja1, KasittelePallonTormays);
1562
1563        Add(pelaaja1);
1564    }
1565
1566    void lisaaPelaaja2(double x, double y)
1567    {
1568        pelaaja2 = new PlatformCharacter(40, 40);
1569        pelaaja2.Mass = 4.0;
1570        pelaaja2.Shape = Shapes.Circle;
1571        pelaaja2.Image = LoadImage("smile jump (vihreä pelaaja) (2)");
1572        pelaaja2.X = x;
1573        pelaaja2.Y = y;
1574
1575        AddCollisionHandler(pelaaja2, RikkoutuvaTaso);
1576        AddCollisionHandler(pelaaja2, KasittelePallonTormays);
1577
1578        Add(pelaaja2);
1579    }
1580
1581    void lisaaPelaaja3(double x, double y)
1582    {
1583        pelaaja3 = new PlatformCharacter(40, 40);
1584        pelaaja3.Mass = 4.0;
1585        pelaaja3.Shape = Shapes.Circle;
1586        pelaaja3.Image = LoadImage("smile jump(sininen pelaaja)");
1587        pelaaja3.X = x;
1588        pelaaja3.Y = y;
1589
1590        AddCollisionHandler(pelaaja3, RikkoutuvaTaso);
1591        AddCollisionHandler(pelaaja3, KasittelePallonTormays);
1592
1593        Add(pelaaja3);
1594    }
1595
1596    void lisaaPelaaja4(double x, double y)
1597    {
1598        pelaaja4 = new PlatformCharacter(40, 40);
1599        pelaaja4.Mass = 4.0;
1600        pelaaja4.Shape = Shapes.Circle;
1601        pelaaja4.Image = LoadImage("smile jump(pinkki pelaaja)");
1602        pelaaja4.X = x;
1603        pelaaja4.Y = y;
1604
1605        AddCollisionHandler(pelaaja4, RikkoutuvaTaso);
1606        AddCollisionHandler(pelaaja4, KasittelePallonTormays);
1607
1608        Add(pelaaja4);
1609    }
1610
1611    void LisaaVihollinen(double x, double y)
1612    {
1613        PhysicsObject vihollinen = new PhysicsObject(60, 60);
1614        vihollinen.Image = LoadImage("smile jump(vihollinen) (2)");
1615        vihollinen.Tag = "vihollinen";
1616        vihollinen.Shape = Shapes.Circle;
1617        vihollinen.X = x;
1618        vihollinen.Y = y;
1619        vihollinen.IgnoresCollisionResponse = true;
1620        vihollinen.IgnoresPhysicsLogics = true;
1621        vihollinen.Velocity = new Vector(220.0, 0.0);
1622        Add(vihollinen);
1623
1624        AddCollisionHandler(vihollinen, VihollisKaanty);
1625    }
1626
1627    private void aikaLoppui(Timer sender)
1628    {
1629        if (pelaajamaara == 2)
1630        {
1631            Ohje2p.Destroy();
1632        }
1633        AddCollisionHandler(pelaaja1, Pelaaja1Osui);
1634        AddCollisionHandler(pelaaja2, Pelaaja2Osui);
1635        if (pelaajamaara == 3)
1636        {
1637            AddCollisionHandler(pelaaja3, Pelaaja3Osui);
1638            Ohje3p.Destroy();
1639        }
1640        if (pelaajamaara == 4)
1641        {
1642            AddCollisionHandler(pelaaja3, Pelaaja3Osui);
1643            AddCollisionHandler(pelaaja4, Pelaaja4Osui);
1644            Ohje3p.Destroy();
1645        }
1646    }
1647    private void aikaLoppui2(Timer sender)
1648    {
1649        voittaja.Destroy();
1650        p1SaiVoiton = false;
1651        p2SaiVoiton = false;
1652        p3SaiVoiton = false;
1653        p4SaiVoiton = false;
1654        MediaPlayer.Play("Menu");
1655        Alkukentta();
1656
1657    }
1658
1659    private void aikaLoppui3(Timer sender)
1660    {
1661        seuraavaKentta();
1662        MediaPlayer.Play("Menu");
1663        Parhaatpisteetkentta();
1664    }
1665
1666    private void KuplaSyntymä1aika(Timer sender)
1667    {
1668        if (pelaajan1elamat > 0)
1669            lisaaPelaaja1kupla(Level.Left, korkein + 20);
1670    }
1671
1672    private void KuplaSyntymä2aika(Timer sender)
1673    {
1674        if (pelaajan2elamat > 0)
1675            lisaaPelaaja2kupla(Level.Left, korkein - 20);
1676    }
1677
1678    private void KuplaSyntymä3aika(Timer sender)
1679    {
1680        if (pelaajan3elamat > 0)
1681            lisaaPelaaja3kupla(Level.Right, korkein + 20);
1682    }
1683
1684    private void KuplaSyntymä4aika(Timer sender)
1685    {
1686        if (pelaajan4elamat > 0)
1687            lisaaPelaaja4kupla(Level.Right, korkein - 20);
1688    }
1689
1690    void lisaaNappaimetp1()
1691    {
1692        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "poistu");
1693
1694        Keyboard.Listen(Key.Left, ButtonState.Down, LiikuLäski, null, pelaaja1, -nopeus);
1695        Keyboard.Listen(Key.Right, ButtonState.Down, LiikuLäski, null, pelaaja1, nopeus);
1696        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
1697
1698        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1699
1700        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja1, -nopeus);
1701        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja1, nopeus);
1702        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
1703    }
1704
1705    void lisaaNappaimetp2()
1706    {
1707        Keyboard.Listen(Key.A, ButtonState.Down, LiikuLäski, null, pelaaja2, -nopeus);
1708        Keyboard.Listen(Key.D, ButtonState.Down, LiikuLäski, null, pelaaja2, nopeus);
1709        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
1710
1711        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1712
1713        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja2, -nopeus);
1714        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja2, nopeus);
1715        ControllerTwo.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja2, hyppyVoima);
1716    }
1717
1718    void lisaaNappaimetp3()
1719    {
1720        Keyboard.Listen(Key.J, ButtonState.Down, LiikuLäski, null, pelaaja3, -nopeus);
1721        Keyboard.Listen(Key.L, ButtonState.Down, LiikuLäski, null, pelaaja3, nopeus);
1722        Keyboard.Listen(Key.I, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja3, hyppyVoima);
1723
1724        ControllerThree.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1725
1726        ControllerThree.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja3, -nopeus);
1727        ControllerThree.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja3, nopeus);
1728        ControllerThree.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja3, hyppyVoima);
1729    }
1730
1731    void lisaaNappaimetp4()
1732    {
1733        ControllerFour.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1734
1735        ControllerFour.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja4, -nopeus);
1736        ControllerFour.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja4, nopeus);
1737        ControllerFour.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja4, hyppyVoima);
1738    }
1739
1740    void liikuta(PlatformCharacter hahmo, double nopeus)
1741    {
1742        hahmo.Walk(nopeus);
1743    }
1744
1745    void hyppaa(PlatformCharacter hahmo, double voima)
1746    {
1747        hahmo.Jump(voima);
1748    }
1749
1750    /// <summary>
1751    /// DownReuna tuhoaa pelaajat ja tasot, jotka ovat
1752    /// ruudun alapuolella.
1753    /// </summary>
1754    void LisaaDownReuna()
1755    {
1756        DownReuna = new PhysicsObject(2000, 100);
1757        DownReuna.X = 0;
1758        DownReuna.Y = Level.Bottom + 50;
1759        DownReuna.IgnoresCollisionResponse = true;
1760        DownReuna.IgnoresGravity = true;
1761        Add(DownReuna);
1762    }
1763    void Kahdenpelaajanpeli()
1764    {
1765        pelaajamaara = 2;
1766        Pelimodikentta();
1767    }
1768
1769    void KahdenpelaajanYP()
1770    {
1771        pelaajamaara = 2;
1772        YP = true;
1773        seuraavaKentta();
1774        //MediaPlayer.Play("E Api");
1775    }
1776
1777    void KahdenpelaajanKP()
1778    {
1779        pelaajamaara = 2;
1780        YP = false;
1781        seuraavaKentta();
1782        //MediaPlayer.Play("E Api");
1783    }
1784
1785    void Kolmenpelaajanpeli()
1786    {
1787        pelaajamaara = 3;
1788        Pelimodikentta();
1789    }
1790
1791    void KolmenpelaajanYP()
1792    {
1793        pelaajamaara = 3;
1794        YP = true;
1795        seuraavaKentta();
1796        //MediaPlayer.Play("E Api");
1797    }
1798
1799    void KolmenpelaajanKP()
1800    {
1801        pelaajamaara = 3;
1802        YP = false;
1803        seuraavaKentta();
1804        //MediaPlayer.Play("E Api");
1805    }
1806
1807    void Neljanpelaajanpeli()
1808    {
1809        pelaajamaara = 4;
1810        Pelimodikentta();
1811    }
1812
1813    void NeljanpelaajanYP()
1814    {
1815        pelaajamaara = 4;
1816        YP = true;
1817        seuraavaKentta();
1818        MediaPlayer.Play("E Api");
1819    }
1820
1821    void NeljanpelaajanKP()
1822    {
1823        pelaajamaara = 4;
1824        YP = false;
1825        seuraavaKentta();
1826        MediaPlayer.Play("E Api");
1827    }
1828
1829    void jokuvoitti()
1830    {
1831        seuraavaKentta();
1832        ClearAll();
1833        pelaajamaara = 0;
1834        voitto();
1835        aikaLaskuri2.Start();
1836    }
1837
1838    void NaytaKorkeus(Timer sender)
1839    {
1840        korkeus = Math.Round((aloituspaikka.Y + korkein + 29932), 0);
1841        mittari.Text = "Korkeus: " + korkeus;
1842        mittari.X = 0;
1843        mittari.Y = Screen.Top - 100;
1844    }
1845
1846    void LiikuLäski(PlatformCharacter SJpelaaja, double nopeus)
1847    {
1848        SJpelaaja.Push(new Vector(nopeus, 0));
1849        //SJpelaaja.Velocity += Vector.FromLengthAndAngle(nopeus, SJpelaaja.Angle);
1850    }
1851
1852    protected override void Update(Time time)
1853    {
1854        PlatformCharacter highest = pelaaja1;
1855        if (pelaaja2 != null && pelaaja2.Y > highest.Y) highest = pelaaja2;
1856        if (pelaaja3 != null && pelaaja3.Y > highest.Y) highest = pelaaja3;
1857        if (pelaaja4 != null && pelaaja4.Y > highest.Y) highest = pelaaja4;
1858
1859        korkein = highest.Y;
1860
1861        Camera.Follow(highest);
1862        if (YP == true)
1863        {
1864            if (P1kupla != null && P1kupla.Y < DownReuna.Y + 80)
1865            {
1866                P1kupla.Velocity = new Vector(10, 500);
1867            }
1868            else
1869            {
1870                if (P1kupla != null && P1kupla.Y > highest.Y && P1kupla.X > highest.X)
1871                {
1872                    P1kupla.Velocity = new Vector(-51.0, -59.0);
1873                }
1874                if (P1kupla != null && P1kupla.Y < highest.Y && P1kupla.X > highest.X)
1875                {
1876                    P1kupla.Velocity = new Vector(-51.0, 59.0);
1877                }
1878                if (P1kupla != null && P1kupla.Y > highest.Y && P1kupla.X < highest.X)
1879                {
1880                    P1kupla.Velocity = new Vector(51.0, -59.0);
1881                }
1882                if (P1kupla != null && P1kupla.Y < highest.Y && P1kupla.X < highest.X)
1883                {
1884                    P1kupla.Velocity = new Vector(51.0, 59.0);
1885                }
1886            }
1887            if (P2kupla != null && P2kupla.Y < DownReuna.Y + 80)
1888            {
1889                P2kupla.Velocity = new Vector(-10, 500);
1890            }
1891            else
1892            {
1893                if (P2kupla != null && P2kupla.Y > highest.Y && P2kupla.X > highest.X - 27)
1894                {
1895                    P2kupla.Velocity = new Vector(-59.0, -51.0);
1896                }
1897                if (P2kupla != null && P2kupla.Y < highest.Y && P2kupla.X > highest.X - 27)
1898                {
1899                    P2kupla.Velocity = new Vector(-59.0, 51.0);
1900                }
1901                if (P2kupla != null && P2kupla.Y > highest.Y && P2kupla.X < highest.X - 27)
1902                {
1903                    P2kupla.Velocity = new Vector(59.0, -51.0);
1904                }
1905                if (P2kupla != null && P2kupla.Y < highest.Y && P2kupla.X < highest.X - 27)
1906                {
1907                    P2kupla.Velocity = new Vector(59.0, 51.0);
1908                }
1909            }
1910            if (P3kupla != null && P3kupla.Y < DownReuna.Y + 80)
1911            {
1912                P3kupla.Velocity = new Vector(5, 500);
1913            }
1914            else
1915            {
1916                if (P3kupla != null && P3kupla.Y > highest.Y && P3kupla.X > highest.X + 27)
1917                {
1918                    P3kupla.Velocity = new Vector(-56.0, -54.0);
1919                }
1920                if (P3kupla != null && P3kupla.Y < highest.Y && P3kupla.X > highest.X + 27)
1921                {
1922                    P3kupla.Velocity = new Vector(-56.0, 54.0);
1923                }
1924                if (P3kupla != null && P3kupla.Y > highest.Y && P3kupla.X < highest.X + 27)
1925                {
1926                    P3kupla.Velocity = new Vector(56.0, -54.0);
1927                }
1928                if (P3kupla != null && P3kupla.Y < highest.Y && P3kupla.X < highest.X + 27)
1929                {
1930                    P3kupla.Velocity = new Vector(56.0, 54.0);
1931                }
1932            }
1933            if (P4kupla != null && P4kupla.Y < DownReuna.Y + 80)
1934            {
1935                P4kupla.Velocity = new Vector(-5, 500);
1936            }
1937            else
1938            {
1939                if (P4kupla != null && P4kupla.Y > highest.Y && P4kupla.X > highest.X)
1940                {
1941                    P4kupla.Velocity = new Vector(-54.0, -56.0);
1942                }
1943                if (P4kupla != null && P4kupla.Y < highest.Y && P4kupla.X > highest.X)
1944                {
1945                    P4kupla.Velocity = new Vector(-54.0, 56.0);
1946                }
1947                if (P4kupla != null && P4kupla.Y > highest.Y && P4kupla.X < highest.X)
1948                {
1949                    P4kupla.Velocity = new Vector(54.0, -56.0);
1950                }
1951                if (P4kupla != null && P4kupla.Y < highest.Y && P4kupla.X < highest.X)
1952                {
1953                    P4kupla.Velocity = new Vector(54.0, 56.0);
1954                }
1955            }
1956        }
1957
1958        if (pelaajamaara == 3 && YP == true && PeliKäynnissä == true)
1959        {
1960            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
1961            {
1962                MediaPlayer.Stop();
1963                aikaLaskuri3.Start();
1964            }
1965        }
1966        else if (pelaajamaara == 3 && YP == false && PeliKäynnissä == true)
1967        {
1968
1969            if (pelaaja3.IsDestroyed() && pelaaja2.IsDestroyed())
1970            {
1971                pelaajan1pisteet.Value++;
1972                if (pelaajan1pisteet >= KPPisteraja)
1973                {
1974                    p1SaiVoiton = true;
1975                    jokuvoitti();
1976                }
1977                else seuraavaKentta();
1978
1979            }
1980            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed())
1981            {
1982                pelaajan3pisteet.Value++;
1983                if (pelaajan3pisteet >= KPPisteraja)
1984                {
1985                    p3SaiVoiton = true;
1986                    jokuvoitti();
1987                }
1988                else seuraavaKentta();
1989
1990            }
1991            if (pelaaja1.IsDestroyed() && pelaaja3.IsDestroyed())
1992            {
1993                pelaajan2pisteet.Value++;
1994                if (pelaajan2pisteet >= KPPisteraja)
1995                {
1996                    p2SaiVoiton = true;
1997                    jokuvoitti();
1998                }
1999                else seuraavaKentta();
2000            }
2001        }
2002        if (pelaajamaara == 4 && YP == true && PeliKäynnissä == true)
2003        {
2004            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed() && pelaaja4.IsDestroyed())
2005            {
2006                MediaPlayer.Stop();
2007                aikaLaskuri3.Start();
2008            }
2009        }
2010        else if (pelaajamaara == 4 && YP == false && PeliKäynnissä == true)
2011        {
2012            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
2013            {
2014                pelaajan4pisteet.Value++;
2015                if (pelaajan4pisteet >= KPPisteraja)
2016                {
2017                    p4SaiVoiton = true;
2018                    jokuvoitti();
2019                }
2020                else seuraavaKentta();
2021            }
2022            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja4.IsDestroyed())
2023            {
2024                pelaajan3pisteet.Value++;
2025                if (pelaajan3pisteet >= KPPisteraja)
2026                {
2027                    p3SaiVoiton = true;
2028                    jokuvoitti();
2029                }
2030                else seuraavaKentta();
2031            }
2032            if (pelaaja1.IsDestroyed() && pelaaja4.IsDestroyed() && pelaaja3.IsDestroyed())
2033            {
2034                pelaajan2pisteet.Value++;
2035                if (pelaajan2pisteet >= KPPisteraja)
2036                {
2037                    p2SaiVoiton = true;
2038                    jokuvoitti();
2039                }
2040                else seuraavaKentta();
2041            }
2042            if (pelaaja4.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
2043            {
2044                pelaajan1pisteet.Value++;
2045                if (pelaajan1pisteet >= KPPisteraja)
2046                {
2047                    p1SaiVoiton = true;
2048                    jokuvoitti();
2049                }
2050                else seuraavaKentta();
2051            }
2052        }
2053
2054        if (pelaajamaara == 2 && YP == true && PeliKäynnissä == true)
2055        {
2056            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed())
2057            {
2058                MediaPlayer.Stop();
2059                aikaLaskuri3.Start();
2060            }
2061        }
2062        else if (pelaajamaara == 2 && YP == false && PeliKäynnissä == true)
2063        {
2064            if (pelaaja2.IsDestroyed())
2065            {
2066                pelaajan1pisteet.Value++;
2067                if (pelaajan1pisteet >= KPPisteraja)
2068                {
2069                    p1SaiVoiton = true;
2070                    jokuvoitti();
2071                }
2072                else seuraavaKentta();
2073            }
2074
2075            if (pelaaja1.IsDestroyed())
2076            {
2077
2078                pelaajan2pisteet.Value++;
2079                if (pelaajan2pisteet >= KPPisteraja)
2080                {
2081                    p2SaiVoiton = true;
2082                    jokuvoitti();
2083                }
2084                else seuraavaKentta();
2085            }
2086        }
2087
2088        // Tämä pitää huolen siitä, että kun kamera menee ylöspäin, niin kameran
2089        // alapuolella olevat asiat tuhoutuvat.
2090        DownReuna.Y = Camera.Position.Y - 400;
2091        base.Update(time);
2092    }
2093}
Note: See TracBrowser for help on using the repository browser.