source: 2011/23/iltakuop/Blocks/Blocks/Blocks/Peli.cs @ 1809

Revision 1809, 23.5 KB checked in by iltakuop, 10 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10class Taso2 : PhysicsObject
11{
12    public int hitPoints = 2;
13    public Taso2()
14        : base(40, 10)
15    {
16        MakeStatic();
17    }
18
19
20}
21
22
23
24
25
26public class Peli : PhysicsGame
27{
28    int mailanNopeus = 600;
29    int pallonNopeus = 300;
30    int äläLuoPalloa = 0;
31    int isoMaila = 0;
32    int pieniMaila = 0;
33    //Vector nopeusVasen = new Vector(-600, 0);
34
35    PhysicsObject pallo;
36    PhysicsObject maila;
37    PhysicsObject tnt;
38    PhysicsObject elämä;
39    PhysicsObject Power1;
40    PhysicsObject Power2;
41
42    PhysicsObject alaReuna;
43    int kenttäNro = 1;
44    int kenttäMäärä = 5;
45
46    int palloolemassa;
47    const int RUUDUN_KOKO = 5;
48
49    Image palloKuva = LoadImage("Pallo");
50    Image tntKuva = LoadImage("TNT");
51    Image tasoKuva = LoadImage("Palikka");
52    Image taso2Kuva = LoadImage("Vahvistettu palikka");
53    Image taso2Kuva2 = LoadImage("Vahvistettu palikka2");
54    Image tasoTuhoutumatonKuva = LoadImage("Tuhoutumaton");
55    Image tasoTuhoutumatonKuvaPysty = LoadImage("TuhoutumatonPysty");
56    Image taustaKuva = LoadImage("Taustakuva1");
57    Image taustaKuva2 = LoadImage("Taustakuva2");
58    Image taustaKuva3 = LoadImage("Taustakuva3");
59    Image mailanKuva = LoadImage("Maila");
60    Image elämänKuva = LoadImage("elämä");
61    Image Power2Kuva = LoadImage("Power2");
62    Image Power1Kuva = LoadImage("Power1");
63    int pisteet;
64    int elämät = 3;
65    int randomKentät = 0;
66    IntMeter pisteetL;
67    IntMeter elämätL;
68
69    Label päälläPois;
70
71    List<Label> valikonKohdat;
72    List<PhysicsObject> tasot = new List<PhysicsObject>();
73    List<PhysicsObject> taso2t = new List<PhysicsObject>();
74    List<PhysicsObject> tntt = new List<PhysicsObject>();
75    List<PhysicsObject> tasoTuhoutumatont = new List<PhysicsObject>();
76
77    Timer PalautusTimer;
78
79    public override void Begin()
80    {
81        Valikko();
82    }
83
84    void Valikko()
85    {
86       
87        äläLuoPalloa = 1;
88        ClearAll();
89        Level.Background.Image = taustaKuva3;
90        Level.Background.Size = new Vector(Screen.Width, Screen.Height);
91        Camera.ZoomToLevel(1);
92
93        valikonKohdat = new List<Label>();
94
95        Label kohta1 = new Label("Aloita uusi peli");
96        kohta1.Position = new Vector(-80, 40);
97        valikonKohdat.Add(kohta1);
98
99        Label kohta2 = new Label("Asetukset");
100        kohta2.Position = new Vector(-80, -40);
101        valikonKohdat.Add(kohta2);
102
103        Label kohta3 = new Label("Lopeta");
104        kohta3.Position = new Vector(80, -40);
105        valikonKohdat.Add(kohta3);
106
107        Label kohta4 = new Label("Ohjeet");
108        kohta4.Position = new Vector(80, 40);
109        valikonKohdat.Add(kohta4);
110
111        foreach (Label valikonKohta in valikonKohdat)
112        {
113            Add(valikonKohta);
114        }
115
116        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
117        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Asetukset, null);
118        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
119        Mouse.ListenOn(kohta4, MouseButton.Left, ButtonState.Pressed, Ohjeet, null);
120
121        Mouse.IsCursorVisible = true;
122        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
123        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
124    }
125
126    void ValikossaLiikkuminen(AnalogState hiirenTila)
127    {
128        foreach (Label kohta in valikonKohdat)
129        {
130            if (Mouse.IsCursorOn(kohta))
131            {
132                kohta.TextColor = Color.Red;
133            }
134            else
135            {
136                kohta.TextColor = Color.Black;
137            }
138
139        }
140    }
141
142    void ValikossaLiikkuminen2(AnalogState hiirenTila)
143    {
144        foreach (Label kohta in valikonKohdat)
145        {
146            if (Mouse.IsCursorOn(kohta))
147            {
148                kohta.TextColor = Color.Red;
149            }
150            else
151            {
152                kohta.TextColor = Color.White;
153            }
154
155        }
156    }
157
158
159    void AloitaPeli()
160    {
161        ClearAll();
162        PalautusTimer = new Timer();
163        äläLuoPalloa = 0;
164        nollaaPisteet();
165        LuoKenttä(1);
166        AsetaOhjaimet();
167        LisääLaskurit(3, 0);
168        AloitaPeliUudestaan();
169    }
170
171    void nollaaPisteet()
172    {
173        kenttäNro = 1;
174        pisteet = 0;
175        elämät = 3;
176    }
177
178    void Lopeta()
179    {
180        Exit();
181    }
182
183    void Ohjeet()
184    {
185
186    }
187
188    void Asetukset()
189    {
190        ClearAll();
191
192        Level.Background.Image = taustaKuva2;
193        Level.Background.Size = new Vector(Screen.Width, Screen.Height);
194        Camera.ZoomToLevel(1);
195
196        valikonKohdat = new List<Label>();
197
198        Label kohta1 = new Label("Pallon nopeus");
199        kohta1.Position = new Vector(-80, 40);
200        valikonKohdat.Add(kohta1);
201        kohta1.TextColor = Color.White;
202
203        Label kohta2 = new Label("Mailan nopeus");
204        kohta2.Position = new Vector(-80, -40);
205        valikonKohdat.Add(kohta2);
206        kohta2.TextColor = Color.White;
207
208        Label kohta3 = new Label("Takaisin");
209        kohta3.Position = new Vector(80, -40);
210        valikonKohdat.Add(kohta3);
211        kohta3.TextColor = Color.White;
212
213        Label kohta4 = new Label("Satunaiset kentät");
214        kohta4.TextColor = Color.White;
215
216        if (randomKentät == 1)
217        {
218            päälläPois = new Label("Päällä");
219        }
220        else { päälläPois = new Label("Pois päältä"); }
221        kohta4.Position = new Vector(100, 40);
222        päälläPois.Position = new Vector(70, 15);
223        päälläPois.TextColor = Color.White;
224        valikonKohdat.Add(päälläPois);
225        Add(kohta4);
226
227        foreach (Label valikonKohta in valikonKohdat)
228        {
229            Add(valikonKohta);
230        }
231
232        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AsetaPallonNopeus, null);
233        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, AsetaMailanNopeus, null);
234        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Valikko, null);
235        Mouse.ListenOn(päälläPois, MouseButton.Left, ButtonState.Pressed, satunaisetKentät, null);
236
237        Mouse.IsCursorVisible = true;
238        Mouse.ListenMovement(1.0, ValikossaLiikkuminen2, null);
239        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
240    }
241
242    void satunaisetKentät()
243    {
244        if (randomKentät == 1)
245        {
246            randomKentät = 0;
247        }
248        else
249        {
250            randomKentät = 1;
251        }
252        Asetukset();
253    }
254
255    void AsetaPallonNopeus()
256    {
257        InputWindow kysymysIkkuna = new InputWindow("Pallon nopeus", "Oletus on 300");
258        kysymysIkkuna.TextEntered += KäsitteleAsetukset;
259        Add(kysymysIkkuna);
260
261    }
262
263    void AsetaMailanNopeus()
264    {
265        InputWindow kysymysIkkuna = new InputWindow("Mailan nopeus", "Oletus on 600");
266        kysymysIkkuna.TextEntered += KäsitteleAsetukset2;
267        Add(kysymysIkkuna);
268    }
269
270    void KäsitteleAsetukset(InputWindow ikkuna)
271    {
272        try
273        {
274            int vastaus = int.Parse(ikkuna.InputBox.Text);
275            pallonNopeus = vastaus;
276        }
277        catch (FormatException)
278        {
279            ClearAll();
280            Label tekstikentta = new Label("Anna luku!");
281            Add(tekstikentta);
282            Timer.SingleShot(2, ClearAll);
283            Timer.SingleShot(2.01, Asetukset);
284        }
285    }
286
287    void KäsitteleAsetukset2(InputWindow ikkuna)
288    {
289        try
290        {
291            int vastaus = int.Parse(ikkuna.InputBox.Text);
292            mailanNopeus = vastaus;
293        }
294        catch (FormatException)
295        {
296            ClearAll();
297            Label tekstikentta = new Label("Anna luku!");
298            Add(tekstikentta);
299            Timer.SingleShot(2, ClearAll);
300            Timer.SingleShot(2.01, Asetukset);
301        }
302    }
303
304    PhysicsObject LuoPallo() //-170
305    {
306        PhysicsObject pallo1 = new PhysicsObject(18.0, 18.0);
307        pallo1.Image = palloKuva;
308        pallo1.Shape = Shape.Circle;
309        pallo1.Color = Color.LightGreen;
310        pallo1.Tag = "pallo";
311        pallo1.Restitution = 1.0;
312        pallo1.X = 0;
313        pallo1.Y = -168;
314        pallo1.CanRotate = false;
315        palloolemassa = 1;
316        return pallo1;
317    }
318
319    void LuoKenttä(int a)
320    {
321
322        LuoPalikat(a);
323        Level.Background.Image = taustaKuva;
324        Level.Background.Size = new Vector(Screen.Width, Screen.Height);
325
326        Camera.ZoomToLevel(1);
327    }
328
329    void AloitaPeliUudestaan()
330    {
331        maila.X = 0;
332        if (palloolemassa == 1)
333        {
334            pallo.Destroy();
335        }
336        if (äläLuoPalloa == 0)
337        {
338            pallo = LuoPallo();
339            AddCollisionHandler(pallo, KäsittelePallonTörmäys);
340            Add(pallo);
341        }
342    }
343
344    void AsetaOhjaimet()
345    {
346        Vector nopeusVasen = new Vector(-mailanNopeus, 0);
347        Vector nopeusOikea = new Vector(mailanNopeus, 0);
348        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Liikuta mailaa oikealle", maila, nopeusOikea);
349        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, maila, Vector.Zero);
350        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Liikuta mailaa vasemmalle", maila, nopeusVasen);
351        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, maila, Vector.Zero);
352
353        Keyboard.Listen(Key.T, ButtonState.Pressed, AloitaPeliUudestaan, null);
354        Keyboard.Listen(Key.R, ButtonState.Pressed, DebugRäjäytys, null);
355
356        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
357        Keyboard.Listen(Key.F2, ButtonState.Pressed, SeuraavaTaso, null);
358        Keyboard.Listen(Key.F3, ButtonState.Pressed, AnnaElämä, null);
359
360        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
361
362
363    }
364
365    void AnnaElämä()
366    {
367        elämät++;
368        pisteet += 200;
369        pisteetL.Value = pisteet;
370        elämätL.Value = elämät;
371    }
372
373    void DebugRäjäytys() { Räjähdys(tnt.Position); }
374
375    void LisääLaskurit(int elämät, int pisteet)
376    {
377        pisteetL = LuoPisteLaskuri(Screen.Left + 180.0, Screen.Top - 80.0, pisteet);
378        elämätL = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 80.0, elämät);
379        Label tekstikentta = new Label("Palloja jäljellä: ");
380        tekstikentta.X = Screen.Right - 180;
381        tekstikentta.Y = Screen.Top - 80;
382        tekstikentta.TextColor = Color.White;
383        Label tekstikentta2 = new Label("Pisteet: ");
384        tekstikentta2.X = Screen.Left + 100.0;
385        tekstikentta2.Y = Screen.Top - 80;
386        tekstikentta2.TextColor = Color.White;
387
388        Add(tekstikentta2);
389        Add(tekstikentta);
390    }
391
392    IntMeter LuoPisteLaskuri(double x, double y, int määrä)
393    {
394        IntMeter laskuri = new IntMeter(määrä);
395        Label näyttö = new Label();
396        näyttö.BindTo(laskuri);
397        näyttö.X = x;
398        näyttö.Y = y;
399        näyttö.TextColor = Color.White;
400        Add(näyttö);
401        return laskuri;
402    }
403
404    void KäsittelePallonTörmäys(PhysicsObject pallo, PhysicsObject kohde)
405    {
406        if (kohde == alaReuna)
407        {
408            pallo.Destroy();
409            palloolemassa = 0;
410            elämät -= 1;
411            if (elämät == 0)
412            {
413                HävisitPelin();
414            }
415            else Timer.SingleShot(1, AloitaPeliUudestaan);
416        }
417        if (kohde.Tag.ToString() == "taso")
418        {
419            pisteet += 100;
420            AnnaPowerUp(kohde);
421            Timer.SingleShot(0.01, kohde.Destroy);
422            tasot.Remove(kohde);
423            TarkistaVoitto();
424        }
425        if (kohde.Tag.ToString() == "taso2")
426        {
427            Taso2 taso2 = (Taso2)kohde;
428            taso2.hitPoints--;
429            if (taso2.hitPoints == 1)
430            { taso2.Image = taso2Kuva2; }
431            else if (taso2.hitPoints == 0)
432            {
433                AnnaPowerUp(kohde);
434                Timer.SingleShot(0.01, kohde.Destroy);
435                pisteet += 300;
436            }
437            taso2t.Remove(kohde);
438            TarkistaVoitto();
439           
440        }
441        if (kohde.Tag.ToString() == "TNT")
442        {
443            pisteet += 100;
444            AnnaPowerUp(kohde);
445            Räjähdys(kohde.Position);
446            Timer.SingleShot(0.01, kohde.Destroy);
447            TarkistaVoitto();
448           
449        }
450        pisteetL.Value = pisteet;
451        elämätL.Value = elämät;
452
453    }
454
455    void AnnaPowerUp(PhysicsObject kohde)
456    {
457        int Power = RandomGen.NextInt(0, 100);
458        //int mailaPower1 = RandomGen.NextInt(0, 20);
459        //int mailaPower2 = RandomGen.NextInt(0, 20);
460        if (Power < 5)
461        {
462            PudotaElämä(kohde);
463        }
464        else if ((Power > 4)&&(Power < 10))
465        {
466            PudotaPower1(kohde);
467        }
468        else if ((Power > 9) && (Power < 15))
469        {
470            PudotaPower2(kohde);
471        }
472    }
473
474    void PudotaElämä(PhysicsObject kohde)
475    {
476        elämä = new PhysicsObject(10, 10);
477        elämä.IgnoresCollisionResponse = true;
478        elämä.Tag = "elämä";
479        elämä.Position = kohde.Position;
480        elämä.Image = elämänKuva;
481        Vector impulssi = new Vector(0, -100);
482        Add(elämä);
483        elämä.Hit(impulssi);
484    }
485
486    void PudotaPower1(PhysicsObject kohde)
487    {
488        Power1 = new PhysicsObject(10, 10);
489        Power1.IgnoresCollisionResponse = true;
490        Power1.Tag = "Power1";
491        Power1.Position = kohde.Position;
492        Power1.Image = Power1Kuva;
493        Vector impulssi = new Vector(0, -100);
494        Add(Power1);
495        Power1.Hit(impulssi);
496    }
497
498
499    void PudotaPower2(PhysicsObject kohde)
500    {
501        Power2 = new PhysicsObject(10, 10);
502        Power2.IgnoresCollisionResponse = true;
503        Power2.Tag = "Power2";
504        Power2.Position = kohde.Position;
505        Power2.Image = Power2Kuva;
506        Vector impulssi = new Vector(0, -100);
507        Add(Power2);
508        Power2.Hit(impulssi);
509    }
510
511    void TarkistaVoitto()
512    {
513        if ((tasot.Count == 0) && (taso2t.Count == 0) && (tntt.Count == 0))
514        {
515            SeuraavaTaso();
516        }
517
518    }
519
520    void SeuraavaTaso()
521    {
522        tasot.Clear();
523        tntt.Clear();
524        taso2t.Clear();
525        kenttäNro += 1;
526        if (kenttäNro > kenttäMäärä)
527        {
528            ClearAll();
529            Label tekstikentta = new Label("Voitit, onneksi olkoon! Sait " + pisteet + " pistettä!");
530            Add(tekstikentta);
531            Timer.SingleShot(2, Exit);
532        }
533        else
534        {
535            ClearAll();
536            Label tekstikentta = new Label("Pääsit seuraavaan tasoon");
537            Add(tekstikentta);
538            Timer.SingleShot(1.5, SeuraavaTaso2);
539        }
540
541    }
542
543    void SeuraavaTaso2()
544    {
545        ClearAll();
546        LuoKenttä(kenttäNro);
547        AsetaOhjaimet();
548        LisääLaskurit(elämät, pisteet);
549        AloitaPeliUudestaan();
550    }
551
552    void Räjähdys(Vector kohde)
553    {
554
555        Explosion rajahdys = new Explosion(10);
556        rajahdys.Position = kohde;
557        rajahdys.Force = 0;
558        Add(rajahdys);
559
560        //foreach (PhysicsObject taso in tasot)
561        //for(int i = 0; i<tasot.Count; i++)
562        int i = 0;
563        while (i < tasot.Count)
564        {
565            if (((tasot[i].X - kohde.X) < 100) && ((tasot[i].X - kohde.X) > -100)
566                && ((tasot[i].Y - kohde.Y) < 80) && ((tasot[i].Y - kohde.Y) > -80))
567            {
568                tasot[i].Destroy();
569                tasot.RemoveAt(i);
570                pisteet += 100;
571                pisteetL.Value = pisteet;
572            }
573            else
574            {
575                i++;
576            }
577        }
578        int w = 0;
579        while (w < taso2t.Count)
580        {
581            if (((taso2t[w].X - kohde.X) < 100) && ((taso2t[w].X - kohde.X) > -100)
582                && ((taso2t[w].Y - kohde.Y) < 80) && ((taso2t[w].Y - kohde.Y) > -80))
583            {
584                taso2t[w].Destroy();
585                taso2t.RemoveAt(w);
586                pisteet += 300;
587                pisteetL.Value = pisteet;
588            }
589            else
590            {
591                w++;
592            }
593        }
594        int o = 0;
595        while (o < tntt.Count)
596        {
597            if (((tntt[o].X - kohde.X) < 100) && ((tntt[o].X - kohde.X) > -100)
598                && ((tntt[o].Y - kohde.Y) < 80) && ((tntt[o].Y - kohde.Y) > -80))
599            {
600                Vector räjähdysPaikka = tntt[o].Position;
601                tntt[o].Destroy();
602                tntt.RemoveAt(o);
603                pisteet += 100;
604                pisteetL.Value = pisteet;
605                Räjähdys(räjähdysPaikka);
606
607            }
608            else
609            {
610                o++;
611            }
612        }
613    }
614
615    void LuoPalikat(int x)
616    {
617
618        if (randomKentät == 0)
619        {
620            TileMap kentta = TileMap.FromFile("kentta" + x + ".txt");
621            kentta['#'] = lisaaTaso;
622            kentta['!'] = lisaaTaso2;
623            kentta['p'] = lisaaPystyTaso;
624            kentta['P'] = lisaaPystyTasoTuhoutumaton;
625            kentta['*'] = lisaaTNT;
626            kentta['T'] = lisaaTasoTuhoutumaton;
627            kentta['m'] = LuoMaila;
628            kentta['-'] = LuoReunat;
629            kentta['_'] = LuoAlaReuna;
630            kentta['y'] = LuoYläReuna;
631            kentta.Insert(20, 20);
632        }
633        else
634        {
635            TileMap kentta = TileMap.FromFile("kenttarandom.txt");
636            kentta['#'] = lisaaRandomTaso;
637            kentta['m'] = LuoMaila;
638            kentta['-'] = LuoReunat;
639            kentta['_'] = LuoAlaReuna;
640            kentta['y'] = LuoYläReuna;
641            kentta.Insert(40, 40);
642        }
643    }
644
645    PhysicsObject lisaaTaso()
646    {
647        PhysicsObject taso = PhysicsObject.CreateStaticObject(40, 10);
648        taso.Tag = "taso";
649        taso.Image = tasoKuva;
650        taso.Restitution = 1.0;
651        tasot.Add(taso);
652        return taso;
653    }
654
655    PhysicsObject lisaaTasoTuhoutumaton()
656    {
657        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(40, 10);
658        //tasoTuhoutumaton.Tag = "taso";
659        tasoTuhoutumaton.Image = tasoTuhoutumatonKuva;
660        tasoTuhoutumaton.Restitution = 1.0;
661        return tasoTuhoutumaton;
662    }
663
664    PhysicsObject lisaaPystyTaso()
665    {
666        PhysicsObject taso = PhysicsObject.CreateStaticObject(10, 40);
667        taso.Tag = "taso";
668        taso.Image = tasoKuva;
669        taso.Restitution = 1.0;
670        tasot.Add(taso);
671        return taso;
672    }
673
674    PhysicsObject lisaaPystyTasoTuhoutumaton()
675    {
676        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(10, 40);
677        //tasoTuhoutumaton.Tag = "taso";
678        tasoTuhoutumaton.Image = tasoTuhoutumatonKuvaPysty;
679        tasoTuhoutumaton.Restitution = 1.0;
680        return tasoTuhoutumaton;
681    }
682
683    PhysicsObject lisaaTaso2()
684    {
685        Taso2 taso2 = new Taso2();
686        taso2.Tag = "taso2";
687        taso2.Image = taso2Kuva;
688        taso2.Restitution = 1.0;
689        taso2t.Add(taso2);
690        return taso2;
691    }
692
693    PhysicsObject lisaaTNT()
694    {
695        tnt = PhysicsObject.CreateStaticObject(40, 10);
696        tnt.Image = tntKuva;
697        tnt.Restitution = 1;
698        tntt.Add(tnt);
699        tnt.Tag = "TNT";
700
701        return tnt;
702    }
703
704    PhysicsObject LuoMaila()
705    {
706        maila = PhysicsObject.CreateStaticObject(60.0, 10);
707        maila.Shape = Shape.Rectangle;
708        maila.Image = mailanKuva;
709        maila.Restitution = 0.5;
710        maila.Color = Color.Green;
711        AddCollisionHandler(maila, KäsitteleMailanTörmäys);
712        return maila;
713    }
714
715    PhysicsObject lisaaRandomTaso()
716    {
717        int tasonTyyppi = RandomGen.NextInt(1, 4);
718        PhysicsObject taso;
719
720        if (tasonTyyppi == 1)
721        {
722            taso = lisaaTaso();
723        }
724        else if (tasonTyyppi == 2)
725        {
726            taso = lisaaTaso2();
727        }
728        else if (tasonTyyppi == 3)
729        {
730            taso = lisaaTNT();
731        }
732        else if (tasonTyyppi == 4)
733        {
734            MessageDisplay.Add("tuli nelonen");
735            taso = lisaaTaso();
736        }
737        else
738        {
739            taso = lisaaTaso();
740        }
741
742
743        return taso;
744    }
745
746    PhysicsObject LuoReunat()
747    {
748        PhysicsObject reuna = PhysicsObject.CreateStaticObject(40, 800);
749        reuna.IsVisible = false;
750        reuna.Restitution = 1.0;
751        return reuna;
752    }
753
754    PhysicsObject LuoAlaReuna()
755    {
756        alaReuna = PhysicsObject.CreateStaticObject(800, 40);
757        alaReuna.Color = Color.Black;
758        alaReuna.IsVisible = false;
759        alaReuna.Restitution = 1.0;
760        return alaReuna;
761    }
762
763    PhysicsObject LuoYläReuna()
764    {
765        PhysicsObject yläReuna = PhysicsObject.CreateStaticObject(800, 40);
766        yläReuna.Color = Color.Black;
767        yläReuna.IsVisible = false;
768        yläReuna.Restitution = 1.0;
769        return yläReuna;
770    }
771
772    void KäsitteleMailanTörmäys(PhysicsObject maila, PhysicsObject kohde)
773    {
774        if (kohde.Tag.ToString() == "elämä")
775        {
776            AnnaElämä();
777            kohde.Destroy();
778        }
779        else if (kohde.Tag.ToString() == "Power1")
780        {
781            if (isoMaila == 0)
782            {
783                maila.Width += 20;
784                isoMaila = 1;
785                Timer.SingleShot(20, PalautaMaila);
786            }
787            if (pieniMaila == 1)
788            {
789                PalautaMaila();
790            }
791            kohde.Destroy();
792        }
793        else if (kohde.Tag.ToString() == "Power2")
794        {
795            if (pieniMaila == 0)
796            {
797                kohde.Destroy();
798                pieniMaila = 1;
799                maila.Width -= 20;
800                Timer.SingleShot(20, PalautaMaila);
801            }
802            if (isoMaila == 1)
803            {
804                PalautaMaila();
805            }
806        }
807    }
808
809    void PalautaMaila()
810    {
811        maila.Width = 60;
812    }
813
814    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
815    {
816        if ((nopeus.X < 0) && (maila.Left < Level.Left + 40))
817        {
818            maila.Velocity = Vector.Zero;
819            return;
820        }
821
822        if ((nopeus.X > 0) && (maila.Right > Level.Right - 40))
823        {
824            maila.Velocity = Vector.Zero;
825            return;
826        }
827        maila.Velocity = nopeus;
828    }
829
830    void HävisitPelin()
831    {
832        ClearAll();
833        Label tekstikentta = new Label("Hävisit. Sait " + pisteet + " pistettä");
834        Add(tekstikentta);
835        Timer.SingleShot(3, Valikko);
836    }
837
838    protected override void Update(Time time)
839    {
840        if (pallo != null && Math.Abs(pallo.Velocity.Y) < pallonNopeus)
841        {
842            pallo.Velocity = new Vector(pallo.Velocity.X, pallo.Velocity.Y * 1.1);
843
844        }
845        if (pallo != null && Math.Abs(pallo.Velocity.X) < pallonNopeus)
846        {
847            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y);
848
849        }
850        base.Update(time);
851
852    }
853
854
855}
Note: See TracBrowser for help on using the repository browser.