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

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