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

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