source: 2017/31/PatrikK/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/BEST_GAME_EVER.cs @ 9401

Revision 9401, 32.7 KB checked in by npo17_73, 23 months ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8class Kranaatinheitin:Cannon
9{
10    public Kranaatinheitin(double leveys, double korkeus)
11        : base(leveys, korkeus)
12    {
13       
14    }
15}
16
17public class Tasohyppelypeli : PhysicsGame
18{
19    double nopeus = 500;
20    double hyppyNopeus = 900;
21    int RUUDUN_KOKO = 40;
22    EasyHighScore topLista = new EasyHighScore();
23    Hahmo pelaaja1;
24    IntMeter pisteLaskuri;
25    IntMeter tahtilaskuri= new IntMeter(0);
26    IntMeter tappolaskuri;
27    IntMeter aivolaskuri;
28    //DoubleMeter elamalaskuri;
29    Image pelaajanKuva = LoadImage("norsu");
30    Image tahtiKuva = LoadImage("tahti");
31    DoubleMeter ÄänenVoimakkuus = new DoubleMeter(0.5, 0, 1);
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33    bool saaHeittaaKranaatin = true;
34    double kranaattiaika = 1.5;
35    List<Timer> ajastinlista = new List<Timer>();
36    int kenttaJossaOllaanNyt = 1;
37    bool huijattu = false;
38    bool alkuValikko = true;
39    double vaikeus = 1.0;
40
41
42    public override void Begin()
43    {
44        ClearAll();
45        AlkuTekstit();
46        ÄänenVoimakkuus.Changed += delegate { MediaPlayer.Volume = ÄänenVoimakkuus.Value; };
47        MediaPlayer.Play("background_music");
48        MediaPlayer.IsRepeating = true;
49        //IsFullScreen = true;
50    }
51    void AloitaPeli()
52    {
53        SmoothTextures = false;
54        ClearAll();
55        Gravity = new Vector(0, -1000);
56        IsMouseVisible = true;
57        LuoKentta();
58        HyvaksyKranaatti();
59        LisaaNappaimet();
60        LuoAivoLaskuri();
61        LuoPistelaskuri();
62        LuoTahtilaskuri();
63        LuoTappoLaskuri();
64        LuoElamaLaskuri();
65        Camera.Follow(pelaaja1);
66        Camera.ZoomFactor = 2.0;
67        Camera.StayInLevel = true;
68        huijattu = false;
69        alkuValikko = false;
70    }
71
72    void LuoKentta()
73    {
74        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaJossaOllaanNyt);
75               
76        kentta.SetTileMethod('#', LisaaTaso);
77        kentta.SetTileMethod('*', LisaaTahti);
78        kentta.SetTileMethod('N', LisaaPelaaja);
79        kentta.SetTileMethod('I', VihuSpawn);
80        kentta.SetTileMethod('P', TelePort);
81        kentta.SetTileMethod('S', Kauppa);
82        kentta.SetTileMethod('M', LisaaTahti1);
83        kentta.SetTileMethod('E', LisaaBox);
84
85        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
86        Level.CreateBorders();
87        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
88        Level.Background.Image = LoadImage("parallax-mountain-bg");
89        //Level.Background.TextureWrapSize = new Vector(2.0, 1.0);
90        Level.Background.FitToLevel();
91        PushButton tauko = new PushButton(LoadImage("TAUKO"));
92        Add(tauko);
93        tauko.Size = new Vector(90, 90);
94        tauko.Left = Screen.Left;
95        tauko.Clicked += TaukoValikko;
96       
97    }
98    void LisaaBox(Vector paikka, double leveys, double korkeus)
99    {
100        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
101        tahti.IgnoresCollisionResponse = true;
102        tahti.Position = paikka;
103        tahti.Image = LoadImage("box");
104        tahti.Tag = "box";
105        Add(tahti);
106    }
107
108    void LisaaTaso(Vector paikka, double leveys, double korkeus)
109    {
110        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
111        taso.Position = paikka;
112        taso.Image = LoadImage("bricks");
113        Add(taso);
114        //taso.MakeOneWay();
115       
116    }
117
118    void LisaaTahti(Vector paikka, double leveys, double korkeus)
119    {
120        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
121        tahti.IgnoresCollisionResponse = true;
122        tahti.Position = paikka;
123        tahti.Image = tahtiKuva;
124        tahti.Tag = "tahti";
125        Add(tahti);
126    }
127    void LisaaTahti1(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
130        tahti.IgnoresCollisionResponse = true;
131        tahti.Position = paikka;
132        tahti.Image = LoadImage("star");
133        tahti.Tag = "star";
134        Add(tahti);
135    }
136    void Kauppa(Vector paikka, double leveys, double korkeus)
137    {
138        PhysicsObject store = PhysicsObject.CreateStaticObject(leveys * 2, korkeus * 2);
139        store.Position = paikka+new Vector(0.0,korkeus / 2.0);
140        store.Image = LoadImage("store");
141        Add(store,3);
142        int pMaxMaara = 100;
143        ExplosionSystem rajahdys =
144          new ExplosionSystem(LoadImage("dollar"), pMaxMaara);
145        Add(rajahdys);
146
147        double x = store.X;
148        double y = store.Y;
149        int pMaara = 1;
150        rajahdys.MaxScale = 70;
151        rajahdys.MinScale = 40;
152        rajahdys.MaxLifetime = 2;
153        rajahdys.MaxVelocity = 25;
154        Timer ajastin = new Timer();
155        ajastin.Interval = 0.1;
156        ajastin.Timeout += delegate { rajahdys.AddEffect(x, y, pMaara); };
157        ajastin.Start();
158        store.Tag = "store";
159        //taso.MakeOneWay();
160
161    }
162
163    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
164    {
165        pelaaja1 = new Hahmo(leveys, korkeus);
166        pelaaja1.Position = paikka;
167        pelaaja1.Mass = 400000.0;
168        pelaaja1.Image = pelaajanKuva;
169        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
170        AddCollisionHandler(pelaaja1, "star", TormaaTahteen1);
171        AddCollisionHandler(pelaaja1, "tele", TormaaTeleport);
172        AddCollisionHandler(pelaaja1, "box", TormaaBox);
173        AddCollisionHandler(pelaaja1, "store", delegate (PhysicsObject a,PhysicsObject b){ KauppaValikko(); });
174        Add(pelaaja1);
175        //pelaaja1 on PlatformCharacter-tyyppinen
176
177        pelaaja1.Weapon = new Cannon(30, 10);
178        pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
179        pelaaja1.Weapon.Image = LoadImage("cannon");
180        if (pelaaja1.Weapon is Cannon)
181            pelaaja1.Weapon.FireRate = 0.2;
182        pelaaja1.Weapon.AmmoIgnoresGravity = false;
183        pelaaja1.Destroyed += GameOver;
184        //Ammusten määrä aluksi:
185        //pelaaja1.Weapon.Ammo.Value = 99999999;
186
187        //Mitä tapahtuu kun ammus osuu johonkin?
188        pelaaja1.Tag = "pelaaja1";
189
190        Timer ammuajastinhajalle = new Timer();
191        ammuajastinhajalle.Interval = 1;
192        ammuajastinhajalle.Timeout += delegate { pelaaja1.ElamaLaskuri.Value += 1; };
193        ammuajastinhajalle.Start();
194
195    }
196    void TormaaBox(PhysicsObject pelaaja, PhysicsObject box)
197    {
198        box.Destroy();
199        Timer.SingleShot(7, delegate { LisaaBox(box.Position, 40, 40); });
200        aivolaskuri.Value += 5;
201    }
202
203    void LisaaNappaimet()
204    {
205        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
206        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
207
208        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
209        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
210        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
211        Keyboard.Listen(Key.T, ButtonState.Down, Rajayta, ("Räjäytä itsesi"));
212        Keyboard.Listen(Key.J, ButtonState.Pressed, Pala, ("Sytytä itsesi tuleen"));
213        Keyboard.Listen(Key.Space, ButtonState.Released, LentoLopuu, "Lopeta lento", pelaaja1);
214        Keyboard.Listen(Key.G, ButtonState.Pressed, HeitaKranaatti, ("Heitä kranaatti"), pelaaja1);
215        Keyboard.Listen(Key.Enter, ButtonState.Pressed, Konsoli, "Käytä huijauskoodeja - et pääse top 10:n");
216        Keyboard.Listen(Key.Space, ButtonState.Down, Lento, "Lennä");
217        Keyboard.Listen(Key.Space, ButtonState.Released, EiLento, null);
218        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
219        Mouse.ListenWheel(ZoomWheel, "Zoomaa");
220        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
221
222        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -1.0);
223        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, 1.0);
224        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
225
226        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
227    }
228    void ZoomWheel()
229    {
230        Camera.Zoom(Mouse.WheelChange * 0.1);
231    }
232    void Pala()
233    {
234        Flame liekki = new Flame(LoadImage("flame"));
235        liekki.Position = new Vector(0, 0);
236        Add(liekki);
237
238        Timer ammuajastinhajalle = new Timer();
239        ammuajastinhajalle.Interval = 0.1;
240        ammuajastinhajalle.Timeout += delegate { liekki.Position = pelaaja1.Position; };
241        ammuajastinhajalle.Start();
242    }
243    void Rajayta()
244    {
245        int pMaxMaara = 50;
246        ExplosionSystem rajahdys =
247          new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
248
249        Add(rajahdys);
250
251        double x = pelaaja1.X;
252        double y = pelaaja1.Y;
253        int pMaara = 500;
254        rajahdys.MaxVelocity = 1;
255        rajahdys.MaxScale = 20;
256        rajahdys.MinScale = 10;
257        rajahdys.MaxLifetime = 2;
258        rajahdys.AddEffect(x, y, pMaara);
259    }
260
261    void Liikuta(PlatformCharacter hahmo, double suunta)
262    {
263        hahmo.Walk(nopeus * suunta);
264    }
265
266    void Hyppaa(PlatformCharacter hahmo, double nopeus)
267    {
268        hahmo.Jump(nopeus);
269    }
270    void Lento()
271    {
272        pelaaja1.IgnoresGravity = true;
273    }
274    void EiLento()
275    {
276        pelaaja1.IgnoresGravity = false;
277    }
278   
279
280    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
281    {
282        MessageDisplay.Add("Keräsit tähden!");
283        MessageDisplay.MaxMessageCount = 10;
284        tahti.Destroy();
285        tahtilaskuri.AddValue(1);
286       
287       
288    }
289    void TormaaTahteen1(PhysicsObject hahmo, PhysicsObject tahti)
290    {
291        MessageDisplay.Add("Keräsit tähden!");
292        MessageDisplay.MaxMessageCount = 10;
293        tahti.Destroy();
294        tahtilaskuri.AddValue(10);
295
296
297    }
298    void Lenna(PlatformCharacter hahmo, double nopeus)
299    {
300        hahmo.Push(new Vector(0, nopeus));
301        hahmo.IgnoresCollisionResponse = false;
302       
303    }
304    void LentoLopuu(PlatformCharacter hahmo)
305    {
306        hahmo.IgnoresCollisionResponse = false;
307    }
308    void NoClip(PlatformCharacter hahmo)
309    {
310        hahmo.IgnoresCollisionResponse = true;
311    }
312    void NoClipOff(PlatformCharacter hahmo)
313    {
314        hahmo.IgnoresCollisionResponse = false;
315    }
316    void VihunAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
317    {
318       
319        if(kohde.Tag=="pelaaja1")
320        {
321            (kohde as Hahmo).ElamaLaskuri.Value -= 1;
322            (kohde as Hahmo).ElamaLaskuri.MaxValue += 1;
323        }
324    }
325    void PelaajanAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
326    {
327
328        if (kohde.Tag == "VIHOLLINEN")
329        {
330            if (pelaaja1.Weapon is Cannon)
331                (kohde as Hahmo).ElamaLaskuri.Value -= 20.0;
332            else if (pelaaja1.Weapon is AssaultRifle)
333                (kohde as Hahmo).ElamaLaskuri.Value -= 3.0;
334            else if (pelaaja1.Weapon is PlasmaCannon)
335                (kohde as Hahmo).ElamaLaskuri.Value -= 5.0;
336            else if (pelaaja1.Weapon is LaserGun)
337                (kohde as Hahmo).ElamaLaskuri.Value -= 0.5;
338        }
339    }
340    void AmmuAseella(PlatformCharacter pelaaja)
341    {
342        PhysicsObject ammus = pelaaja.Weapon.Shoot();
343
344        if (ammus != null)
345        {
346           
347            //ammus.Image = LoadImage("ammus");
348            if (pelaaja1.Weapon is Kranaatinheitin)
349            {
350                ammus.Image = LoadImage("grenade");
351                ammus.Size *= 1.5;
352                Timer.SingleShot(3, delegate
353                {
354                    Explosion rajahdys = new Explosion(125);
355                    rajahdys.Position = ammus.Position;
356                    Add(rajahdys);
357                    rajahdys.AddShockwaveHandler("VIHOLLINEN", KranaattiOsui);
358
359                });
360            }
361            else if (pelaaja1.Weapon is Cannon)
362            {
363                ammus.Image = LoadImage("cannonball");
364                ammus.Size *= 1.5;
365                ammus.IgnoresCollisionResponse = false;
366            }
367            else if (pelaaja1.Weapon is PlasmaCannon)
368            {
369                ammus.Image = LoadImage("plasma");
370                ammus.Size *= 5.0;
371                //ammus.CollisionIgnoreGroup = 3;
372            }
373               
374            else if (pelaaja1.Weapon is LaserGun)
375            {
376                ammus.Image = LoadImage("laser");
377                ammus.Width *= 7.5;
378                ammus.Velocity *= 0.1;
379                //ammus.CollisionIgnoreGroup = 3;
380            }
381            else if (pelaaja1.Weapon is AssaultRifle)
382            {
383                ammus.Image = LoadImage("bullet");
384                ammus.Size *= 1.5;
385                //ammus.CollisionIgnoreGroup = 3;
386            }
387               
388           
389            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
390            ammus.IgnoresCollisionResponse = false;
391           
392            pelaaja.Weapon.AttackSound.Stop();
393        }
394    }
395    void LisaaVihu(Vector paikka, double leveys, double korkeus)
396    {
397        Hahmo vihu = new Hahmo(leveys, korkeus);
398        vihu.Position = paikka;
399        vihu.Mass = 4.0;
400        vihu.Image = LoadImage("zombi");
401        vihu.Tag = "VIHOLLINEN";
402        Add(vihu);
403        vihu.CollisionIgnoreGroup = 3;
404        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
405        tasoAivot.Speed = 300;
406        tasoAivot.FallsOffPlatforms = true;
407        tasoAivot.JumpSpeed = 700;
408        tasoAivot.TriesToJump = true;
409        vihu.Brain = tasoAivot;
410        //pelaaja1 on PlatformCharacter-tyyppinen
411        vihu.Weapon = new AssaultRifle(30, 10);
412        vihu.Weapon.FireRate = 2;
413        vihu.Destroyed += delegate {aivolaskuri.AddValue(RandomGen.SelectOne(0,1)); };
414        //Ammusten määrä aluksi:
415        vihu.Weapon.Ammo.Value = 99999999;
416        vihu.Weapon.MaxAmmoLifetime = TimeSpan.FromSeconds(2.0);
417        //Mitä tapahtuu kun ammus osuu johonkin?
418        vihu.Weapon.ProjectileCollision = VihunAmmusOsui;
419       
420        Timer ammuajastinhajalle = new Timer();
421        ammuajastinhajalle.Interval = 2 * vaikeus;
422        ammuajastinhajalle.Timeout += delegate { VihuAmmuAseella(vihu); };
423        ammuajastinhajalle.Start();
424
425        vihu.Destroyed += delegate { tappolaskuri.Value += 1; ammuajastinhajalle.Stop(); };
426       
427    }
428    void VihuSpawn(Vector paikka, double leveys, double korkeus)
429    {
430        Timer spawntimer = new Timer();
431        spawntimer.Interval = 3.0 * vaikeus;
432        if (kenttaJossaOllaanNyt == 2)
433            spawntimer.Interval = 7.0 * vaikeus;
434        spawntimer.Timeout += delegate { LisaaVihu(paikka, leveys, korkeus); };
435        spawntimer.Start();
436        ajastinlista.Add(spawntimer);
437    }
438    void HeitaKranaatti(PlatformCharacter pelaaja)
439    {
440       
441       
442        if (saaHeittaaKranaatin)
443        {
444            Grenade kranu = new Grenade(2.0);
445            pelaaja.Throw(kranu, Angle.FromDegrees(45), 10000);
446            kranu.Explosion.AddShockwaveHandler("VIHOLLINEN", KranaattiOsui);
447            kranu.Size *= 5.0;
448            kranu.Explosion.Speed = 350;
449            AddCollisionHandler<Grenade, PhysicsObject>(kranu, "VIHOLLINEN", GrenadeCollide);
450
451            saaHeittaaKranaatin = false;
452            Timer.SingleShot(kranaattiaika, HyvaksyKranaatti);
453        }
454       
455
456    }
457    void KauppaValikko()
458    {
459        MultiSelectWindow Valikko = new MultiSelectWindow("Kauppa",
460"Osta konekivääri, 10 aivoa", "Osta plasma-ase, 25 aivoa", "Osta laser, 50 aivoa", "Osta kranaatinheitin, 100 aivoa");
461        Add(Valikko);
462        Valikko.AddItemHandler(0, OstaRifle);
463        Valikko.AddItemHandler(1, OstaPlasma);
464        Valikko.AddItemHandler(2, OstaLaser);
465        Valikko.AddItemHandler(3, OstaKranuHeitin);
466    }
467    void OstaRifle()
468    {
469        if(aivolaskuri.Value > 10)
470        {
471            aivolaskuri.Value -= 10;
472            pelaaja1.Weapon = new AssaultRifle(30, 10);
473            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
474            pelaaja1.Weapon.FireRate = 5;
475            pelaaja1.Weapon.Image = LoadImage("assaultrifle");
476        }
477
478    }
479    void OstaPlasma()
480    {
481        if(aivolaskuri.Value > 25)
482        {
483            aivolaskuri.Value -= 25;
484            pelaaja1.Weapon = new PlasmaCannon(30, 10);
485            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
486            pelaaja1.Weapon.FireRate = 5;
487            pelaaja1.Weapon.Image = LoadImage("plasmacannon");
488        }
489       
490    }
491    void OstaLaser()
492    {
493        if(aivolaskuri.Value > 50)
494        {
495            aivolaskuri.Value -= 50;
496            pelaaja1.Weapon = new LaserGun(30, 10);
497            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
498            pelaaja1.Weapon.FireRate = 25;
499            pelaaja1.Weapon.Image = LoadImage("lasercannon");
500        }
501       
502    }
503    void OstaKranuHeitin()
504    {
505        if (aivolaskuri.Value > 100)
506        {
507            aivolaskuri.Value -= 100;
508            pelaaja1.Weapon = new Kranaatinheitin(30, 10);
509            pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
510            pelaaja1.Weapon.FireRate = 0.5;
511            pelaaja1.Weapon.Image = LoadImage("lol");
512        }
513    }
514    void VihuAmmuAseella(PlatformCharacter pelaaja)
515    {
516        PhysicsObject ammus = pelaaja.Weapon.Shoot();
517
518        if (ammus != null)
519        {
520            ammus.Size *= 3.5;
521            ammus.Image = LoadImage("bullet1");
522            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
523            ammus.IgnoresCollisionResponse = true;
524            pelaaja.Weapon.AttackSound.Stop();
525        }
526    }
527    void HyvaksyKranaatti()
528    {
529        saaHeittaaKranaatin = true;
530    }
531    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
532    {
533        //rajahdyksenKohde.Destroy();
534        (rajahdyksenKohde as Hahmo).ElamaLaskuri.AddValue(-10);
535    }
536    void GrenadeCollide(Grenade kranu, PhysicsObject zombi)
537    {
538        kranu.Explode();
539        kranu.Explode();
540    }
541    void Konsoli()
542    {
543        if(vaikeus == 0.1)
544        {
545            return;
546        }
547
548        InputWindow kysymysIkkuna = new InputWindow("Huijauskoodi?");
549        kysymysIkkuna.TextEntered += ProcessInput;
550        Add(kysymysIkkuna);
551    }
552    void ProcessInput(InputWindow ikkuna)
553    {
554        string vastaus = ikkuna.InputBox.Text;
555        string[] palat = vastaus.Split(' ');
556        try
557        {
558            TeeKomento(palat);
559        }
560        catch
561        {
562            MessageDisplay.Add("Tuo on mahdotonta -_-");
563            MessageDisplay.X = 400;
564            MessageDisplay.Y = 400;
565            Timer.SingleShot(3, delegate { MessageDisplay.X = 0; MessageDisplay.Y = 0; });
566        }
567    }
568
569    void TeeKomento(string[] palat)
570    { 
571
572        // 1 osaiset komennot
573        if (palat.Length == 1)
574        {
575            string komento = palat[0];
576
577            if (komento == "exit")
578            {
579                Exit();
580            }
581            if(komento=="pysäytäspawni")
582            {
583                foreach(Timer spawntimer in ajastinlista)
584                {
585                    spawntimer.Stop();
586                }
587               
588               
589            }
590            if (komento == "aloitaspawni")
591            {
592                foreach (Timer spawntimer in ajastinlista)
593                {
594                    spawntimer.Start();
595                }
596
597            }
598            if(komento=="ClearAll")
599            {
600                ClearAll();
601                huijattu = false;
602                return;
603            }
604            if(komento=="vaikeus:vaikea")
605            {
606               
607                if(0.1 <= vaikeus)
608                {
609                    vaikeus = 0.1;
610                    huijattu = false;
611                    return;
612                }
613                else
614                {
615                    vaikeus = 0.1;
616                }
617            }
618            if (komento == "semigod")
619            {
620                pelaaja1.ElamaLaskuri.MaxValue = 10000;
621                pelaaja1.ElamaLaskuri.Value = 10000;
622                huijattu = false;
623                return;
624            }
625            if (komento == "god")
626            {
627                pelaaja1.ElamaLaskuri.MaxValue = 99999999;
628                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue;
629            }
630
631            if (komento == "häviä")
632            {
633                pelaaja1.Destroy();
634                huijattu = false;
635                return;
636            }
637            if (komento == "hyvaksykranu")
638            {
639                kranaattiaika = 0.01;
640                Keyboard.Listen(Key.G, ButtonState.Down, HeitaKranaatti, null, pelaaja1);
641            }
642           
643        }
644
645        // 2 osaiset komennot
646        if (palat.Length == 2)
647        {
648            string komento = palat[0];
649            double numero = double.Parse(palat[1]);
650
651            if (komento == "firerate")
652            {
653                pelaaja1.Weapon.FireRate = numero;
654            }
655
656            if (komento == "zombi")
657            {
658                for (int i = 0; i < numero; i++)
659                {
660                    LisaaVihu(pelaaja1.Position+RandomGen.NextVector(0,100),40,40);
661                    huijattu = false;
662                    return;
663                }
664            }
665
666            if(komento=="gravity")
667            {
668                Gravity = new Vector(0,numero);
669            }
670            if (komento == "speed")
671            {
672                nopeus = numero;
673            }
674            if(komento=="aivo")
675            {
676                aivolaskuri.Value = (int)numero;
677            }
678            if(komento=="MessageDisplayX")
679            {
680                MessageDisplay.X = numero;
681                huijattu = false;
682                return;
683            }
684            if (komento == "MessageDisplayY")
685            {
686                MessageDisplay.Y = numero;
687                huijattu = false;
688                return;
689            }
690
691            if (komento=="god")
692            {
693                pelaaja1.ElamaLaskuri.MaxValue = 99999999;
694                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue;
695            }
696            if(komento=="kranuheittoaika")
697            {
698                kranaattiaika = numero;
699            }
700            if(komento=="tähti")
701            {
702                tahtilaskuri.Value = (int)numero;
703            }
704            if(komento=="tahti")
705            {
706                tahtilaskuri.Value = (int)numero;
707                huijattu = false;
708                return;
709            }
710           
711        }
712
713
714        huijattu = true;
715    }
716    void TaukoValikko()
717    {
718        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin taukovalikko",
719"Palaa peliin", "Lopeta", "Asetukset","Aloita uudelleen","Tekijät" ,"Musiikki");
720        Add(alkuValikko);
721        alkuValikko.DefaultCancel = 3;
722        alkuValikko.Color = Color.Charcoal;
723        alkuValikko.AddItemHandler(0, Jatka); 
724        alkuValikko.AddItemHandler(1, Exit);
725        alkuValikko.AddItemHandler(2, AliOhjelma);
726        alkuValikko.AddItemHandler(3, UudelleenAloitus);
727        alkuValikko.AddItemHandler(4, Tekijat);
728        alkuValikko.AddItemHandler(5, Musiikki);
729
730
731    }
732    void AliOhjelma()
733    {
734        MultiSelectWindow Asetukset = new MultiSelectWindow("ASETUKSET",
735            "Palaa valikkoon", "Äänenvoimakkuus");
736        Add(Asetukset);
737        Asetukset.AddItemHandler(0, TaukoValikko);
738        Asetukset.AddItemHandler(1, AanenVoimakkuus);
739       
740       
741       // ÄänenVoimakkuus.Changed += ZoomaaKenttaa;
742
743       
744    }
745    void UudelleenAloitus()
746    {
747        AloitaPeli();
748    }
749    void Jatka()
750    {
751
752    }
753    void ParhaatPisteet()
754    {
755        topLista.Show();
756    }
757
758
759    void LuoPistelaskuri()
760    {
761        pisteLaskuri = new IntMeter(0);
762
763        Label pisteNaytto = new Label();
764        pisteNaytto.X = Screen.Left + 100;
765        pisteNaytto.Y = Screen.Top - 100;
766        pisteNaytto.TextColor = Color.Black;
767        pisteNaytto.Color = Color.White;
768
769        pisteNaytto.BindTo(pisteLaskuri);
770        Add(pisteNaytto);
771    }
772    void AanenVoimakkuus()
773    {
774        Slider liukusaadin = new Slider(200, 20);
775        liukusaadin.BindTo(ÄänenVoimakkuus);
776        liukusaadin.Color = Color.Gray;
777        liukusaadin.InactiveColor = Color.Ivory;
778        liukusaadin.ActiveColor = Color.DarkJungleGreen;
779        Add(liukusaadin);
780        PushButton Takaisin = new PushButton("OK");
781        Takaisin.Clicked += delegate { liukusaadin.Destroy();Takaisin.Destroy();AliOhjelma(); };
782        Takaisin.Y = -100;
783        Add(Takaisin);
784    }
785    void TelePort(Vector paikka, double leveys, double korkeus)
786    {
787        PhysicsObject teleport = PhysicsObject.CreateStaticObject(leveys, korkeus);
788        teleport.Position = paikka;
789        teleport.Image = LoadImage("blackhole");
790        Add(teleport, 3);
791        teleport.Tag = "tele";
792        int pMaxMaara = 100;
793        ExplosionSystem rajahdys =
794          new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
795        Add(rajahdys);
796
797        double x = teleport.X;
798        double y = teleport.Y;
799        int pMaara = 1;
800        rajahdys.MaxScale = 20;
801        rajahdys.MinScale = 10;
802        rajahdys.MaxLifetime = 2;
803        rajahdys.MaxVelocity = 5;
804        Timer ajastin = new Timer();
805        ajastin.Interval = 0.1;
806        ajastin.Timeout += delegate { rajahdys.AddEffect(x, y, pMaara); };
807        ajastin.Start();
808    }
809    void TormaaTeleport(PhysicsObject pelaaja1, PhysicsObject teleport)
810    {
811        if(tahtilaskuri.Value>100)
812        {
813            if(kenttaJossaOllaanNyt==1) kenttaJossaOllaanNyt = 2;
814            else if (kenttaJossaOllaanNyt == 2) kenttaJossaOllaanNyt = 1;
815            AloitaPeli();
816        }
817    }
818    void LuoTahtilaskuri()
819    {
820        //tahtilaskuri =
821
822        Label pisteNaytto = new Label();
823        pisteNaytto.X = Screen.Left + 80;
824        pisteNaytto.Y = Screen.Top - 80;
825        pisteNaytto.TextColor = Color.Black;
826        pisteNaytto.Color = Color.White;
827
828        pisteNaytto.BindTo(tahtilaskuri);
829        Add(pisteNaytto);
830    }
831    void LuoElamaLaskuri()
832    {
833        //elamalaskuri = new DoubleMeter(25);
834        //elamalaskuri.MaxValue = 25;
835        //elamalaskuri.LowerLimit += pelaaja1.Destroy;
836
837        ProgressBar elamaPalkki = new ProgressBar(150, 20);
838        elamaPalkki.X = Screen.Left + 150;
839        elamaPalkki.Y = Screen.Top - 20;
840        elamaPalkki.BindTo(pelaaja1.ElamaLaskuri);
841        elamaPalkki.Color = Color.Black;
842        elamaPalkki.BorderColor = Color.Black;
843        Add(elamaPalkki);
844    }
845    void LuoTappoLaskuri()
846    {
847        tappolaskuri = new IntMeter(0);
848
849        Label pisteNaytto = new Label();
850        pisteNaytto.X = Screen.Left + 60;
851        pisteNaytto.Y = Screen.Top - 60;
852        pisteNaytto.TextColor = Color.Black;
853        pisteNaytto.Color = Color.White;
854
855        pisteNaytto.BindTo(tappolaskuri);
856        Add(pisteNaytto);
857    }
858    void LuoAivoLaskuri()
859    {
860        aivolaskuri = new IntMeter(0);
861
862        Label pisteNaytto = new Label();
863        pisteNaytto.X = Screen.Left + 40;
864        pisteNaytto.Y = Screen.Top - 40;
865        pisteNaytto.TextColor = Color.Black;
866        pisteNaytto.Color = Color.White;
867       
868
869        pisteNaytto.BindTo(aivolaskuri);
870        Add(pisteNaytto);
871    }
872    void GameOver()
873    {
874        if (huijattu)
875        {
876            Begin();
877        }
878        else
879        {
880            topLista.EnterAndShow(pisteLaskuri.Value + tahtilaskuri.Value);
881            topLista.HighScoreWindow.Closed += (w) => AlkuValikko();
882
883        }
884       
885
886       
887       
888    }
889    void AlkuValikko()
890    {
891        ClearAll();
892        alkuValikko = true;
893        MultiSelectWindow Valikko = new MultiSelectWindow("Pelin alkuvalikko",
894"Aloita peli", "Parhaat pisteet", "Lopeta", "Tekijät", "Musiikki", "Vaikeustaso");
895        Add(Valikko);
896        Valikko.AddItemHandler(0, AloitaPeli);
897        Valikko.AddItemHandler(1, ParhaatPisteet);
898        Valikko.AddItemHandler(2, Exit);
899        Valikko.AddItemHandler(3, Tekijat);
900        Valikko.AddItemHandler(4, Musiikki);
901        Valikko.AddItemHandler(5, Difficulty);
902    }
903    void Tekijat()
904    {
905        MessageDisplay.Add("Tekijät: Patu");
906        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
907        MessageDisplay.Add("Tehty Visual Studio 2015 ja avustajien avulla");
908        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
909        MessageDisplay.Add("Koodauskieli: C#");
910        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
911        MessageDisplay.X = 200;
912        MessageDisplay.Y = 200;
913        MessageDisplay.MaxMessageCount = 10;
914        if (alkuValikko)
915            AlkuValikko();
916        else
917            TaukoValikko();
918    }
919    void Difficulty()
920    {
921        MultiSelectWindow VaikeusValikko = new MultiSelectWindow("Vaikeustaso", "Helppo", "Keskivaikea", "Vaikea", "Mahdoton");
922        VaikeusValikko.AddItemHandler(0, Helppo);
923        VaikeusValikko.AddItemHandler(1, Keskivaikea);
924        VaikeusValikko.AddItemHandler(2, Vaikea);
925        VaikeusValikko.AddItemHandler(3, Mahdoton);
926        VaikeusValikko.AddItemHandler(4, AlkuValikko);
927        Add(VaikeusValikko);
928        MessageDisplay.Add("Mahdoton - sairaasti lagia");
929    }
930    void Helppo()
931    {
932        vaikeus = 2.0;
933        AlkuValikko();
934    }
935    void Keskivaikea()
936    {
937        vaikeus = 1.5;
938        AlkuValikko();
939    }
940    void Vaikea()
941    {
942        vaikeus = 1.0;
943        AlkuValikko();
944    }
945    void Mahdoton()
946    {
947        vaikeus = 0.1;
948        AlkuValikko();
949    }
950    void Musiikki()
951    {
952        MultiSelectWindow MusiikkiValikko = new MultiSelectWindow("Musiikki", "Default", "Musiikki1", "Musiikki2", "Ringtone remix", "Ringtone remix2", "Ei musiikkia");
953        MusiikkiValikko.AddItemHandler(0, Default);
954        MusiikkiValikko.AddItemHandler(1, Musiikki1);
955        MusiikkiValikko.AddItemHandler(2, Musiikki2);
956        MusiikkiValikko.AddItemHandler(3, Musiikki3);
957        MusiikkiValikko.AddItemHandler(4, Musiikki4);
958        MusiikkiValikko.AddItemHandler(5, EiMusiikkia);
959        Add(MusiikkiValikko);
960   
961    }
962    void Musiikki1()
963    {
964        MediaPlayer.Play("music1");
965        if (alkuValikko)
966            AlkuValikko();
967        else
968            TaukoValikko();
969    }
970    void Musiikki2()
971    {
972        MediaPlayer.Play("music2");
973        if (alkuValikko)
974            AlkuValikko();
975        else
976            TaukoValikko();
977    }
978    void Musiikki3()
979    {
980        MediaPlayer.Play("lol1");
981        MediaPlayer.IsRepeating = true;
982        if (alkuValikko)
983            AlkuValikko();
984        else
985            TaukoValikko();
986    }
987    void Musiikki4()
988    {
989        MediaPlayer.Play("lol2");
990        MediaPlayer.IsRepeating = true;
991        if (alkuValikko)
992            AlkuValikko();
993        else
994            TaukoValikko();
995    }
996    void EiMusiikkia()
997    {
998        MediaPlayer.IsMuted = true;
999        if (alkuValikko)
1000            AlkuValikko();
1001        else
1002            TaukoValikko();
1003    }
1004    void Default()
1005    {
1006        MediaPlayer.Play("background_music");
1007        if (alkuValikko)
1008            AlkuValikko();
1009        else
1010            TaukoValikko();
1011    }
1012    void AlkuTekstit()
1013    {
1014        int pMaxMaara = 200;
1015        ExplosionSystem rajahdys =
1016          new ExplosionSystem(LoadImage("rajahdys"), pMaxMaara);
1017
1018        Add(rajahdys);
1019
1020        double x = 0;
1021        double y = 0;
1022        int pMaara = 500;
1023        rajahdys.MaxLifetime = 4;
1024        rajahdys.AddEffect(x, y, pMaara);
1025        Label teksti = new Label("Tehty Visual Studio 2015 avulla");
1026        Add(teksti);
1027        Label logo = new Label(LoadImage("logo"));
1028        logo.X = 0;
1029        logo.Y = 200;
1030        Add(logo);
1031        Timer.SingleShot(4, AlkuValikko);
1032    }
1033
1034
1035
1036
1037
1038}
1039class Hahmo : PlatformCharacter
1040{
1041    private DoubleMeter elamaLaskuri = new DoubleMeter(25, 0, 25);
1042    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
1043
1044    public Hahmo(double leveys, double korkeus)
1045        : base(leveys, korkeus)
1046    {
1047        elamaLaskuri.LowerLimit += delegate {
1048            this.Destroy(); };
1049    }
1050}
Note: See TracBrowser for help on using the repository browser.