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

Revision 1816, 24.3 KB checked in by iltakuop, 9 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            Räjähdys(kohde.Position);
445            Timer.SingleShot(0.01, kohde.Destroy);
446            TarkistaVoitto();
447           
448        }
449
450        if (kohde.Tag.ToString() == "ttaso" && pallo.Velocity.X == 0)
451        {
452              pallo.Velocity = new Vector(100, pallo.Velocity.Y);
453
454        }
455        if (kohde != maila && pallo.Velocity.Y == 0 && ySuuntaKorjattu == 0)
456        {
457            Timer.SingleShot(0.1, korjaaYSuunta);
458            ySuuntaKorjattu = 1;
459        }
460
461        pisteetL.Value = pisteet;
462        elämätL.Value = elämät;
463
464    }
465
466    void korjaaYSuunta()
467    {
468        if (pallo.Velocity.Y == 0)
469        { pallo.Velocity = new Vector(pallo.Velocity.X, 100); }
470
471        ySuuntaKorjattu = 0;
472    }
473
474
475    void AnnaPowerUp(PhysicsObject kohde)
476    {
477        int Power = RandomGen.NextInt(0, 100);
478        //int mailaPower1 = RandomGen.NextInt(0, 20);
479        //int mailaPower2 = RandomGen.NextInt(0, 20);
480        if (Power < 5)
481        {
482            PudotaElämä(kohde);
483        }
484        else if ((Power > 4)&&(Power < 10))
485        {
486            PudotaPower1(kohde);
487        }
488        else if ((Power > 9) && (Power < 15))
489        {
490            PudotaPower2(kohde);
491        }
492    }
493
494    void PudotaElämä(PhysicsObject kohde)
495    {
496        elämä = new PhysicsObject(10, 10);
497        elämä.IgnoresCollisionResponse = true;
498        elämä.Tag = "elämä";
499        elämä.Position = kohde.Position;
500        elämä.Image = elämänKuva;
501        Vector impulssi = new Vector(0, -100);
502        Add(elämä);
503        elämä.Hit(impulssi);
504    }
505
506    void PudotaPower1(PhysicsObject kohde)
507    {
508        Power1 = new PhysicsObject(10, 10);
509        Power1.IgnoresCollisionResponse = true;
510        Power1.Tag = "Power1";
511        Power1.Position = kohde.Position;
512        Power1.Image = Power1Kuva;
513        Vector impulssi = new Vector(0, -100);
514        Add(Power1);
515        Power1.Hit(impulssi);
516    }
517
518
519    void PudotaPower2(PhysicsObject kohde)
520    {
521        Power2 = new PhysicsObject(10, 10);
522        Power2.IgnoresCollisionResponse = true;
523        Power2.Tag = "Power2";
524        Power2.Position = kohde.Position;
525        Power2.Image = Power2Kuva;
526        Vector impulssi = new Vector(0, -100);
527        Add(Power2);
528        Power2.Hit(impulssi);
529    }
530
531    void TarkistaVoitto()
532    {
533        if ((tasot.Count == 0) && (taso2t.Count == 0) && (tntt.Count == 0))
534        {
535            SeuraavaTaso();
536        }
537
538    }
539
540    void SeuraavaTaso()
541    {
542        tasot.Clear();
543        tntt.Clear();
544        taso2t.Clear();
545        kenttäNro += 1;
546        if (kenttäNro > kenttäMäärä)
547        {
548            ClearAll();
549            Label tekstikentta = new Label("Voitit, onneksi olkoon! Sait " + pisteet + " pistettä!");
550            Add(tekstikentta);
551            Timer.SingleShot(2, Exit);
552        }
553        else
554        {
555            ClearAll();
556            Label tekstikentta = new Label("Pääsit seuraavaan tasoon");
557            Add(tekstikentta);
558            Timer.SingleShot(1.5, SeuraavaTaso2);
559        }
560
561    }
562
563    void SeuraavaTaso2()
564    {
565        ClearAll();
566        LuoKenttä(kenttäNro);
567        AsetaOhjaimet();
568        LisääLaskurit(elämät, pisteet);
569        AloitaPeliUudestaan();
570    }
571
572    void Räjähdys(Vector kohde)
573    {
574
575        Explosion rajahdys = new Explosion(50);
576        rajahdys.Position = kohde;
577        rajahdys.Force = 150;
578        rajahdys.Speed = 600;
579        rajahdys.ShockwaveColor = Color.Yellow;
580        Add(rajahdys);
581
582        //foreach (PhysicsObject taso in tasot)
583        //for(int i = 0; i<tasot.Count; i++)
584        int i = 0;
585        while (i < tasot.Count)
586        {
587            if (((tasot[i].X - kohde.X) < 100) && ((tasot[i].X - kohde.X) > -100)
588                && ((tasot[i].Y - kohde.Y) < 80) && ((tasot[i].Y - kohde.Y) > -80))
589            {
590                tasot[i].Destroy();
591                tasot.RemoveAt(i);
592                pisteet += 100;
593                pisteetL.Value = pisteet;
594            }
595            else
596            {
597                i++;
598            }
599        }
600        int w = 0;
601        while (w < taso2t.Count)
602        {
603            if (((taso2t[w].X - kohde.X) < 100) && ((taso2t[w].X - kohde.X) > -100)
604                && ((taso2t[w].Y - kohde.Y) < 80) && ((taso2t[w].Y - kohde.Y) > -80))
605            {
606                taso2t[w].Destroy();
607                taso2t.RemoveAt(w);
608                pisteet += 300;
609                pisteetL.Value = pisteet;
610            }
611            else
612            {
613                w++;
614            }
615        }
616        int o = 0;
617        while (o < tntt.Count)
618        {
619            if (((tntt[o].X - kohde.X) < 100) && ((tntt[o].X - kohde.X) > -100)
620                && ((tntt[o].Y - kohde.Y) < 80) && ((tntt[o].Y - kohde.Y) > -80))
621            {
622                Vector räjähdysPaikka = tntt[o].Position;
623                tntt[o].Destroy();
624                tntt.RemoveAt(o);
625                pisteet += 100;
626                pisteetL.Value = pisteet;
627                Räjähdys(räjähdysPaikka);
628
629            }
630            else
631            {
632                o++;
633            }
634        }
635    }
636
637    void LuoPalikat(int x)
638    {
639
640        if (randomKentät == 0)
641        {
642            TileMap kentta = TileMap.FromFile("kentta" + x + ".txt");
643            kentta['#'] = lisaaTaso;
644            kentta['!'] = lisaaTaso2;
645            kentta['p'] = lisaaPystyTaso;
646            kentta['P'] = lisaaPystyTasoTuhoutumaton;
647            kentta['*'] = lisaaTNT;
648            kentta['T'] = lisaaTasoTuhoutumaton;
649            kentta['m'] = LuoMaila;
650            kentta['-'] = LuoReunat;
651            kentta['_'] = LuoAlaReuna;
652            kentta['y'] = LuoYläReuna;
653            kentta.Insert(20, 20);
654        }
655        else
656        {
657            TileMap kentta = TileMap.FromFile("kenttarandom.txt");
658            kentta['#'] = lisaaRandomTaso;
659            kentta['m'] = LuoMaila;
660            kentta['-'] = LuoReunat;
661            kentta['_'] = LuoAlaReuna;
662            kentta['y'] = LuoYläReuna;
663            kentta.Insert(40, 40);
664        }
665    }
666
667    PhysicsObject lisaaTaso()
668    {
669        PhysicsObject taso = PhysicsObject.CreateStaticObject(40, 10);
670        taso.Tag = "taso";
671        taso.Image = tasoKuva;
672        taso.Restitution = 1.0;
673        tasot.Add(taso);
674        return taso;
675    }
676
677    PhysicsObject lisaaTasoTuhoutumaton()
678    {
679        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(40, 10);
680        tasoTuhoutumaton.Tag = "ttaso";
681        tasoTuhoutumaton.Image = tasoTuhoutumatonKuva;
682        tasoTuhoutumaton.Restitution = 1.0;
683        return tasoTuhoutumaton;
684    }
685
686    PhysicsObject lisaaPystyTaso()
687    {
688        PhysicsObject taso = PhysicsObject.CreateStaticObject(10, 40);
689        taso.Tag = "taso";
690        taso.Image = tasoKuva;
691        taso.Restitution = 1.0;
692        tasot.Add(taso);
693        return taso;
694    }
695
696    PhysicsObject lisaaPystyTasoTuhoutumaton()
697    {
698        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(10, 40);
699        tasoTuhoutumaton.Tag = "ttaso";
700        tasoTuhoutumaton.Image = tasoTuhoutumatonKuvaPysty;
701        tasoTuhoutumaton.Restitution = 1.0;
702        return tasoTuhoutumaton;
703    }
704
705    PhysicsObject lisaaTaso2()
706    {
707        Taso2 taso2 = new Taso2();
708        taso2.Tag = "taso2";
709        taso2.Image = taso2Kuva;
710        taso2.Restitution = 1.0;
711        taso2t.Add(taso2);
712        return taso2;
713    }
714
715    PhysicsObject lisaaTNT()
716    {
717        tnt = PhysicsObject.CreateStaticObject(40, 10);
718        tnt.Image = tntKuva;
719        tnt.Restitution = 1;
720        tntt.Add(tnt);
721        tnt.Tag = "TNT";
722
723        return tnt;
724    }
725
726    PhysicsObject LuoMaila()
727    {
728        maila = PhysicsObject.CreateStaticObject(60.0, 10);
729        maila.Shape = Shape.Rectangle;
730        maila.Image = mailanKuva;
731        maila.Restitution = 0.5;
732        maila.Color = Color.Green;
733        AddCollisionHandler(maila, KäsitteleMailanTörmäys);
734        return maila;
735    }
736
737    PhysicsObject lisaaRandomTaso()
738    {
739        int tasonTyyppi = RandomGen.NextInt(1, 4);
740        PhysicsObject taso;
741
742        if (tasonTyyppi == 1)
743        {
744            taso = lisaaTaso();
745        }
746        else if (tasonTyyppi == 2)
747        {
748            taso = lisaaTaso2();
749        }
750        else if (tasonTyyppi == 3)
751        {
752            taso = lisaaTNT();
753        }
754        else if (tasonTyyppi == 4)
755        {
756            MessageDisplay.Add("tuli nelonen");
757            taso = lisaaTaso();
758        }
759        else
760        {
761            taso = lisaaTaso();
762        }
763
764
765        return taso;
766    }
767
768    PhysicsObject LuoReunat()
769    {
770        PhysicsObject reuna = PhysicsObject.CreateStaticObject(40, 800);
771        reuna.IsVisible = false;
772        reuna.Restitution = 1.0;
773        return reuna;
774    }
775
776    PhysicsObject LuoAlaReuna()
777    {
778        alaReuna = PhysicsObject.CreateStaticObject(800, 40);
779        alaReuna.Color = Color.Black;
780        alaReuna.IsVisible = false;
781        alaReuna.Restitution = 1.0;
782        return alaReuna;
783    }
784
785    PhysicsObject LuoYläReuna()
786    {
787        PhysicsObject yläReuna = PhysicsObject.CreateStaticObject(800, 40);
788        yläReuna.Color = Color.Black;
789        yläReuna.IsVisible = false;
790        yläReuna.Restitution = 1.0;
791        return yläReuna;
792    }
793
794    void KäsitteleMailanTörmäys(PhysicsObject maila, PhysicsObject kohde)
795    {
796        if (kohde.Tag.ToString() == "elämä")
797        {
798            AnnaElämä();
799            kohde.Destroy();
800        }
801        else if (kohde.Tag.ToString() == "Power1")
802        {
803           
804            if (pieniMaila == 1)
805            {
806                PalautaMaila();
807            }
808            else if (isoMaila == 0)
809            {
810                maila.Width += 20;
811                isoMaila = 1;
812                Timer.SingleShot(20, PalautaMaila);
813            }
814           
815            kohde.Destroy();
816        }
817        else if (kohde.Tag.ToString() == "Power2")
818        {
819            if (isoMaila == 1)
820            {
821                PalautaMaila();
822            }
823            else if (pieniMaila == 0)
824            {
825                kohde.Destroy();
826                pieniMaila = 1;
827                maila.Width -= 20;
828                Timer.SingleShot(20, PalautaMaila);
829            }
830           
831        }
832    }
833
834    void PalautaMaila()
835    {
836        if (isoMaila == 1)
837        {
838            maila.Width = 60;
839            isoMaila = 0;
840        }
841        if (pieniMaila == 1)
842        {
843            maila.Width = 60;
844
845            pieniMaila = 0;
846        }
847
848    }
849
850    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
851    {
852        if ((nopeus.X < 0) && (maila.Left < Level.Left + 40))
853        {
854            maila.Velocity = Vector.Zero;
855            return;
856        }
857
858        if ((nopeus.X > 0) && (maila.Right > Level.Right - 40))
859        {
860            maila.Velocity = Vector.Zero;
861            return;
862        }
863        maila.Velocity = nopeus;
864    }
865
866    void HävisitPelin()
867    {
868        ClearAll();
869        Label tekstikentta = new Label("Hävisit. Sait " + pisteet + " pistettä");
870        Add(tekstikentta);
871        Timer.SingleShot(3, Valikko);
872    }
873
874    protected override void Update(Time time)
875    {
876        if (pallo != null && Math.Abs(pallo.Velocity.Y) < pallonNopeus)
877        {
878            pallo.Velocity = new Vector(pallo.Velocity.X, pallo.Velocity.Y * 1.1);
879
880        }
881        //if (pallo != null && Math.Abs(pallo.Velocity.X) < pallonNopeus)
882        //{
883        //    pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y);
884
885        //}
886        base.Update(time);
887
888    }
889
890
891}
Note: See TracBrowser for help on using the repository browser.