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

Revision 1813, 24.2 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(10);
576        rajahdys.Position = kohde;
577        rajahdys.Force = 0;
578        Add(rajahdys);
579
580        //foreach (PhysicsObject taso in tasot)
581        //for(int i = 0; i<tasot.Count; i++)
582        int i = 0;
583        while (i < tasot.Count)
584        {
585            if (((tasot[i].X - kohde.X) < 100) && ((tasot[i].X - kohde.X) > -100)
586                && ((tasot[i].Y - kohde.Y) < 80) && ((tasot[i].Y - kohde.Y) > -80))
587            {
588                tasot[i].Destroy();
589                tasot.RemoveAt(i);
590                pisteet += 100;
591                pisteetL.Value = pisteet;
592            }
593            else
594            {
595                i++;
596            }
597        }
598        int w = 0;
599        while (w < taso2t.Count)
600        {
601            if (((taso2t[w].X - kohde.X) < 100) && ((taso2t[w].X - kohde.X) > -100)
602                && ((taso2t[w].Y - kohde.Y) < 80) && ((taso2t[w].Y - kohde.Y) > -80))
603            {
604                taso2t[w].Destroy();
605                taso2t.RemoveAt(w);
606                pisteet += 300;
607                pisteetL.Value = pisteet;
608            }
609            else
610            {
611                w++;
612            }
613        }
614        int o = 0;
615        while (o < tntt.Count)
616        {
617            if (((tntt[o].X - kohde.X) < 100) && ((tntt[o].X - kohde.X) > -100)
618                && ((tntt[o].Y - kohde.Y) < 80) && ((tntt[o].Y - kohde.Y) > -80))
619            {
620                Vector räjähdysPaikka = tntt[o].Position;
621                tntt[o].Destroy();
622                tntt.RemoveAt(o);
623                pisteet += 100;
624                pisteetL.Value = pisteet;
625                Räjähdys(räjähdysPaikka);
626
627            }
628            else
629            {
630                o++;
631            }
632        }
633    }
634
635    void LuoPalikat(int x)
636    {
637
638        if (randomKentät == 0)
639        {
640            TileMap kentta = TileMap.FromFile("kentta" + x + ".txt");
641            kentta['#'] = lisaaTaso;
642            kentta['!'] = lisaaTaso2;
643            kentta['p'] = lisaaPystyTaso;
644            kentta['P'] = lisaaPystyTasoTuhoutumaton;
645            kentta['*'] = lisaaTNT;
646            kentta['T'] = lisaaTasoTuhoutumaton;
647            kentta['m'] = LuoMaila;
648            kentta['-'] = LuoReunat;
649            kentta['_'] = LuoAlaReuna;
650            kentta['y'] = LuoYläReuna;
651            kentta.Insert(20, 20);
652        }
653        else
654        {
655            TileMap kentta = TileMap.FromFile("kenttarandom.txt");
656            kentta['#'] = lisaaRandomTaso;
657            kentta['m'] = LuoMaila;
658            kentta['-'] = LuoReunat;
659            kentta['_'] = LuoAlaReuna;
660            kentta['y'] = LuoYläReuna;
661            kentta.Insert(40, 40);
662        }
663    }
664
665    PhysicsObject lisaaTaso()
666    {
667        PhysicsObject taso = PhysicsObject.CreateStaticObject(40, 10);
668        taso.Tag = "taso";
669        taso.Image = tasoKuva;
670        taso.Restitution = 1.0;
671        tasot.Add(taso);
672        return taso;
673    }
674
675    PhysicsObject lisaaTasoTuhoutumaton()
676    {
677        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(40, 10);
678        tasoTuhoutumaton.Tag = "ttaso";
679        tasoTuhoutumaton.Image = tasoTuhoutumatonKuva;
680        tasoTuhoutumaton.Restitution = 1.0;
681        return tasoTuhoutumaton;
682    }
683
684    PhysicsObject lisaaPystyTaso()
685    {
686        PhysicsObject taso = PhysicsObject.CreateStaticObject(10, 40);
687        taso.Tag = "taso";
688        taso.Image = tasoKuva;
689        taso.Restitution = 1.0;
690        tasot.Add(taso);
691        return taso;
692    }
693
694    PhysicsObject lisaaPystyTasoTuhoutumaton()
695    {
696        PhysicsObject tasoTuhoutumaton = PhysicsObject.CreateStaticObject(10, 40);
697        tasoTuhoutumaton.Tag = "ttaso";
698        tasoTuhoutumaton.Image = tasoTuhoutumatonKuvaPysty;
699        tasoTuhoutumaton.Restitution = 1.0;
700        return tasoTuhoutumaton;
701    }
702
703    PhysicsObject lisaaTaso2()
704    {
705        Taso2 taso2 = new Taso2();
706        taso2.Tag = "taso2";
707        taso2.Image = taso2Kuva;
708        taso2.Restitution = 1.0;
709        taso2t.Add(taso2);
710        return taso2;
711    }
712
713    PhysicsObject lisaaTNT()
714    {
715        tnt = PhysicsObject.CreateStaticObject(40, 10);
716        tnt.Image = tntKuva;
717        tnt.Restitution = 1;
718        tntt.Add(tnt);
719        tnt.Tag = "TNT";
720
721        return tnt;
722    }
723
724    PhysicsObject LuoMaila()
725    {
726        maila = PhysicsObject.CreateStaticObject(60.0, 10);
727        maila.Shape = Shape.Rectangle;
728        maila.Image = mailanKuva;
729        maila.Restitution = 0.5;
730        maila.Color = Color.Green;
731        AddCollisionHandler(maila, KäsitteleMailanTörmäys);
732        return maila;
733    }
734
735    PhysicsObject lisaaRandomTaso()
736    {
737        int tasonTyyppi = RandomGen.NextInt(1, 4);
738        PhysicsObject taso;
739
740        if (tasonTyyppi == 1)
741        {
742            taso = lisaaTaso();
743        }
744        else if (tasonTyyppi == 2)
745        {
746            taso = lisaaTaso2();
747        }
748        else if (tasonTyyppi == 3)
749        {
750            taso = lisaaTNT();
751        }
752        else if (tasonTyyppi == 4)
753        {
754            MessageDisplay.Add("tuli nelonen");
755            taso = lisaaTaso();
756        }
757        else
758        {
759            taso = lisaaTaso();
760        }
761
762
763        return taso;
764    }
765
766    PhysicsObject LuoReunat()
767    {
768        PhysicsObject reuna = PhysicsObject.CreateStaticObject(40, 800);
769        reuna.IsVisible = false;
770        reuna.Restitution = 1.0;
771        return reuna;
772    }
773
774    PhysicsObject LuoAlaReuna()
775    {
776        alaReuna = PhysicsObject.CreateStaticObject(800, 40);
777        alaReuna.Color = Color.Black;
778        alaReuna.IsVisible = false;
779        alaReuna.Restitution = 1.0;
780        return alaReuna;
781    }
782
783    PhysicsObject LuoYläReuna()
784    {
785        PhysicsObject yläReuna = PhysicsObject.CreateStaticObject(800, 40);
786        yläReuna.Color = Color.Black;
787        yläReuna.IsVisible = false;
788        yläReuna.Restitution = 1.0;
789        return yläReuna;
790    }
791
792    void KäsitteleMailanTörmäys(PhysicsObject maila, PhysicsObject kohde)
793    {
794        if (kohde.Tag.ToString() == "elämä")
795        {
796            AnnaElämä();
797            kohde.Destroy();
798        }
799        else if (kohde.Tag.ToString() == "Power1")
800        {
801           
802            if (pieniMaila == 1)
803            {
804                PalautaMaila();
805            }
806            else if (isoMaila == 0)
807            {
808                maila.Width += 20;
809                isoMaila = 1;
810                Timer.SingleShot(20, PalautaMaila);
811            }
812           
813            kohde.Destroy();
814        }
815        else if (kohde.Tag.ToString() == "Power2")
816        {
817            if (isoMaila == 1)
818            {
819                PalautaMaila();
820            }
821            else if (pieniMaila == 0)
822            {
823                kohde.Destroy();
824                pieniMaila = 1;
825                maila.Width -= 20;
826                Timer.SingleShot(20, PalautaMaila);
827            }
828           
829        }
830    }
831
832    void PalautaMaila()
833    {
834        if (isoMaila == 1)
835        {
836            maila.Width = 60;
837            isoMaila = 0;
838        }
839        if (pieniMaila == 1)
840        {
841            maila.Width = 60;
842
843            pieniMaila = 0;
844        }
845
846    }
847
848    void AsetaNopeus(PhysicsObject maila, Vector nopeus)
849    {
850        if ((nopeus.X < 0) && (maila.Left < Level.Left + 40))
851        {
852            maila.Velocity = Vector.Zero;
853            return;
854        }
855
856        if ((nopeus.X > 0) && (maila.Right > Level.Right - 40))
857        {
858            maila.Velocity = Vector.Zero;
859            return;
860        }
861        maila.Velocity = nopeus;
862    }
863
864    void HävisitPelin()
865    {
866        ClearAll();
867        Label tekstikentta = new Label("Hävisit. Sait " + pisteet + " pistettä");
868        Add(tekstikentta);
869        Timer.SingleShot(3, Valikko);
870    }
871
872    protected override void Update(Time time)
873    {
874        if (pallo != null && Math.Abs(pallo.Velocity.Y) < pallonNopeus)
875        {
876            pallo.Velocity = new Vector(pallo.Velocity.X, pallo.Velocity.Y * 1.1);
877
878        }
879        //if (pallo != null && Math.Abs(pallo.Velocity.X) < pallonNopeus)
880        //{
881        //    pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y);
882
883        //}
884        base.Update(time);
885
886    }
887
888
889}
Note: See TracBrowser for help on using the repository browser.