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

Revision 1257, 64.8 KB checked in by vilvaini, 10 years ago (diff)
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            lisaaNappaimetp1();
978            p1elamamenetys = false;
979            p1OnKuplassa = false;
980        }
981        if (kohde == pelaaja3)
982        {
983            lisaaPelaaja1(kupla.X, kupla.Y);
984            kupla.Destroy();
985            lisaaNappaimetp1();
986            p1elamamenetys = false;
987            p1OnKuplassa = false;
988        }
989        if (kohde == pelaaja4)
990        {
991            lisaaPelaaja1(kupla.X, kupla.Y);
992            kupla.Destroy();
993            lisaaNappaimetp1();
994            p1elamamenetys = false;
995            p1OnKuplassa = false;
996        }
997    }
998
999    void KasitteleKuplan2Tormays(PhysicsObject kupla, PhysicsObject kohde)
1000    {
1001        if (kohde == pelaaja1)
1002        {
1003            lisaaPelaaja2(kupla.X, kupla.Y);
1004            kupla.Destroy();
1005            lisaaNappaimetp2();
1006            p2elamamenetys = false;
1007            p2OnKuplassa = false;
1008        }
1009        if (kohde == pelaaja3)
1010        {
1011            lisaaPelaaja2(kupla.X, kupla.Y);
1012            kupla.Destroy();
1013            lisaaNappaimetp2();
1014            p2elamamenetys = false;
1015            p2OnKuplassa = false;
1016        }
1017        if (kohde == pelaaja4)
1018        {
1019            lisaaPelaaja2(kupla.X, kupla.Y);
1020            kupla.Destroy();
1021            lisaaNappaimetp2();
1022            p2elamamenetys = false;
1023            p2OnKuplassa = false;
1024        }
1025    }
1026
1027    void KasitteleKuplan3Tormays(PhysicsObject kupla, PhysicsObject kohde)
1028    {
1029        if (kohde == pelaaja2)
1030        {
1031            lisaaPelaaja3(kupla.X, kupla.Y);
1032            kupla.Destroy();
1033            lisaaNappaimetp3();
1034            p3elamamenetys = false;
1035            p3OnKuplassa = false;
1036        }
1037        if (kohde == pelaaja1)
1038        {
1039            lisaaPelaaja3(kupla.X, kupla.Y);
1040            kupla.Destroy();
1041            lisaaNappaimetp3();
1042            p3elamamenetys = false;
1043            p3OnKuplassa = false;
1044        }
1045        if (kohde == pelaaja4)
1046        {
1047            lisaaPelaaja3(kupla.X, kupla.Y);
1048            kupla.Destroy();
1049            lisaaNappaimetp3();
1050            p3elamamenetys = false;
1051            p3OnKuplassa = false;
1052        }
1053    }
1054
1055    void KasitteleKuplan4Tormays(PhysicsObject kupla, PhysicsObject kohde)
1056    {
1057        if (kohde == pelaaja2)
1058        {
1059            lisaaPelaaja4(kupla.X, kupla.Y);
1060            kupla.Destroy();
1061            lisaaNappaimetp4();
1062            p4elamamenetys = false;
1063            p4OnKuplassa = false;
1064        }
1065        if (kohde == pelaaja3)
1066        {
1067            lisaaPelaaja4(kupla.X, kupla.Y);
1068            kupla.Destroy();
1069            lisaaNappaimetp4();
1070            p4elamamenetys = false;
1071            p4OnKuplassa = false;
1072        }
1073        if (kohde == pelaaja1)
1074        {
1075            lisaaPelaaja4(kupla.X, kupla.Y);
1076            kupla.Destroy();
1077            lisaaNappaimetp4();
1078            p4elamamenetys = false;
1079            p4OnKuplassa = false;
1080        }
1081    }
1082
1083    void TasonTormays(PhysicsObject taso, PhysicsObject kohde)
1084    {
1085        if (kohde == DownReuna)
1086        {
1087            taso.Destroy();
1088        }
1089
1090    }
1091
1092    void Pelaaja1Osui(PhysicsObject p1, PhysicsObject kohde)
1093    {
1094        if (kohde == DownReuna)
1095        {
1096            if (YP == true && p1elamamenetys == false)
1097            {
1098                p1elamamenetys = true;
1099                pelaajan1elamat.Value--;
1100                if (pelaajan1elamat > 0)
1101                    KuplaSyntymä1.Start();
1102            }
1103            p1.Destroy();
1104            ControllerOne.Vibrate(1, 1, 0.0, 0.0, 0.5);
1105        }
1106
1107        if (kohde.Tag.ToString() == "vihollinen")
1108        {
1109            if (YP == true && p1elamamenetys == false)
1110            {
1111                p1elamamenetys = true;
1112                pelaajan1elamat.Value--;
1113                if (pelaajan1elamat > 0)
1114                    KuplaSyntymä1.Start();
1115            }
1116            kohde.Destroy();
1117            p1.Destroy();
1118            ControllerOne.Vibrate(1, 1, 0.0, 0.0, 0.5);
1119
1120        }
1121
1122    }
1123
1124    void Pelaaja2Osui(PhysicsObject p2, PhysicsObject kohde)
1125    {
1126        if (kohde == DownReuna)
1127        {
1128            p2.Destroy();
1129            ControllerTwo.Vibrate(1, 1, 0.0, 0.0, 0.5);
1130            if (YP == true && p2elamamenetys == false)
1131            {
1132                p2elamamenetys = true;
1133                pelaajan2elamat.Value--;
1134                if (pelaajan2elamat > 0)
1135                    KuplaSyntymä2.Start();
1136            }
1137        }
1138
1139        if (kohde.Tag.ToString() == "vihollinen")
1140        {
1141            kohde.Destroy();
1142            p2.Destroy();
1143            ControllerTwo.Vibrate(1, 1, 0.0, 0.0, 0.5);
1144            if (YP == true && p2elamamenetys == false)
1145            {
1146                p2elamamenetys = true;
1147                pelaajan2elamat.Value--;
1148                if (pelaajan2elamat > 0)
1149                    KuplaSyntymä2.Start();
1150            }
1151        }
1152
1153    }
1154
1155    void Pelaaja3Osui(PhysicsObject p3, PhysicsObject kohde)
1156    {
1157        if (kohde == DownReuna)
1158        {
1159            p3.Destroy();
1160            ControllerThree.Vibrate(1, 1, 0.0, 0.0, 0.5);
1161            if (YP == true && p3elamamenetys == false)
1162            {
1163                p3elamamenetys = true;
1164                pelaajan3elamat.Value--;
1165                if (pelaajan3elamat > 0)
1166                    KuplaSyntymä3.Start();
1167            }
1168        }
1169
1170        if (kohde.Tag.ToString() == "vihollinen")
1171        {
1172            kohde.Destroy();
1173            p3.Destroy();
1174            ControllerThree.Vibrate(1, 1, 0.0, 0.0, 0.5);
1175            if (YP == true && p3elamamenetys == false)
1176            {
1177                p3elamamenetys = true;
1178                pelaajan3elamat.Value--;
1179                if (pelaajan3elamat > 0)
1180                    KuplaSyntymä3.Start();
1181            }
1182        }
1183
1184    }
1185
1186    void Pelaaja4Osui(PhysicsObject p4, PhysicsObject kohde)
1187    {
1188        if (kohde == DownReuna)
1189        {
1190            if (YP == true && p4elamamenetys == false)
1191            {
1192                p4elamamenetys = true;
1193                pelaajan4elamat.Value--;
1194                if (pelaajan4elamat > 0)
1195                    KuplaSyntymä4.Start();
1196            }
1197            p4.Destroy();
1198            ControllerFour.Vibrate(1, 1, 0.0, 0.0, 0.5);
1199        }
1200
1201        if (kohde.Tag.ToString() == "vihollinen")
1202        {
1203            if (YP == true && p4elamamenetys == false)
1204            {
1205                p4elamamenetys = true;
1206                pelaajan4elamat.Value--;
1207                if (pelaajan4elamat > 0)
1208                    KuplaSyntymä4.Start();
1209            }
1210            kohde.Destroy();
1211            p4.Destroy();
1212            ControllerFour.Vibrate(1, 1, 0.0, 0.0, 0.5);
1213        }
1214
1215    }
1216
1217    void VihollisKaanty(PhysicsObject vihulainen, PhysicsObject kohde)
1218    {
1219        if (kohde == vasenReuna)
1220        {
1221            vihulainen.Velocity = new Vector(220.0, 0.0);
1222        }
1223        if (kohde == oikeaReuna)
1224        {
1225            vihulainen.Velocity = new Vector(-220.0, 0.0);
1226        }
1227
1228    }
1229
1230    void Nappainohje()
1231    {
1232        MessageDisplay.Add("Katso ohjeet valikosta");
1233    }
1234
1235    void luoKentta()
1236    {
1237        lisaaTaso(RandomGen.NextDouble(Level.Left + 50, Level.Right - 50), Level.Bottom + 100, 150);
1238
1239        mittari = new TextDisplay();
1240        Add(mittari);
1241
1242        TeeTasot();
1243        vihollistiheytys = 0;
1244        viholliskorkeus = 0;
1245        for (int v = 0; v < 55; v++)
1246        {
1247            viholliskorkeus = viholliskorkeus + 600 - vihollistiheytys;
1248            LisaaVihollinen(RandomGen.NextDouble(Level.Left, Level.Right), Level.Bottom + viholliskorkeus + RandomGen.NextDouble(0.0, 40.0));
1249            vihollistiheytys = vihollistiheytys + 10;
1250        }
1251
1252        LisaaDownReuna();
1253
1254        Level.Background.CreateGradient(Color.SkyBlue, Color.DarkBlue);
1255        lisaaPelaaja1(0, Level.Bottom + 50);
1256        lisaaPelaaja2(100, Level.Bottom + 50);
1257        Teeaikalaskurit();
1258        TeeKuplaSyntymälaskurit();
1259
1260        Level.Width = 1024;
1261        Level.Height = 30000;
1262
1263
1264        if (pelaajamaara == 2)
1265        {
1266            Ohjeet2pelaajaa();
1267        }
1268        if (pelaajamaara == 3)
1269        {
1270            Ohjeet3pelaajaa();
1271        }
1272        if (pelaajamaara == 4)
1273        {
1274            Ohjeet3pelaajaa();
1275        }
1276        aloituspaikka = pelaaja1.Position;
1277    }
1278
1279    private void TeeTasot()
1280    {
1281        tasokorkeus = 100;
1282        tasoleveys = 150;
1283        for (int i = 0; i < 50; i++)
1284        {
1285            lisaaTaso(RandomGen.NextDouble(Level.Left + 50, -250), Level.Bottom + tasokorkeus + RandomGen.NextDouble(10.0, 15.0), tasoleveys);
1286            tasokorkeus = tasokorkeus + 170;
1287            tasoleveys = tasoleveys - 2;
1288        }
1289
1290        tasokorkeus = 100;
1291        tasoleveys = 150;
1292        for (int i = 0; i < 145; i++)
1293        {
1294            lisaaTaso(RandomGen.NextDouble(250, Level.Right - 50), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1295            tasokorkeus = tasokorkeus + 170;
1296            tasoleveys = tasoleveys - 1;
1297        }
1298
1299        tasokorkeus = 150;
1300        tasoleveys = 150;
1301        for (int i = 0; i < 9; i++)
1302        {
1303            lisaaTaso(RandomGen.NextDouble(250, -250), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1304            tasokorkeus = tasokorkeus + 170;
1305            tasoleveys = tasoleveys - 1;
1306        }
1307
1308        tasokorkeus = 1700;
1309        tasoleveys = 150;
1310        for (int i = 0; i < 10; i++)
1311        {
1312            lisaaTaso(RandomGen.NextDouble(250, -250), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1313            tasokorkeus = tasokorkeus + 340;
1314            tasoleveys = tasoleveys - 1;
1315        }
1316
1317        tasokorkeus = 1870;
1318        tasoleveys = 140;
1319        for (int i = 0; i < 6; i++)
1320        {
1321            lisaaLiikkuvaTasoVer(RandomGen.NextDouble(250, -250), Level.Bottom + tasokorkeus + RandomGen.NextDouble(0.0, 5.0), tasoleveys);
1322            tasokorkeus = tasokorkeus + 340;
1323            tasoleveys = tasoleveys - 1;
1324        }
1325
1326        tasokorkeus = 8550;
1327        tasoleveys = 110;
1328        for (int h = 0; h < 75; h++)
1329        {
1330            lisaaRikkoutuvaTaso(RandomGen.NextDouble(200, -200), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
1331            tasoleveys = tasoleveys - 1;
1332            tasokorkeus = tasokorkeus + 170;
1333        }
1334
1335        tasokorkeus = 3700;
1336        tasoleveys = 130;
1337        for (int h = 0; h < 28; h++)
1338        {
1339            lisaaLiikkuvaTasoVer(RandomGen.NextDouble(200, -200), Level.Bottom + tasokorkeus + RandomGen.NextDouble(5.0, 15.0), tasoleveys);
1340            tasoleveys = tasoleveys - 1;
1341            tasokorkeus = tasokorkeus + 170;
1342        }
1343    }
1344
1345    void Teeaikalaskurit()
1346    {
1347        aikaLaskuri = new Timer();
1348        aikaLaskuri.Interval = 2;
1349        aikaLaskuri.Trigger += aikaLoppui;
1350        Add(aikaLaskuri);
1351        aikaLaskuri.Start();
1352
1353        aikaLaskuri2 = new Timer();
1354        aikaLaskuri2.Interval = 5;
1355        aikaLaskuri2.Trigger += aikaLoppui2;
1356        Add(aikaLaskuri2);
1357
1358        aikaLaskuri3 = new Timer();
1359        aikaLaskuri3.Interval = 2;
1360        aikaLaskuri3.Trigger += aikaLoppui3;
1361        Add(aikaLaskuri3);
1362    }
1363
1364    void TeeKuplaSyntymälaskurit()
1365    {
1366        KuplaSyntymä1 = new Timer();
1367        KuplaSyntymä1.LimitTimes(1);
1368        KuplaSyntymä1.Interval = Kuplaaika;
1369        KuplaSyntymä1.Trigger += KuplaSyntymä1aika;
1370        Add(KuplaSyntymä1);
1371
1372        KuplaSyntymä2 = new Timer();
1373        KuplaSyntymä2.LimitTimes(1);
1374        KuplaSyntymä2.Interval = Kuplaaika;
1375        KuplaSyntymä2.Trigger += KuplaSyntymä2aika;
1376        Add(KuplaSyntymä2);
1377
1378        KuplaSyntymä3 = new Timer();
1379        KuplaSyntymä3.LimitTimes(1);
1380        KuplaSyntymä3.Interval = Kuplaaika;
1381        KuplaSyntymä3.Trigger += KuplaSyntymä3aika;
1382        Add(KuplaSyntymä3);
1383
1384        KuplaSyntymä4 = new Timer();
1385        KuplaSyntymä4.LimitTimes(1);
1386        KuplaSyntymä4.Interval = Kuplaaika;
1387        KuplaSyntymä4.Trigger += KuplaSyntymä4aika;
1388        Add(KuplaSyntymä4);
1389    }
1390
1391    private void Ohjeet2pelaajaa()
1392    {
1393        Ohje2p = PhysicsObject.CreateStaticObject(800, 200);
1394        Ohje2p.X = 0;
1395        Ohje2p.Y = Level.Bottom + 400;
1396        Ohje2p.Image = LoadImage("Ohje2p");
1397        Ohje2p.IgnoresCollisionResponse = true;
1398        Ohje2p.IgnoresPhysicsLogics = true;
1399        if (YP == false)
1400        {
1401            Add(Ohje2p);
1402        }
1403    }
1404
1405    private void Ohjeet3pelaajaa()
1406    {
1407        Ohje3p = PhysicsObject.CreateStaticObject(800, 200);
1408        Ohje3p.X = 0;
1409        Ohje3p.Y = Level.Bottom + 400;
1410        Ohje3p.Image = LoadImage("Ohje3p");
1411        Ohje3p.IgnoresCollisionResponse = true;
1412        Ohje3p.IgnoresPhysicsLogics = true;
1413        if (YP == false)
1414        {
1415            Add(Ohje3p);
1416        }
1417    }
1418
1419    void lisaaTaso(double x, double y, double leveys)
1420    {
1421        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 30);
1422        taso.X = x;
1423        taso.Y = y;
1424        taso.Image = LoadImage("Smile Jump(laatta)");
1425        AddCollisionHandler(taso, TasonTormays);
1426        Add(taso);
1427    }
1428
1429    void lisaaRikkoutuvaTaso(double x, double y, double leveys)
1430    {
1431        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 30);
1432        taso.X = x;
1433        taso.Y = y;
1434        taso.Image = LoadImage("Smile Jump(rikkoutuva laatta)");
1435        AddCollisionHandler(taso, TasonTormays);
1436        taso.Tag = "Rikkoutuva Taso";
1437        Add(taso);
1438    }
1439
1440    void lisaaLiikkuvaTasoVer(double äks, double yy, double leveys)
1441    {
1442        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, 30);
1443        taso.X = äks;
1444        taso.Y = yy;
1445        taso.Image = LoadImage("Smile Jump(liikkuva laatta)");
1446        AddCollisionHandler(taso, TasonTormays);
1447        Add(taso);
1448
1449        PathFollowerBrain polkuAivot = new PathFollowerBrain();
1450        polkuAivot.Active = true;
1451
1452        List<Vector> polku = new List<Vector>();
1453
1454        polku.Add(new Vector(300, yy));
1455        polku.Add(new Vector(-300, yy));
1456        polkuAivot.Path = polku;
1457        polkuAivot.Speed = 100;
1458        taso.Brain = polkuAivot;
1459    }
1460    void lisaaRikkimennytTaso(double x, double y, double leveys)
1461    {
1462
1463        PhysicsObject taso = new PhysicsObject(leveys / 150 * 24, 30);
1464        taso.Mass = 10;
1465        taso.X = x - (leveys / 150 * 65);
1466        taso.Y = y;
1467        taso.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 1)");
1468        taso.Velocity = new Vector(-20.0, 0.0);
1469        AddCollisionHandler(taso, TasonTormays);
1470        Add(taso);
1471
1472        PhysicsObject taso1 = new PhysicsObject(leveys / 150 * 80, 30);
1473        taso1.Mass = 10;
1474        taso1.X = x - (leveys / 150 * 25);
1475        taso1.Y = y;
1476        taso1.Velocity = new Vector(-10.0, 0.0);
1477        taso1.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 2)");
1478        AddCollisionHandler(taso1, TasonTormays);
1479        Add(taso1);
1480
1481
1482        PhysicsObject taso2 = new PhysicsObject(leveys / 150 * 55, 30);
1483        taso2.Mass = 10;
1484        taso2.X = x + (leveys / 150 * 22);
1485        taso2.Y = y;
1486        taso2.Velocity = new Vector(10.0, 0.0);
1487        taso2.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 3)");
1488        AddCollisionHandler(taso2, TasonTormays);
1489        Add(taso2);
1490
1491        PhysicsObject taso3 = new PhysicsObject(leveys / 150 * 35, 30);
1492        taso3.Mass = 10;
1493        taso3.X = x + (leveys / 150 * 60);
1494        taso3.Y = y;
1495        taso3.Velocity = new Vector(20.0, 0.0);
1496        taso3.Image = LoadImage("Smile Jump(rikkoutuva laatta osa 4)");
1497        AddCollisionHandler(taso3, TasonTormays);
1498        Add(taso3);
1499
1500    }
1501
1502    void RikkoutuvaTaso(PhysicsObject collidingObject, PhysicsObject otherObject)
1503    {
1504        if (otherObject.Tag.ToString() == "Rikkoutuva Taso")
1505        {
1506            otherObject.Destroy();
1507            //TeeEfektit(otherObject.X, otherObject.Y, 15);
1508            lisaaRikkimennytTaso(otherObject.X, otherObject.Y, otherObject.Width);
1509        }
1510    }
1511
1512    void lisaaPelaaja1(double x, double y)
1513    {
1514        pelaaja1 = new PlatformCharacter(40, 40);
1515        pelaaja1.Mass = 4.0;
1516        pelaaja1.Shape = Shapes.Circle;
1517        pelaaja1.Image = LoadImage("smile jump(keltainen pelaaja) (2)");
1518        pelaaja1.X = x;
1519        pelaaja1.Y = y;
1520
1521        AddCollisionHandler(pelaaja1, RikkoutuvaTaso);
1522        AddCollisionHandler(pelaaja1, KasittelePallonTormays);
1523
1524        Add(pelaaja1);
1525    }
1526
1527    void lisaaPelaaja2(double x, double y)
1528    {
1529        pelaaja2 = new PlatformCharacter(40, 40);
1530        pelaaja2.Mass = 4.0;
1531        pelaaja2.Shape = Shapes.Circle;
1532        pelaaja2.Image = LoadImage("smile jump (vihreä pelaaja) (2)");
1533        pelaaja2.X = x;
1534        pelaaja2.Y = y;
1535
1536        AddCollisionHandler(pelaaja2, RikkoutuvaTaso);
1537        AddCollisionHandler(pelaaja2, KasittelePallonTormays);
1538
1539        Add(pelaaja2);
1540    }
1541
1542    void lisaaPelaaja3(double x, double y)
1543    {
1544        pelaaja3 = new PlatformCharacter(40, 40);
1545        pelaaja3.Mass = 4.0;
1546        pelaaja3.Shape = Shapes.Circle;
1547        pelaaja3.Image = LoadImage("smile jump(sininen pelaaja)");
1548        pelaaja3.X = x;
1549        pelaaja3.Y = y;
1550
1551        AddCollisionHandler(pelaaja3, RikkoutuvaTaso);
1552        AddCollisionHandler(pelaaja3, KasittelePallonTormays);
1553
1554        Add(pelaaja3);
1555    }
1556
1557    void lisaaPelaaja4(double x, double y)
1558    {
1559        pelaaja4 = new PlatformCharacter(40, 40);
1560        pelaaja4.Mass = 4.0;
1561        pelaaja4.Shape = Shapes.Circle;
1562        pelaaja4.Image = LoadImage("smile jump(pinkki pelaaja)");
1563        pelaaja4.X = x;
1564        pelaaja4.Y = y;
1565
1566        AddCollisionHandler(pelaaja4, RikkoutuvaTaso);
1567        AddCollisionHandler(pelaaja4, KasittelePallonTormays);
1568
1569        Add(pelaaja4);
1570    }
1571
1572    void LisaaVihollinen(double x, double y)
1573    {
1574        PhysicsObject vihollinen = new PhysicsObject(60, 60);
1575        vihollinen.Image = LoadImage("smile jump(vihollinen) (2)");
1576        vihollinen.Tag = "vihollinen";
1577        vihollinen.Shape = Shapes.Circle;
1578        vihollinen.X = x;
1579        vihollinen.Y = y;
1580        vihollinen.IgnoresCollisionResponse = true;
1581        vihollinen.IgnoresPhysicsLogics = true;
1582        vihollinen.Velocity = new Vector(220.0, 0.0);
1583        Add(vihollinen);
1584
1585        AddCollisionHandler(vihollinen, VihollisKaanty);
1586    }
1587
1588    private void aikaLoppui(Timer sender)
1589    {
1590        if (pelaajamaara == 2)
1591        {
1592            Ohje2p.Destroy();
1593        }
1594        AddCollisionHandler(pelaaja1, Pelaaja1Osui);
1595        AddCollisionHandler(pelaaja2, Pelaaja2Osui);
1596        if (pelaajamaara == 3)
1597        {
1598            AddCollisionHandler(pelaaja3, Pelaaja3Osui);
1599            Ohje3p.Destroy();
1600        }
1601        if (pelaajamaara == 4)
1602        {
1603            AddCollisionHandler(pelaaja3, Pelaaja3Osui);
1604            AddCollisionHandler(pelaaja4, Pelaaja4Osui);
1605            Ohje3p.Destroy();
1606        }
1607    }
1608    private void aikaLoppui2(Timer sender)
1609    {
1610        voittaja.Destroy();
1611        p1SaiVoiton = false;
1612        p2SaiVoiton = false;
1613        p3SaiVoiton = false;
1614        p4SaiVoiton = false;
1615        MediaPlayer.Play("Menu");
1616        Alkukentta();
1617
1618    }
1619
1620    private void aikaLoppui3(Timer sender)
1621    {
1622        seuraavaKentta();
1623        MediaPlayer.Play("Menu");
1624        Parhaatpisteetkentta();
1625    }
1626
1627    private void KuplaSyntymä1aika(Timer sender)
1628    {
1629        if (pelaajan1elamat > 0)
1630            lisaaPelaaja1kupla(Level.Left, korkein + 20);
1631    }
1632
1633    private void KuplaSyntymä2aika(Timer sender)
1634    {
1635        if (pelaajan2elamat > 0)
1636            lisaaPelaaja2kupla(Level.Left, korkein - 20);
1637    }
1638
1639    private void KuplaSyntymä3aika(Timer sender)
1640    {
1641        if (pelaajan3elamat > 0)
1642            lisaaPelaaja3kupla(Level.Right, korkein + 20);
1643    }
1644
1645    private void KuplaSyntymä4aika(Timer sender)
1646    {
1647        if (pelaajan4elamat > 0)
1648            lisaaPelaaja4kupla(Level.Right, korkein - 20);
1649    }
1650
1651    void lisaaNappaimetp1()
1652    {
1653        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "poistu");
1654
1655        Keyboard.Listen(Key.Left, ButtonState.Down, LiikuLäski, null, pelaaja1, -nopeus);
1656        Keyboard.Listen(Key.Right, ButtonState.Down, LiikuLäski, null, pelaaja1, nopeus);
1657        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
1658
1659        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1660
1661        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja1, -nopeus);
1662        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja1, nopeus);
1663        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
1664    }
1665
1666    void lisaaNappaimetp2()
1667    {
1668        Keyboard.Listen(Key.A, ButtonState.Down, LiikuLäski, null, pelaaja2, -nopeus);
1669        Keyboard.Listen(Key.D, ButtonState.Down, LiikuLäski, null, pelaaja2, nopeus);
1670        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja2, hyppyVoima);
1671
1672        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1673
1674        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja2, -nopeus);
1675        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja2, nopeus);
1676        ControllerTwo.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja2, hyppyVoima);
1677    }
1678
1679    void lisaaNappaimetp3()
1680    {
1681        Keyboard.Listen(Key.J, ButtonState.Down, LiikuLäski, null, pelaaja3, -nopeus);
1682        Keyboard.Listen(Key.L, ButtonState.Down, LiikuLäski, null, pelaaja3, nopeus);
1683        Keyboard.Listen(Key.I, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja3, hyppyVoima);
1684
1685        ControllerThree.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1686
1687        ControllerThree.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja3, -nopeus);
1688        ControllerThree.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja3, nopeus);
1689        ControllerThree.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja3, hyppyVoima);
1690    }
1691
1692    void lisaaNappaimetp4()
1693    {
1694        ControllerFour.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
1695
1696        ControllerFour.Listen(Button.DPadLeft, ButtonState.Down, LiikuLäski, null, pelaaja4, -nopeus);
1697        ControllerFour.Listen(Button.DPadRight, ButtonState.Down, LiikuLäski, null, pelaaja4, nopeus);
1698        ControllerFour.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja4, hyppyVoima);
1699    }
1700
1701    void liikuta(PlatformCharacter hahmo, double nopeus)
1702    {
1703        hahmo.Walk(nopeus);
1704    }
1705
1706    void hyppaa(PlatformCharacter hahmo, double voima)
1707    {
1708        hahmo.Jump(voima);
1709    }
1710
1711    /// <summary>
1712    /// DownReuna tuhoaa pelaajat ja tasot, jotka ovat
1713    /// ruudun alapuolella.
1714    /// </summary>
1715    void LisaaDownReuna()
1716    {
1717        DownReuna = new PhysicsObject(2000, 100);
1718        DownReuna.X = 0;
1719        DownReuna.Y = Level.Bottom + 50;
1720        DownReuna.IgnoresCollisionResponse = true;
1721        DownReuna.IgnoresGravity = true;
1722        Add(DownReuna);
1723    }
1724    void Kahdenpelaajanpeli()
1725    {
1726        pelaajamaara = 2;
1727        Pelimodikentta();
1728    }
1729
1730    void KahdenpelaajanYP()
1731    {
1732        pelaajamaara = 2;
1733        YP = true;
1734        seuraavaKentta();
1735        MediaPlayer.Play("E Api");
1736    }
1737
1738    void KahdenpelaajanKP()
1739    {
1740        pelaajamaara = 2;
1741        YP = false;
1742        seuraavaKentta();
1743        MediaPlayer.Play("E Api");
1744    }
1745
1746    void Kolmenpelaajanpeli()
1747    {
1748        pelaajamaara = 3;
1749        Pelimodikentta();
1750    }
1751
1752    void KolmenpelaajanYP()
1753    {
1754        pelaajamaara = 3;
1755        YP = true;
1756        seuraavaKentta();
1757        MediaPlayer.Play("E Api");
1758    }
1759
1760    void KolmenpelaajanKP()
1761    {
1762        pelaajamaara = 3;
1763        YP = false;
1764        seuraavaKentta();
1765        MediaPlayer.Play("E Api");
1766    }
1767
1768    void Neljanpelaajanpeli()
1769    {
1770        pelaajamaara = 4;
1771        Pelimodikentta();
1772    }
1773
1774    void NeljanpelaajanYP()
1775    {
1776        pelaajamaara = 4;
1777        YP = true;
1778        seuraavaKentta();
1779        MediaPlayer.Play("E Api");
1780    }
1781
1782    void NeljanpelaajanKP()
1783    {
1784        pelaajamaara = 4;
1785        YP = false;
1786        seuraavaKentta();
1787        MediaPlayer.Play("E Api");
1788    }
1789
1790    void jokuvoitti()
1791    {
1792        seuraavaKentta();
1793        ClearAll();
1794        pelaajamaara = 0;
1795        voitto();
1796        aikaLaskuri2.Start();
1797    }
1798
1799    void NaytaKorkeus(Timer sender)
1800    {
1801        korkeus = Math.Round((aloituspaikka.Y + korkein + 29932), 0);
1802        mittari.Text = "Korkeus: " + korkeus;
1803        mittari.X = 0;
1804        mittari.Y = Screen.Top - 100;
1805    }
1806
1807    void LiikuLäski(PlatformCharacter SJpelaaja, double nopeus)
1808    {
1809        SJpelaaja.Push(new Vector(nopeus, 0));
1810        //SJpelaaja.Velocity += Vector.FromLengthAndAngle(nopeus, SJpelaaja.Angle);
1811    }
1812
1813    protected override void Update(Time time)
1814    {
1815        PlatformCharacter highest = pelaaja1;
1816        if (pelaaja2 != null && pelaaja2.Y > highest.Y) highest = pelaaja2;
1817        if (pelaaja3 != null && pelaaja3.Y > highest.Y) highest = pelaaja3;
1818        if (pelaaja4 != null && pelaaja4.Y > highest.Y) highest = pelaaja4;
1819
1820        korkein = highest.Y;
1821
1822        Camera.Follow(highest);
1823        if (YP == true)
1824        {
1825            if (P1kupla != null && P1kupla.Y < DownReuna.Y + 80)
1826            {
1827                P1kupla.Velocity = new Vector(10, 500);
1828            }
1829            else
1830            {
1831                if (P1kupla != null && P1kupla.Y > highest.Y && P1kupla.X > highest.X)
1832                {
1833                    P1kupla.Velocity = new Vector(-51.0, -59.0);
1834                }
1835                if (P1kupla != null && P1kupla.Y < highest.Y && P1kupla.X > highest.X)
1836                {
1837                    P1kupla.Velocity = new Vector(-51.0, 59.0);
1838                }
1839                if (P1kupla != null && P1kupla.Y > highest.Y && P1kupla.X < highest.X)
1840                {
1841                    P1kupla.Velocity = new Vector(51.0, -59.0);
1842                }
1843                if (P1kupla != null && P1kupla.Y < highest.Y && P1kupla.X < highest.X)
1844                {
1845                    P1kupla.Velocity = new Vector(51.0, 59.0);
1846                }
1847            }
1848            if (P2kupla != null && P2kupla.Y < DownReuna.Y + 80)
1849            {
1850                P2kupla.Velocity = new Vector(-10, 500);
1851            }
1852            else
1853            {
1854                if (P2kupla != null && P2kupla.Y > highest.Y && P2kupla.X > highest.X - 27)
1855                {
1856                    P2kupla.Velocity = new Vector(-59.0, -51.0);
1857                }
1858                if (P2kupla != null && P2kupla.Y < highest.Y && P2kupla.X > highest.X - 27)
1859                {
1860                    P2kupla.Velocity = new Vector(-59.0, 51.0);
1861                }
1862                if (P2kupla != null && P2kupla.Y > highest.Y && P2kupla.X < highest.X - 27)
1863                {
1864                    P2kupla.Velocity = new Vector(59.0, -51.0);
1865                }
1866                if (P2kupla != null && P2kupla.Y < highest.Y && P2kupla.X < highest.X - 27)
1867                {
1868                    P2kupla.Velocity = new Vector(59.0, 51.0);
1869                }
1870            }
1871            if (P3kupla != null && P3kupla.Y < DownReuna.Y + 80)
1872            {
1873                P3kupla.Velocity = new Vector(5, 500);
1874            }
1875            else
1876            {
1877                if (P3kupla != null && P3kupla.Y > highest.Y && P3kupla.X > highest.X + 27)
1878                {
1879                    P3kupla.Velocity = new Vector(-56.0, -54.0);
1880                }
1881                if (P3kupla != null && P3kupla.Y < highest.Y && P3kupla.X > highest.X + 27)
1882                {
1883                    P3kupla.Velocity = new Vector(-56.0, 54.0);
1884                }
1885                if (P3kupla != null && P3kupla.Y > highest.Y && P3kupla.X < highest.X + 27)
1886                {
1887                    P3kupla.Velocity = new Vector(56.0, -54.0);
1888                }
1889                if (P3kupla != null && P3kupla.Y < highest.Y && P3kupla.X < highest.X + 27)
1890                {
1891                    P3kupla.Velocity = new Vector(56.0, 54.0);
1892                }
1893            }
1894            if (P4kupla != null && P4kupla.Y < DownReuna.Y + 80)
1895            {
1896                P4kupla.Velocity = new Vector(-5, 500);
1897            }
1898            else
1899            {
1900                if (P4kupla != null && P4kupla.Y > highest.Y && P4kupla.X > highest.X)
1901                {
1902                    P4kupla.Velocity = new Vector(-54.0, -56.0);
1903                }
1904                if (P4kupla != null && P4kupla.Y < highest.Y && P4kupla.X > highest.X)
1905                {
1906                    P4kupla.Velocity = new Vector(-54.0, 56.0);
1907                }
1908                if (P4kupla != null && P4kupla.Y > highest.Y && P4kupla.X < highest.X)
1909                {
1910                    P4kupla.Velocity = new Vector(54.0, -56.0);
1911                }
1912                if (P4kupla != null && P4kupla.Y < highest.Y && P4kupla.X < highest.X)
1913                {
1914                    P4kupla.Velocity = new Vector(54.0, 56.0);
1915                }
1916            }
1917        }
1918
1919        if (pelaajamaara == 3 && YP == true && PeliKäynnissä == true)
1920        {
1921            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
1922            {
1923                MediaPlayer.Stop();
1924                aikaLaskuri3.Start();
1925            }
1926        }
1927        else if (pelaajamaara == 3 && YP == false && PeliKäynnissä == true)
1928        {
1929
1930            if (pelaaja3.IsDestroyed() && pelaaja2.IsDestroyed())
1931            {
1932                pelaajan1pisteet.Value++;
1933                if (pelaajan1pisteet >= KPPisteraja)
1934                {
1935                    p1SaiVoiton = true;
1936                    jokuvoitti();
1937                }
1938                else seuraavaKentta();
1939
1940            }
1941            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed())
1942            {
1943                pelaajan3pisteet.Value++;
1944                if (pelaajan3pisteet >= KPPisteraja)
1945                {
1946                    p3SaiVoiton = true;
1947                    jokuvoitti();
1948                }
1949                else seuraavaKentta();
1950
1951            }
1952            if (pelaaja1.IsDestroyed() && pelaaja3.IsDestroyed())
1953            {
1954                pelaajan2pisteet.Value++;
1955                if (pelaajan2pisteet >= KPPisteraja)
1956                {
1957                    p2SaiVoiton = true;
1958                    jokuvoitti();
1959                }
1960                else seuraavaKentta();
1961            }
1962        }
1963        if (pelaajamaara == 4 && YP == true && PeliKäynnissä == true)
1964        {
1965            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed() && pelaaja4.IsDestroyed())
1966            {
1967                MediaPlayer.Stop();
1968                aikaLaskuri3.Start();
1969            }
1970        }
1971        else if (pelaajamaara == 4 && YP == false && PeliKäynnissä == true)
1972        {
1973            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
1974            {
1975                pelaajan4pisteet.Value++;
1976                if (pelaajan4pisteet >= KPPisteraja)
1977                {
1978                    p4SaiVoiton = true;
1979                    jokuvoitti();
1980                }
1981                else seuraavaKentta();
1982            }
1983            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja4.IsDestroyed())
1984            {
1985                pelaajan3pisteet.Value++;
1986                if (pelaajan3pisteet >= KPPisteraja)
1987                {
1988                    p3SaiVoiton = true;
1989                    jokuvoitti();
1990                }
1991                else seuraavaKentta();
1992            }
1993            if (pelaaja1.IsDestroyed() && pelaaja4.IsDestroyed() && pelaaja3.IsDestroyed())
1994            {
1995                pelaajan2pisteet.Value++;
1996                if (pelaajan2pisteet >= KPPisteraja)
1997                {
1998                    p2SaiVoiton = true;
1999                    jokuvoitti();
2000                }
2001                else seuraavaKentta();
2002            }
2003            if (pelaaja4.IsDestroyed() && pelaaja2.IsDestroyed() && pelaaja3.IsDestroyed())
2004            {
2005                pelaajan1pisteet.Value++;
2006                if (pelaajan1pisteet >= KPPisteraja)
2007                {
2008                    p1SaiVoiton = true;
2009                    jokuvoitti();
2010                }
2011                else seuraavaKentta();
2012            }
2013        }
2014
2015        if (pelaajamaara == 2 && YP == true && PeliKäynnissä == true)
2016        {
2017            if (pelaaja1.IsDestroyed() && pelaaja2.IsDestroyed())
2018            {
2019                MediaPlayer.Stop();
2020                aikaLaskuri3.Start();
2021            }
2022        }
2023        else if (pelaajamaara == 2 && YP == false && PeliKäynnissä == true)
2024        {
2025            if (pelaaja2.IsDestroyed())
2026            {
2027                pelaajan1pisteet.Value++;
2028                if (pelaajan1pisteet >= KPPisteraja)
2029                {
2030                    p1SaiVoiton = true;
2031                    jokuvoitti();
2032                }
2033                else seuraavaKentta();
2034            }
2035
2036            if (pelaaja1.IsDestroyed())
2037            {
2038
2039                pelaajan2pisteet.Value++;
2040                if (pelaajan2pisteet >= KPPisteraja)
2041                {
2042                    p2SaiVoiton = true;
2043                    jokuvoitti();
2044                }
2045                else seuraavaKentta();
2046            }
2047        }
2048
2049        // Tämä pitää huolen siitä, että kun kamera menee ylöspäin, niin kameran
2050        // alapuolella olevat asiat tuhoutuvat.
2051        DownReuna.Y = Camera.Position.Y - 400;
2052        base.Update(time);
2053    }
2054}
Note: See TracBrowser for help on using the repository browser.