source: 2016/27/JamiR/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 8033

Revision 8033, 7.3 KB checked in by jajejora, 3 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 Tasohyppelypeli1 : PhysicsGame
10{ 
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14   
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("paikallaan");
19    Image tahtiKuva = LoadImage("tahti");
20    Image LepakonKuva = LoadImage("bat");
21    Animation kävelyanimaatio;
22    Animation hyppyanimaatio;
23    Image tasonKuva = LoadImage("Untitled");
24    Animation vihukävely;
25    Animation PortaalinAnimaatio;
26    Image FakenKuva = LoadImage("Fake");
27
28
29   
30
31    SoundEffect maaliAani = LoadSoundEffect("maali");
32
33   
34
35    public override void Begin()
36    {
37        kävelyanimaatio = LoadAnimation("animaatio");
38        hyppyanimaatio = LoadAnimation("hyppyanimaatio");
39        vihukävely = LoadAnimation("vihuanimaatio");
40        PortaalinAnimaatio = LoadAnimation("Portaali");
41        Gravity = new Vector(0.0, -1000.0);
42        IsFullScreen = true;
43
44       
45
46
47        LuoKentta();
48        LisaaNappaimet();
49
50        Camera.Follow(pelaaja1);
51        Camera.ZoomFactor = 2;
52        Camera.StayInLevel = true;
53       
54    }
55
56    void LuoPaavalikko(Window ikkuna) { LuoPaavalikko(); }
57
58    void LuoPaavalikko()
59    {
60        MultiSelectWindow AlkuValikko = new MultiSelectWindow("Pelin Alkuvalikko", "AloitaPeli", "Lopeta");
61        AlkuValikko.AddItemHandler(0, Begin);
62        AlkuValikko.AddItemHandler(1, Exit);
63        Add(AlkuValikko);
64
65    }
66
67    void LuoKentta()
68    {
69        TileMap kentta = TileMap.FromLevelAsset("kentta1");
70        kentta.SetTileMethod('#', LisaaTaso);
71        kentta.SetTileMethod('*', LisaaTahti);
72        kentta.SetTileMethod('N', LisaaPelaaja);
73        kentta.SetTileMethod('K', LisaaKissa);
74        kentta.SetTileMethod('L', LisaaLepakko);
75        kentta.SetTileMethod('P', LisaaPortaali);
76        kentta.SetTileMethod('F', LisaaFake);
77        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
78        Level.CreateBorders();
79        Level.Background.CreateGradient(Color.Black, Color.SkyBlue);
80    }
81
82    void LisaaTaso(Vector paikka, double leveys, double korkeus)
83    {
84        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
85        taso.Position = paikka;
86        taso.Color = Color.Green;
87        taso.Image = tasonKuva;
88        Add(taso);
89    }
90
91    void LisaaTahti(Vector paikka, double leveys, double korkeus)
92    {
93        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
94        tahti.IgnoresCollisionResponse = true;
95        tahti.Position = paikka;
96        tahti.Image = tahtiKuva;
97        tahti.Tag = "tahti";
98        Add(tahti);
99    }
100
101    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
102    {
103        pelaaja1 = new PlatformCharacter(leveys, korkeus);
104        pelaaja1.Position = paikka;
105        pelaaja1.Mass = 4.0;
106        pelaaja1.AnimWalk = kävelyanimaatio;
107        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
108        pelaaja1.AnimJump = hyppyanimaatio;
109        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
110        AddCollisionHandler(pelaaja1, "kissa", TormaaKissaan);
111        AddCollisionHandler(pelaaja1, "Lepakko", TormaaLepakkoon);
112        AddCollisionHandler(pelaaja1, "Portaali", TormaaPortaaliin);
113        pelaaja1.CollisionIgnoreGroup = 5;
114        Add(pelaaja1);
115
116
117        {
118
119        }
120    }
121
122    void LisaaKissa(Vector paikka, double leveys, double korkeus)
123    {
124        PlatformCharacter kissa = new PlatformCharacter(60, 60);
125
126        kissa.Tag = "kissa";
127        kissa.Position = paikka;
128        kissa.AnimWalk = vihukävely;
129        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
130        tasoAivot.Speed = 100;
131        kissa.Brain = tasoAivot;
132        kissa.CollisionIgnoreGroup = 2;
133        Add(kissa);
134    }
135
136    void LisaaLepakko(Vector paikka, double leveys, double korkeus)
137
138    {
139        PhysicsObject Lepakko = new PhysicsObject(60, 60);
140       
141        Lepakko.Tag = "Lepakko";
142        Lepakko.Image = LepakonKuva;
143        Lepakko.Position = paikka;
144        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
145        satunnaisAivot.Speed = 400;
146        satunnaisAivot.ChangeMovementSeconds = 2;
147        Lepakko.Brain = satunnaisAivot;
148        Lepakko.CollisionIgnoreGroup = 2;
149        Lepakko.CanRotate = false;
150        Add(Lepakko);
151    }
152
153    void LisaaPortaali(Vector paikka, double leveys, double korkeus)
154    {
155        PlatformCharacter Portaali = new PlatformCharacter(50, 90);     
156        Portaali.Tag = "Portaali";
157        Portaali.Position = paikka;
158        Portaali.CollisionIgnoreGroup = 2;
159
160        Portaali.AnimIdle = PortaalinAnimaatio;
161        Add(Portaali);
162
163
164
165
166
167    }
168
169    void LisaaFake(Vector paikka, double leveys, double korkeus)
170    {
171        PhysicsObject Fake = PhysicsObject.CreateStaticObject(leveys, korkeus);
172        Fake.Position = paikka;
173        Fake.Color = Color.Green;
174        Fake.Image = FakenKuva;
175        Fake.CollisionIgnoreGroup = 5;
176        Add(Fake);
177
178    }
179
180    void LisaaNappaimet()
181    {
182        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
183        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
184
185        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
186        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
187        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
188        Keyboard.Listen(Key.R, ButtonState.Pressed, Alusta, "Pelaaja hyppää");
189
190        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
191
192        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
193        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
194        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
195
196
197        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
198    }
199     
200
201    void Liikuta(PlatformCharacter hahmo, double nopeus)
202    {
203        hahmo.Walk(nopeus);
204    }
205
206    void Hyppaa(PlatformCharacter hahmo, double nopeus)
207    {
208        hahmo.Jump(nopeus);
209    }
210
211    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
212    {
213        maaliAani.Play();
214        MessageDisplay.Add("Keräsit tähden!");
215        tahti.Destroy();
216    }
217
218
219    void TormaaKissaan(PhysicsObject hahmo, PhysicsObject kissa)
220    {
221        pelaaja1.Destroy();
222        ClearAll();
223        Begin();
224
225    }
226
227    void TormaaLepakkoon(PhysicsObject hahmo, PhysicsObject Lepakko)
228    {
229        pelaaja1.Destroy();
230        ClearAll();
231        Begin();
232    }
233
234    void Alusta()
235    {
236        ClearAll();
237        Begin();
238
239    }
240
241    void TormaaPortaaliin(PhysicsObject hahmo, PhysicsObject Portaali)
242    {
243        ClearAll();
244        MessageWindow voitto = new MessageWindow("voitit!");
245        Add(voitto);
246        voitto.Closed += LuoPaavalikko;
247       
248
249
250
251
252
253
254    }
255       
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278    }
279   
Note: See TracBrowser for help on using the repository browser.