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

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