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

Revision 1255, 64.8 KB checked in by vilvaini, 10 years ago (diff)

Muutama bugikorjaus.

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