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

Revision 1617, 65.8 KB checked in by vilvaini, 9 years ago (diff)

Bugikorjaus. Nyt Smile Jumpin pitäisi toimia myös versiossa 2.4.2 ja sitä aikaisemmissa versioissa.

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