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

Revision 1810, 24.0 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    int ySuuntaKorjattu = 0;
67    IntMeter pisteetL;
68    IntMeter elämätL;
69
70    Label päälläPois;
71
72    List<Label> valikonKohdat;
73    List<PhysicsObject> tasot = new List<PhysicsObject>();
74    List<PhysicsObject> taso2t = new List<PhysicsObject>();
75    List<PhysicsObject> tntt = new List<PhysicsObject>();
76    List<PhysicsObject> tasoTuhoutumatont = new List<PhysicsObject>();
77
78   
79
80    public override void Begin()
81    {
82        Valikko();
83    }
84
85    void Valikko()
86    {
87       
88        äläLuoPalloa = 1;
89        ClearAll();
90        Level.Background.Image = taustaKuva3;
91        Level.Background.Size = new Vector(Screen.Width, Screen.Height);
92        Camera.ZoomToLevel(1);
93
94        valikonKohdat = new List<Label>();
95
96        Label kohta1 = new Label("Aloita uusi peli");
97        kohta1.Position = new Vector(-80, 40);
98        valikonKohdat.Add(kohta1);
99
100        Label kohta2 = new Label("Asetukset");
101        kohta2.Position = new Vector(-80, -40);
102        valikonKohdat.Add(kohta2);
103
104        Label kohta3 = new Label("Lopeta");
105        kohta3.Position = new Vector(80, -40);
106        valikonKohdat.Add(kohta3);
107
108        Label kohta4 = new Label("Ohjeet");
109        kohta4.Position = new Vector(80, 40);
110        valikonKohdat.Add(kohta4);
111
112        foreach (Label valikonKohta in valikonKohdat)
113        {
114            Add(valikonKohta);
115        }
116
117        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
118        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Asetukset, null);
119        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
120        Mouse.ListenOn(kohta4, MouseButton.Left, ButtonState.Pressed, Ohjeet, null);
121
122        Mouse.IsCursorVisible = true;
123        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
124        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
125    }
126
127    void ValikossaLiikkuminen(AnalogState hiirenTila)
128    {
129        foreach (Label kohta in valikonKohdat)
130        {
131            if (Mouse.IsCursorOn(kohta))
132            {
133                kohta.TextColor = Color.Red;
134            }
135            else
136            {
137                kohta.TextColor = Color.Black;
138            }
139
140        }
141    }
142
143    void ValikossaLiikkuminen2(AnalogState hiirenTila)
144    {
145        foreach (Label kohta in valikonKohdat)
146        {
147            if (Mouse.IsCursorOn(kohta))
148            {
149                kohta.TextColor = Color.Red;
150            }
151            else
152            {
153                kohta.TextColor = Color.White;
154            }
155
156        }
157    }
158
159
160    void AloitaPeli()
161    {
162        ClearAll();
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        if (kohde != maila && pallo.Velocity.Y == 0 && ySuuntaKorjattu == 0)
451        {
452            Timer.SingleShot(0.1, korjaaYSuunta);
453            ySuuntaKorjattu = 1;
454        }
455
456        pisteetL.Value = pisteet;
457        elämätL.Value = elämät;
458
459    }
460
461    void korjaaYSuunta()
462    {
463        pallo.Velocity = new Vector(pallo.Velocity.X, 20);
464        ySuuntaKorjattu = 0;
465    }
466
467
468    void AnnaPowerUp(PhysicsObject kohde)
469    {
470        int Power = RandomGen.NextInt(0, 100);
471        //int mailaPower1 = RandomGen.NextInt(0, 20);
472        //int mailaPower2 = RandomGen.NextInt(0, 20);
473        if (Power < 5)
474        {
475            PudotaElämä(kohde);
476        }
477        else if ((Power > 4)&&(Power < 10))
478        {
479            PudotaPower1(kohde);
480        }
481        else if ((Power > 9) && (Power < 15))
482        {
483            PudotaPower2(kohde);
484        }
485    }
486
487    void PudotaElämä(PhysicsObject kohde)
488    {
489        elämä = new PhysicsObject(10, 10);
490        elämä.IgnoresCollisionResponse = true;
491        elämä.Tag = "elämä";
492        elämä.Position = kohde.Position;
493        elämä.Image = elämänKuva;
494        Vector impulssi = new Vector(0, -100);
495        Add(elämä);
496        elämä.Hit(impulssi);
497    }
498
499    void PudotaPower1(PhysicsObject kohde)
500    {
501        Power1 = new PhysicsObject(10, 10);
502        Power1.IgnoresCollisionResponse = true;
503        Power1.Tag = "Power1";
504        Power1.Position = kohde.Position;
505        Power1.Image = Power1Kuva;
506        Vector impulssi = new Vector(0, -100);
507        Add(Power1);
508        Power1.Hit(impulssi);
509    }
510
511
512    void PudotaPower2(PhysicsObject kohde)
513    {
514        Power2 = new PhysicsObject(10, 10);
515        Power2.IgnoresCollisionResponse = true;
516        Power2.Tag = "Power2";
517        Power2.Position = kohde.Position;
518        Power2.Image = Power2Kuva;
519        Vector impulssi = new Vector(0, -100);
520        Add(Power2);
521        Power2.Hit(impulssi);
522    }
523
524    void TarkistaVoitto()
525    {
526        if ((tasot.Count == 0) && (taso2t.Count == 0) && (tntt.Count == 0))
527        {
528            SeuraavaTaso();
529        }
530
531    }
532
533    void SeuraavaTaso()
534    {
535        tasot.Clear();
536        tntt.Clear();
537        taso2t.Clear();
538        kenttäNro += 1;
539        if (kenttäNro > kenttäMäärä)
540        {
541            ClearAll();
542            Label tekstikentta = new Label("Voitit, onneksi olkoon! Sait " + pisteet + " pistettä!");
543            Add(tekstikentta);
544            Timer.SingleShot(2, Exit);
545        }
546        else
547        {
548            ClearAll();
549            Label tekstikentta = new Label("Pääsit seuraavaan tasoon");
550            Add(tekstikentta);
551            Timer.SingleShot(1.5, SeuraavaTaso2);
552        }
553
554    }
555
556    void SeuraavaTaso2()
557    {
558        ClearAll();
559        LuoKenttä(kenttäNro);
560        AsetaOhjaimet();
561        LisääLaskurit(elämät, pisteet);
562        AloitaPeliUudestaan();
563    }
564
565    void Räjähdys(Vector kohde)
566    {
567
568        Explosion rajahdys = new Explosion(10);
569        rajahdys.Position = kohde;
570        rajahdys.Force = 0;
571        Add(rajahdys);
572
573        //foreach (PhysicsObject taso in tasot)
574        //for(int i = 0; i<tasot.Count; i++)
575        int i = 0;
576        while (i < tasot.Count)
577        {
578            if (((tasot[i].X - kohde.X) < 100) && ((tasot[i].X - kohde.X) > -100)
579                && ((tasot[i].Y - kohde.Y) < 80) && ((tasot[i].Y - kohde.Y) > -80))
580            {
581                tasot[i].Destroy();
582                tasot.RemoveAt(i);
583                pisteet += 100;
584                pisteetL.Value = pisteet;
585            }
586            else
587            {
588                i++;
589            }
590        }
591        int w = 0;
592        while (w < taso2t.Count)
593        {
594            if (((taso2t[w].X - kohde.X) < 100) && ((taso2t[w].X - kohde.X) > -100)
595                && ((taso2t[w].Y - kohde.Y) < 80) && ((taso2t[w].Y - kohde.Y) > -80))
596            {
597                taso2t[w].Destroy();
598                taso2t.RemoveAt(w);
599                pisteet += 300;
600                pisteetL.Value = pisteet;
601            }
602            else
603            {
604                w++;
605            }
606        }
607        int o = 0;
608        while (o < tntt.Count)
609        {
610            if (((tntt[o].X - kohde.X) < 100) && ((tntt[o].X - kohde.X) > -100)
611                && ((tntt[o].Y - kohde.Y) < 80) && ((tntt[o].Y - kohde.Y) > -80))
612            {
613                Vector räjähdysPaikka = tntt[o].Position;
614                tntt[o].Destroy();
615                tntt.RemoveAt(o);
616                pisteet += 100;
617                pisteetL.Value = pisteet;
618                Räjähdys(räjähdysPaikka);
619
620            }
621            else
622            {
623                o++;
624            }
625        }
626    }
627
628    void LuoPalikat(int x)
629    {
630
631        if (randomKentät == 0)
632        {
633            TileMap kentta = TileMap.FromFile("kentta" + x + ".txt");
634            kentta['#'] = lisaaTaso;
635            kentta['!'] = lisaaTaso2;
636            kentta['p'] = lisaaPystyTaso;
637            kentta['P'] = lisaaPystyTasoTuhoutumaton;
638            kentta['*'] = lisaaTNT;
639            kentta['T'] = lisaaTasoTuhoutumaton;
640            kentta['m'] = LuoMaila;
641            kentta['-'] = LuoReunat;
642            kentta['_'] = LuoAlaReuna;
643            kentta['y'] = LuoYläReuna;
644            kentta.Insert(20, 20);
645        }
646        else
647        {
648            TileMap kentta = TileMap.FromFile("kenttarandom.txt");
649            kentta['#'] = lisaaRandomTaso;
650            kentta['m'] = LuoMaila;
651            kentta['-'] = LuoReunat;
652            kentta['_'] = LuoAlaReuna;
653            kentta['y'] = LuoYläReuna;
654            kentta.Insert(40, 40);
655        }
656    }
657
658    PhysicsObject lisaaTaso()
659    {
660        PhysicsObject taso = PhysicsObject.CreateStaticObject(40, 10);
661        taso.Tag = "taso";
662        taso.Image = tasoKuva;
663        taso.Restitution = 1.0;
664        tasot.Add(taso);
665        return taso;
666    }
667
668    PhysicsObject lisaaTasoTuhoutumaton()
669    {
670        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(40, 10);
671        //tasoTuhoutumaton.Tag = "taso";
672        tasoTuhoutumaton.Image = tasoTuhoutumatonKuva;
673        tasoTuhoutumaton.Restitution = 1.0;
674        return tasoTuhoutumaton;
675    }
676
677    PhysicsObject lisaaPystyTaso()
678    {
679        PhysicsObject taso = PhysicsObject.CreateStaticObject(10, 40);
680        taso.Tag = "taso";
681        taso.Image = tasoKuva;
682        taso.Restitution = 1.0;
683        tasot.Add(taso);
684        return taso;
685    }
686
687    PhysicsObject lisaaPystyTasoTuhoutumaton()
688    {
689        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(10, 40);
690        //tasoTuhoutumaton.Tag = "taso";
691        tasoTuhoutumaton.Image = tasoTuhoutumatonKuvaPysty;
692        tasoTuhoutumaton.Restitution = 1.0;
693        return tasoTuhoutumaton;
694    }
695
696    PhysicsObject lisaaTaso2()
697    {
698        Taso2 taso2 = new Taso2();
699        taso2.Tag = "taso2";
700        taso2.Image = taso2Kuva;
701        taso2.Restitution = 1.0;
702        taso2t.Add(taso2);
703        return taso2;
704    }
705
706    PhysicsObject lisaaTNT()
707    {
708        tnt = PhysicsObject.CreateStaticObject(40, 10);
709        tnt.Image = tntKuva;
710        tnt.Restitution = 1;
711        tntt.Add(tnt);
712        tnt.Tag = "TNT";
713
714        return tnt;
715    }
716
717    PhysicsObject LuoMaila()
718    {
719        maila = PhysicsObject.CreateStaticObject(60.0, 10);
720        maila.Shape = Shape.Rectangle;
721        maila.Image = mailanKuva;
722        maila.Restitution = 0.5;
723        maila.Color = Color.Green;
724        AddCollisionHandler(maila, KäsitteleMailanTörmäys);
725        return maila;
726    }
727
728    PhysicsObject lisaaRandomTaso()
729    {
730        int tasonTyyppi = RandomGen.NextInt(1, 4);
731        PhysicsObject taso;
732
733        if (tasonTyyppi == 1)
734        {
735            taso = lisaaTaso();
736        }
737        else if (tasonTyyppi == 2)
738        {
739            taso = lisaaTaso2();
740        }
741        else if (tasonTyyppi == 3)
742        {
743            taso = lisaaTNT();
744        }
745        else if (tasonTyyppi == 4)
746        {
747            MessageDisplay.Add("tuli nelonen");
748            taso = lisaaTaso();
749        }
750        else
751        {
752            taso = lisaaTaso();
753        }
754
755
756        return taso;
757    }
758
759    PhysicsObject LuoReunat()
760    {
761        PhysicsObject reuna = PhysicsObject.CreateStaticObject(40, 800);
762        reuna.IsVisible = false;
763        reuna.Restitution = 1.0;
764        return reuna;
765    }
766
767    PhysicsObject LuoAlaReuna()
768    {
769        alaReuna = PhysicsObject.CreateStaticObject(800, 40);
770        alaReuna.Color = Color.Black;
771        alaReuna.IsVisible = false;
772        alaReuna.Restitution = 1.0;
773        return alaReuna;
774    }
775
776    PhysicsObject LuoYläReuna()
777    {
778        PhysicsObject yläReuna = PhysicsObject.CreateStaticObject(800, 40);
779        yläReuna.Color = Color.Black;
780        yläReuna.IsVisible = false;
781        yläReuna.Restitution = 1.0;
782        return yläReuna;
783    }
784
785    void KäsitteleMailanTörmäys(PhysicsObject maila, PhysicsObject kohde)
786    {
787        if (kohde.Tag.ToString() == "elämä")
788        {
789            AnnaElämä();
790            kohde.Destroy();
791        }
792        else if (kohde.Tag.ToString() == "Power1")
793        {
794           
795            if (pieniMaila == 1)
796            {
797                PalautaMaila();
798            }
799            else if (isoMaila == 0)
800            {
801                maila.Width += 20;
802                isoMaila = 1;
803                Timer.SingleShot(20, PalautaMaila);
804            }
805           
806            kohde.Destroy();
807        }
808        else if (kohde.Tag.ToString() == "Power2")
809        {
810            if (isoMaila == 1)
811            {
812                PalautaMaila();
813            }
814            else if (pieniMaila == 0)
815            {
816                kohde.Destroy();
817                pieniMaila = 1;
818                maila.Width -= 20;
819                Timer.SingleShot(20, PalautaMaila);
820            }
821           
822        }
823    }
824
825    void PalautaMaila()
826    {
827        if (isoMaila == 1)
828        {
829            maila.Width = 60;
830            isoMaila = 0;
831        }
832        if (pieniMaila == 1)
833        {
834            maila.Width = 60;
835
836            pieniMaila = 0;
837        }
838
839    }
840
841    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
842    {
843        if ((nopeus.X < 0) && (maila.Left < Level.Left + 40))
844        {
845            maila.Velocity = Vector.Zero;
846            return;
847        }
848
849        if ((nopeus.X > 0) && (maila.Right > Level.Right - 40))
850        {
851            maila.Velocity = Vector.Zero;
852            return;
853        }
854        maila.Velocity = nopeus;
855    }
856
857    void HävisitPelin()
858    {
859        ClearAll();
860        Label tekstikentta = new Label("Hävisit. Sait " + pisteet + " pistettä");
861        Add(tekstikentta);
862        Timer.SingleShot(3, Valikko);
863    }
864
865    protected override void Update(Time time)
866    {
867        if (pallo != null && Math.Abs(pallo.Velocity.Y) < pallonNopeus)
868        {
869            pallo.Velocity = new Vector(pallo.Velocity.X, pallo.Velocity.Y * 1.1);
870
871        }
872        //if (pallo != null && Math.Abs(pallo.Velocity.X) < pallonNopeus)
873        //{
874        //    pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y);
875
876        //}
877        base.Update(time);
878
879    }
880
881
882}
Note: See TracBrowser for help on using the repository browser.