source: 2015/30/EllenH/OmaPeli/OmaPeli/OmaPeli/OmaPeli.cs @ 6924

Revision 6924, 5.0 KB checked in by ellihutt, 6 years ago (diff)

Lisätty aloitusvalikko josta voi valita pelihahmon, painovoiman kiihtyvyys ja uusi pelihahmo

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class OmaPeli : PhysicsGame
10{
11    const double nopeus = 250;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("esponi");
18    Image tahtiKuva = LoadImage("tahti");
19
20    SoundEffect maaliAani = LoadSoundEffect("maali");
21
22    Timer kiihtyvyysajastin;
23
24    public override void Begin()
25    {
26        Alkuvalikko();
27    }
28
29    void AloitaKentta()
30    {
31        ClearAll();
32        Gravity = new Vector(0, -150);
33
34        LuoKentta();
35        LisaaNappaimet();
36
37        Camera.Follow(pelaaja1);
38        Camera.ZoomFactor = 1.2;
39        Camera.StayInLevel = true;
40
41        kiihtyvyysajastin = new Timer();
42        kiihtyvyysajastin.Interval = 1;
43        kiihtyvyysajastin.Timeout += Kiihdytys;
44        kiihtyvyysajastin.Start();
45    }
46
47    void LuoKentta()
48    {
49        TileMap kentta = TileMap.FromLevelAsset("kentta1");
50        kentta.SetTileMethod('#', LisaaTaso);
51        kentta.SetTileMethod('*', LisaaTahti);
52        kentta.SetTileMethod('N', LisaaPelaaja);
53        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
54        Level.CreateBorders();
55        Level.Background.CreateStars();
56    }
57
58    void LisaaTaso(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        taso.Position = paikka;
62        taso.Color = Color.HotPink;
63        taso.Tag = "taso";
64        Add(taso);
65    }
66
67    void LisaaTahti(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        tahti.IgnoresCollisionResponse = true;
71        tahti.Position = paikka;
72        tahti.Image = tahtiKuva;
73        tahti.Tag = "tahti";
74        Add(tahti);
75    }
76
77    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
78    {
79        pelaaja1 = new PlatformCharacter(leveys, korkeus);
80        pelaaja1.Position = paikka;
81        pelaaja1.Mass = 4.0;
82        pelaaja1.Image = pelaajanKuva;
83        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
84        AddCollisionHandler(pelaaja1, "taso", TormaaTasoon);
85        Add(pelaaja1);
86    }
87
88    void LisaaNappaimet()
89    {
90        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
91        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
92
93        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
94        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
95        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
96
97        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
98
99        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
100        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
101        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
102
103        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
104    }
105
106    void Liikuta(PlatformCharacter hahmo, double nopeus)
107    {
108        hahmo.Walk(nopeus);
109    }
110
111    void Hyppaa(PlatformCharacter hahmo, double nopeus)
112    {
113        hahmo.Jump(nopeus);
114    }
115
116    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
117    {
118        maaliAani.Play();
119        MessageDisplay.Add("Keräsit tähden!");
120        tahti.Destroy();
121    }
122
123    void TormaaTasoon(PhysicsObject hahmo, PhysicsObject taso)
124   {
125       maaliAani.Play();
126       MessageDisplay.Add("Törmäsit tasoon ja kuolit");
127       hahmo.Destroy();
128       Timer.SingleShot(0.5, Begin);
129   }
130
131    void Kiihdytys()
132    {
133        if (Gravity.Y < -500)
134        {
135            kiihtyvyysajastin.Stop();
136        }
137        Gravity = Gravity - new Vector(0, 25);
138    }
139
140    void Alkuvalikko()
141    {
142        MultiSelectWindow alkuValikko = new MultiSelectWindow("Valitse pelihahmo", "Herkko Hemiläinen", "Sateenkaariponi", "Kääpiö", 
143            "Poistu");
144        alkuValikko.AddItemHandler(0, ValitseHerkko);
145        alkuValikko.AddItemHandler(1, ValitseESPoni);
146        alkuValikko.AddItemHandler(2, ValitseKaapio);
147        alkuValikko.AddItemHandler(3, Exit);
148        alkuValikko.DefaultCancel = 3;
149        Add(alkuValikko);
150    }
151
152    void ValitseHerkko()
153    {
154        pelaajanKuva = LoadImage("herkko");
155        AloitaKentta();
156    }
157
158    void ValitseESPoni()
159    {
160        pelaajanKuva = LoadImage("esponi");
161        AloitaKentta();
162    }
163
164    void ValitseKaapio()
165    {
166        pelaajanKuva = LoadImage("kaapio");
167        AloitaKentta();
168    }
169}
Note: See TracBrowser for help on using the repository browser.