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

Revision 1593, 64.2 KB checked in by vilvaini, 9 years ago (diff)

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