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

Revision 9340, 22.4 KB checked in by npo17_73, 4 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
9public class Tasohyppelypeli : PhysicsGame
10{
11    double nopeus = 700;
12    double hyppyNopeus = 900;
13    int RUUDUN_KOKO = 40;
14    EasyHighScore topLista = new EasyHighScore();
15    Hahmo pelaaja1;
16    IntMeter pisteLaskuri;
17    IntMeter tahtilaskuri= new IntMeter(0);
18    IntMeter tappolaskuri;
19    IntMeter aivolaskuri;
20    //DoubleMeter elamalaskuri;
21    Image pelaajanKuva = LoadImage("norsu");
22    Image tahtiKuva = LoadImage("tahti");
23    DoubleMeter ÄänenVoimakkuus = new DoubleMeter(0.5, 0, 1);
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25    bool saaHeittaaKranaatin = true;
26    double kranaattiaika = 1.5;
27    List<Timer> ajastinlista = new List<Timer>();
28    int kenttaJossaOllaanNyt = 1;
29    bool huijattu = false;
30    bool alkuValikko = true;
31    double vaikeus = 1.0;
32
33
34    public override void Begin()
35    {
36        ClearAll();
37        AlkuTekstit();
38        ÄänenVoimakkuus.Changed += delegate { MediaPlayer.Volume = ÄänenVoimakkuus.Value; };
39        MediaPlayer.Play("background_music");
40        MediaPlayer.IsRepeating = true;
41    }
42    void AloitaPeli()
43    { 
44        ClearAll();
45        Gravity = new Vector(0, -1000);
46        IsMouseVisible = true;
47        LuoKentta();
48        LisaaNappaimet();
49        LuoAivoLaskuri();
50        LuoPistelaskuri();
51        LuoTahtilaskuri();
52        LuoTappoLaskuri();
53        LuoElamaLaskuri();
54        Camera.Follow(pelaaja1);
55        Camera.ZoomFactor = 2.0;
56        Camera.StayInLevel = true;
57        huijattu = false;
58        alkuValikko = false;
59    }
60
61    void LuoKentta()
62    {
63        TileMap kentta = TileMap.FromLevelAsset("kentta" + kenttaJossaOllaanNyt);
64               
65        kentta.SetTileMethod('#', LisaaTaso);
66        kentta.SetTileMethod('*', LisaaTahti);
67        kentta.SetTileMethod('N', LisaaPelaaja);
68        kentta.SetTileMethod('I', VihuSpawn);
69        kentta.SetTileMethod('P', TelePort);
70        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
71        Level.CreateBorders();
72        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
73        Level.Background.Image = LoadImage("background");
74        //Level.Background.TextureWrapSize = new Vector(2.0, 1.0);
75        Level.Background.FitToLevel();
76        PushButton tauko = new PushButton(LoadImage("TAUKO"));
77        Add(tauko);
78        tauko.Size = new Vector(90, 90);
79        tauko.Left = Screen.Left;
80        tauko.Clicked += TaukoValikko;
81       
82    }
83
84    void LisaaTaso(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        taso.Position = paikka;
88        taso.Image = LoadImage("ruoho");
89        Add(taso);
90        //taso.MakeOneWay();
91       
92    }
93
94    void LisaaTahti(Vector paikka, double leveys, double korkeus)
95    {
96        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
97        tahti.IgnoresCollisionResponse = true;
98        tahti.Position = paikka;
99        tahti.Image = tahtiKuva;
100        tahti.Tag = "tahti";
101        Add(tahti);
102    }
103
104    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
105    {
106        pelaaja1 = new Hahmo(leveys, korkeus);
107        pelaaja1.Position = paikka;
108        pelaaja1.Mass = 400000.0;
109        pelaaja1.Image = pelaajanKuva;
110        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
111        AddCollisionHandler(pelaaja1, "tele", TormaaTeleport);
112        Add(pelaaja1);
113        //pelaaja1 on PlatformCharacter-tyyppinen
114        pelaaja1.Weapon = new LaserGun(30, 10);
115        pelaaja1.Weapon.FireRate = 100;
116        pelaaja1.Destroyed += GameOver;
117        //Ammusten määrä aluksi:
118        //pelaaja1.Weapon.Ammo.Value = 99999999;
119
120        //Mitä tapahtuu kun ammus osuu johonkin?
121        pelaaja1.Weapon.ProjectileCollision = PelaajanAmmusOsui;
122        pelaaja1.Tag = "pelaaja1";
123
124        Timer ammuajastinhajalle = new Timer();
125        ammuajastinhajalle.Interval = 3;
126        ammuajastinhajalle.Timeout += delegate { pelaaja1.ElamaLaskuri.Value += 1; };
127        ammuajastinhajalle.Start();
128
129    }
130
131    void LisaaNappaimet()
132    {
133        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
134        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
135
136        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
137        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
138        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
139        Keyboard.Listen(Key.Space, ButtonState.Released, LentoLopuu, "Lopeta lento", pelaaja1);
140        Keyboard.Listen(Key.G, ButtonState.Pressed, HeitaKranaatti, ("Heitä kranaatti"), pelaaja1);
141        Keyboard.Listen(Key.Enter, ButtonState.Pressed, Konsoli, "Käytä huijauskoodeja - et pääse top 10:n");
142        Keyboard.Listen(Key.Space, ButtonState.Down, Lento, "Lennä");
143        Keyboard.Listen(Key.Space, ButtonState.Released, EiLento, "Lopeta lento");
144        Mouse.Listen(MouseButton.Left, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
145        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
146
147        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -1.0);
148        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, 1.0);
149        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
150
151        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
152    }
153
154    void Liikuta(PlatformCharacter hahmo, double suunta)
155    {
156        hahmo.Walk(nopeus * suunta);
157    }
158
159    void Hyppaa(PlatformCharacter hahmo, double nopeus)
160    {
161        hahmo.Jump(nopeus);
162    }
163    void Lento()
164    {
165        pelaaja1.IgnoresGravity = true;
166    }
167    void EiLento()
168    {
169        pelaaja1.IgnoresGravity = false;
170    }
171   
172
173    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
174    {
175        MessageDisplay.Add("Keräsit tähden!");
176        MessageDisplay.MaxMessageCount = 10;
177        tahti.Destroy();
178        tahtilaskuri.AddValue(1);
179       
180       
181    }
182    void Lenna(PlatformCharacter hahmo, double nopeus)
183    {
184        hahmo.Push(new Vector(0, nopeus));
185        hahmo.IgnoresCollisionResponse = false;
186       
187    }
188    void LentoLopuu(PlatformCharacter hahmo)
189    {
190        hahmo.IgnoresCollisionResponse = false;
191    }
192    void NoClip(PlatformCharacter hahmo)
193    {
194        hahmo.IgnoresCollisionResponse = true;
195    }
196    void NoClipOff(PlatformCharacter hahmo)
197    {
198        hahmo.IgnoresCollisionResponse = false;
199    }
200    void VihunAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
201    {
202       
203        if(kohde.Tag=="pelaaja1")
204        {
205            (kohde as Hahmo).ElamaLaskuri.Value -= 1;
206            (kohde as Hahmo).ElamaLaskuri.MaxValue += 1;
207        }
208    }
209    void PelaajanAmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
210    {
211
212        if (kohde.Tag == "VIHOLLINEN")
213        {
214            (kohde as Hahmo).ElamaLaskuri.Value -= 0.5;
215        }
216    }
217    void AmmuAseella(PlatformCharacter pelaaja)
218    {
219        PhysicsObject ammus = pelaaja.Weapon.Shoot();
220
221        if (ammus != null)
222        {
223            ammus.Size *= 3.5;
224            //ammus.Image = LoadImage("ammus");
225            ammus.MaximumLifetime = TimeSpan.FromSeconds(5.0);
226            ammus.IgnoresCollisionResponse = true;
227            pelaaja.Weapon.AttackSound.Stop();
228        }
229    }
230    void LisaaVihu(Vector paikka, double leveys, double korkeus)
231    {
232        Hahmo vihu = new Hahmo(leveys, korkeus);
233        vihu.Position = paikka;
234        vihu.Mass = 4.0;
235        vihu.Image = LoadImage("zombi");
236        vihu.Tag = "VIHOLLINEN";
237        Add(vihu);
238        vihu.CollisionIgnoreGroup = 3;
239        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
240        tasoAivot.Speed = 300;
241        tasoAivot.FallsOffPlatforms = true;
242        tasoAivot.JumpSpeed = 700;
243        tasoAivot.TriesToJump = true;
244        vihu.Brain = tasoAivot;
245        //pelaaja1 on PlatformCharacter-tyyppinen
246        vihu.Weapon = new AssaultRifle(30, 10);
247        vihu.Weapon.FireRate = 2;
248        vihu.ElamaLaskuri.LowerLimit += delegate {
249            aivolaskuri.AddValue(1); };
250        //Ammusten määrä aluksi:
251        vihu.Weapon.Ammo.Value = 99999999;
252        vihu.Weapon.MaxAmmoLifetime = TimeSpan.FromSeconds(2.0);
253        //Mitä tapahtuu kun ammus osuu johonkin?
254        vihu.Weapon.ProjectileCollision = VihunAmmusOsui;
255       
256        Timer ammuajastinhajalle = new Timer();
257        ammuajastinhajalle.Interval = 2 * vaikeus;
258        ammuajastinhajalle.Timeout += delegate { VihuAmmuAseella(vihu); };
259        ammuajastinhajalle.Start();
260
261        vihu.Destroyed += delegate { tappolaskuri.Value += 1; ammuajastinhajalle.Stop(); };
262       
263    }
264    void VihuSpawn(Vector paikka, double leveys, double korkeus)
265    {
266        Timer spawntimer = new Timer();
267        spawntimer.Interval = 3.0 * vaikeus;
268        if (kenttaJossaOllaanNyt == 2)
269            spawntimer.Interval = 7.0 * vaikeus;
270        spawntimer.Timeout += delegate { LisaaVihu(paikka, leveys, korkeus); };
271        spawntimer.Start();
272        ajastinlista.Add(spawntimer);
273    }
274    void HeitaKranaatti(PlatformCharacter pelaaja)
275    {
276       
277       
278        if (saaHeittaaKranaatin)
279        {
280            Grenade kranu = new Grenade(2.0);
281            pelaaja.Throw(kranu, Angle.FromDegrees(30), 10000);
282            kranu.Explosion.AddShockwaveHandler("VIHOLLINEN", KranaattiOsui);
283            kranu.Size *= 5.0;
284            kranu.Explosion.Speed = 350;
285            AddCollisionHandler<Grenade, PhysicsObject>(kranu, "VIHOLLINEN", GrenadeCollide);
286
287            saaHeittaaKranaatin = false;
288            Timer.SingleShot(kranaattiaika, HyvaksyKranaatti);
289        }
290
291    }
292    void VihuAmmuAseella(PlatformCharacter pelaaja)
293    {
294        PhysicsObject ammus = pelaaja.Weapon.Shoot();
295
296        if (ammus != null)
297        {
298            ammus.Size *= 3.5;
299            ammus.Image = LoadImage("bullet1");
300            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
301            ammus.IgnoresCollisionResponse = true;
302            pelaaja.Weapon.AttackSound.Stop();
303        }
304    }
305    void HyvaksyKranaatti()
306    {
307        saaHeittaaKranaatin = true;
308    }
309    void KranaattiOsui(IPhysicsObject rajahdyksenKohde, Vector v)
310    {
311        //rajahdyksenKohde.Destroy();
312        pisteLaskuri.AddValue(1);
313        (rajahdyksenKohde as Hahmo).ElamaLaskuri.AddValue(-10);
314    }
315    void GrenadeCollide(Grenade kranu, PhysicsObject zombi)
316    {
317        kranu.Explode();
318    }
319    void Konsoli()
320    {
321        InputWindow kysymysIkkuna = new InputWindow("Huijauskoodi?");
322        kysymysIkkuna.TextEntered += ProcessInput;
323        Add(kysymysIkkuna);
324    }
325    void ProcessInput(InputWindow ikkuna)
326    {
327        string vastaus = ikkuna.InputBox.Text;
328        string[] palat = vastaus.Split(' ');
329
330        // 1 osaiset komennot
331        if (palat.Length == 1)
332        {
333            string komento = palat[0];
334
335            if (komento == "exit")
336            {
337                Exit();
338            }
339            if(komento=="pysäytäspawni")
340            {
341                foreach(Timer spawntimer in ajastinlista)
342                {
343                    spawntimer.Stop();
344                }
345               
346               
347            }
348            if (komento == "aloitaspawni")
349            {
350                foreach (Timer spawntimer in ajastinlista)
351                {
352                    spawntimer.Start();
353                }
354
355            }
356            if(komento=="ClearAll")
357            {
358                ClearAll();
359                huijattu = false;
360                return;
361            }
362            if (komento == "semigod")
363            {
364                pelaaja1.ElamaLaskuri.MaxValue = 10000;
365                pelaaja1.ElamaLaskuri.Value = 10000;
366                huijattu = false;
367                return;
368            }
369            if (komento == "god")
370            {
371                pelaaja1.ElamaLaskuri.MaxValue = 99999999;
372                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue;
373            }
374
375            if (komento == "häviä")
376            {
377                pelaaja1.Destroy();
378                huijattu = false;
379                return;
380            }
381           
382        }
383
384        // 2 osaiset komennot
385        if (palat.Length == 2)
386        {
387            string komento = palat[0];
388            double numero = double.Parse(palat[1]);
389
390            if (komento == "firerate")
391            {
392                pelaaja1.Weapon.FireRate = numero;
393            }
394
395            if (komento == "zombi")
396            {
397                for (int i = 0; i < numero; i++)
398                {
399                    LisaaVihu(pelaaja1.Position+RandomGen.NextVector(0,100),40,40);
400                    huijattu = false;
401                    return;
402                }
403            }
404
405            if(komento=="gravity")
406            {
407                Gravity = new Vector(0,numero);
408            }
409            if (komento == "speed")
410            {
411                nopeus = numero;
412            }
413            if(komento=="MessageDisplayX")
414            {
415                MessageDisplay.X = numero;
416                huijattu = false;
417                return;
418            }
419            if (komento == "MessageDisplayY")
420            {
421                MessageDisplay.Y = numero;
422                huijattu = false;
423                return;
424            }
425
426            if (komento=="god")
427            {
428                pelaaja1.ElamaLaskuri.MaxValue = 99999999;
429                pelaaja1.ElamaLaskuri.Value = pelaaja1.ElamaLaskuri.MaxValue;
430            }
431            if(komento=="kranuheittoaika")
432            {
433                kranaattiaika = numero;
434            }
435            if(komento=="tähti")
436            {
437                tahtilaskuri.Value = (int)numero;
438            }
439            if(komento=="tahti")
440            {
441                tahtilaskuri.Value = (int)numero;
442                huijattu = false;
443                return;
444            }
445           
446        }
447
448
449        huijattu = true;
450    }
451    void TaukoValikko()
452    {
453        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin taukovalikko",
454"Palaa peliin", "Lopeta", "Asetukset","Aloita uudelleen","Tekijät" ,"Musiikki");
455        Add(alkuValikko);
456        alkuValikko.DefaultCancel = 3;
457        alkuValikko.Color = Color.Charcoal;
458        alkuValikko.AddItemHandler(0, Jatka); 
459        alkuValikko.AddItemHandler(1, Exit);
460        alkuValikko.AddItemHandler(2, AliOhjelma);
461        alkuValikko.AddItemHandler(3, UudelleenAloitus);
462        alkuValikko.AddItemHandler(4, Tekijat);
463        alkuValikko.AddItemHandler(5, Musiikki);
464
465
466    }
467    void AliOhjelma()
468    {
469        MultiSelectWindow Asetukset = new MultiSelectWindow("ASETUKSET",
470            "Palaa valikkoon", "Äänenvoimakkuus");
471        Add(Asetukset);
472        Asetukset.AddItemHandler(0, TaukoValikko);
473        Asetukset.AddItemHandler(1, AanenVoimakkuus);
474       
475       
476       // ÄänenVoimakkuus.Changed += ZoomaaKenttaa;
477
478       
479    }
480    void UudelleenAloitus()
481    {
482        AloitaPeli();
483    }
484    void Jatka()
485    {
486
487    }
488    void ParhaatPisteet()
489    {
490        topLista.Show();
491    }
492
493
494    void LuoPistelaskuri()
495    {
496        pisteLaskuri = new IntMeter(0);
497
498        Label pisteNaytto = new Label();
499        pisteNaytto.X = Screen.Left + 100;
500        pisteNaytto.Y = Screen.Top - 100;
501        pisteNaytto.TextColor = Color.Black;
502        pisteNaytto.Color = Color.White;
503
504        pisteNaytto.BindTo(pisteLaskuri);
505        Add(pisteNaytto);
506    }
507    void AanenVoimakkuus()
508    {
509        Slider liukusaadin = new Slider(200, 20);
510        liukusaadin.BindTo(ÄänenVoimakkuus);
511        liukusaadin.Color = Color.Gray;
512        liukusaadin.InactiveColor = Color.Ivory;
513        liukusaadin.ActiveColor = Color.DarkJungleGreen;
514        Add(liukusaadin);
515        PushButton Takaisin = new PushButton("OK");
516        Takaisin.Clicked += delegate { liukusaadin.Destroy();Takaisin.Destroy();AliOhjelma(); };
517        Takaisin.Y = -100;
518        Add(Takaisin);
519    }
520    void TelePort(Vector paikka, double leveys, double korkeus)
521    {
522        PhysicsObject teleport = PhysicsObject.CreateStaticObject(leveys, korkeus);
523        teleport.Position = paikka;
524        teleport.Image = LoadImage("blackhole");
525        Add(teleport);
526        teleport.Tag = "tele";
527    }
528    void TormaaTeleport(PhysicsObject pelaaja1, PhysicsObject teleport)
529    {
530        if(tahtilaskuri.Value>100)
531        {
532            if(kenttaJossaOllaanNyt==1) kenttaJossaOllaanNyt = 2;
533            else if (kenttaJossaOllaanNyt == 2) kenttaJossaOllaanNyt = 1;
534            AloitaPeli();
535        }
536    }
537    void LuoTahtilaskuri()
538    {
539        //tahtilaskuri =
540
541        Label pisteNaytto = new Label();
542        pisteNaytto.X = Screen.Left + 80;
543        pisteNaytto.Y = Screen.Top - 80;
544        pisteNaytto.TextColor = Color.Black;
545        pisteNaytto.Color = Color.White;
546
547        pisteNaytto.BindTo(tahtilaskuri);
548        Add(pisteNaytto);
549    }
550    void LuoElamaLaskuri()
551    {
552        //elamalaskuri = new DoubleMeter(25);
553        //elamalaskuri.MaxValue = 25;
554        //elamalaskuri.LowerLimit += pelaaja1.Destroy;
555
556        ProgressBar elamaPalkki = new ProgressBar(150, 20);
557        elamaPalkki.X = Screen.Left + 150;
558        elamaPalkki.Y = Screen.Top - 20;
559        elamaPalkki.BindTo(pelaaja1.ElamaLaskuri);
560        elamaPalkki.Color = Color.Black;
561        elamaPalkki.BorderColor = Color.Black;
562        Add(elamaPalkki);
563    }
564    void LuoTappoLaskuri()
565    {
566        tappolaskuri = new IntMeter(0);
567
568        Label pisteNaytto = new Label();
569        pisteNaytto.X = Screen.Left + 60;
570        pisteNaytto.Y = Screen.Top - 60;
571        pisteNaytto.TextColor = Color.Black;
572        pisteNaytto.Color = Color.White;
573
574        pisteNaytto.BindTo(tappolaskuri);
575        Add(pisteNaytto);
576    }
577    void LuoAivoLaskuri()
578    {
579        aivolaskuri = new IntMeter(0);
580
581        Label pisteNaytto = new Label();
582        pisteNaytto.X = Screen.Left + 40;
583        pisteNaytto.Y = Screen.Top - 40;
584        pisteNaytto.TextColor = Color.Black;
585        pisteNaytto.Color = Color.White;
586       
587
588        pisteNaytto.BindTo(aivolaskuri);
589        Add(pisteNaytto);
590    }
591    void GameOver()
592    {
593        if (huijattu)
594        {
595            Begin();
596        }
597        else
598        {
599            topLista.EnterAndShow(pisteLaskuri.Value + tahtilaskuri.Value);
600            topLista.HighScoreWindow.Closed += (w) => AlkuValikko();
601
602        }
603       
604
605       
606       
607    }
608    void AlkuValikko()
609    {
610        ClearAll();
611        alkuValikko = true;
612        MultiSelectWindow Valikko = new MultiSelectWindow("Pelin alkuvalikko",
613"Aloita peli", "Parhaat pisteet", "Lopeta", "Tekijät", "Musiikki", "Vaikeustaso");
614        Add(Valikko);
615        Valikko.AddItemHandler(0, AloitaPeli);
616        Valikko.AddItemHandler(1, ParhaatPisteet);
617        Valikko.AddItemHandler(2, Exit);
618        Valikko.AddItemHandler(3, Tekijat);
619        Valikko.AddItemHandler(4, Musiikki);
620        Valikko.AddItemHandler(5, Difficulty);
621    }
622    void Tekijat()
623    {
624        MessageDisplay.Add("Tekijät: Patu");
625        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
626        MessageDisplay.Add("Tehty Visual Studio 2015 ja avustajien avulla");
627        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
628        MessageDisplay.Add("Koodauskieli: C#");
629        MessageDisplay.MessageTime = new TimeSpan(0, 0, 7);
630        MessageDisplay.X = 200;
631        MessageDisplay.Y = 200;
632        MessageDisplay.MaxMessageCount = 10;
633        if (alkuValikko)
634            AlkuValikko();
635        else
636            TaukoValikko();
637    }
638    void Difficulty()
639    {
640        MultiSelectWindow VaikeusValikko = new MultiSelectWindow("Vaikeustaso", "Helppo", "Keskivaikea", "Vaikea", "Mahdoton");
641        VaikeusValikko.AddItemHandler(0, Helppo);
642        VaikeusValikko.AddItemHandler(1, Keskivaikea);
643        VaikeusValikko.AddItemHandler(2, Vaikea);
644        VaikeusValikko.AddItemHandler(3, Mahdoton);
645        VaikeusValikko.AddItemHandler(4, AlkuValikko);
646        Add(VaikeusValikko);
647        MessageDisplay.Add("Mahdoton - sairaasti lagia");
648    }
649    void Helppo()
650    {
651        vaikeus = 2;
652        AlkuValikko();
653    }
654    void Keskivaikea()
655    {
656        vaikeus = 1.5;
657        AlkuValikko();
658    }
659    void Vaikea()
660    {
661        vaikeus = 1;
662        AlkuValikko();
663    }
664    void Mahdoton()
665    {
666        vaikeus = 0.1;
667        AlkuValikko();
668    }
669    void Musiikki()
670    {
671        MultiSelectWindow MusiikkiValikko = new MultiSelectWindow("Musiikki", "Default", "Musiikki1", "Musiikki2");
672        MusiikkiValikko.AddItemHandler(0, Default);
673        MusiikkiValikko.AddItemHandler(1, Musiikki1);
674        MusiikkiValikko.AddItemHandler(2, Musiikki2);
675        Add(MusiikkiValikko);
676   
677    }
678    void Musiikki1()
679    {
680        MediaPlayer.Play("music1");
681        if (alkuValikko)
682            AlkuValikko();
683        else
684            TaukoValikko();
685    }
686    void Musiikki2()
687    {
688        MediaPlayer.Play("music2");
689        if (alkuValikko)
690            AlkuValikko();
691        else
692            TaukoValikko();
693    }
694    void Default()
695    {
696        MediaPlayer.Play("background_music");
697        if (alkuValikko)
698            AlkuValikko();
699        else
700            TaukoValikko();
701    }
702    void AlkuTekstit()
703    {
704        Label teksti = new Label("Tehty Visual Studio 2015 avulla");
705        Add(teksti);
706        Label logo = new Label(LoadImage("logo"));
707        logo.X = 0;
708        logo.Y = 200;
709        Add(logo);
710        Timer.SingleShot(4, AlkuValikko);
711    }
712
713
714
715
716
717}
718class Hahmo : PlatformCharacter
719{
720    private DoubleMeter elamaLaskuri = new DoubleMeter(25, 0, 25);
721    public DoubleMeter ElamaLaskuri { get { return elamaLaskuri; } }
722
723    public Hahmo(double leveys, double korkeus)
724        : base(leveys, korkeus)
725    {
726        elamaLaskuri.LowerLimit += delegate {
727            this.Destroy(); };
728    }
729}
730
Note: See TracBrowser for help on using the repository browser.