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

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