source: 2015/30/TomiM/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli.cs @ 7020

Revision 7020, 10.4 KB checked in by tomikkon, 6 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
9
10/// <summary>
11/// rahan metsästys
12/// </summary>
13public class Tasohyppelypeli : PhysicsGame
14{
15    const double nopeus = 200;
16    const double hyppyNopeus = 750;
17    const int RUUDUN_KOKO = 40;
18
19    PlatformCharacter pelaaja1;
20    PlatformCharacter vihollinen;
21
22    Image pelaajanKuva = LoadImage("tyyppi3");
23    Image tahtiKuva = LoadImage("kolikko");
24    Image setelikuva = LoadImage("seteli");
25    Image vihollisenKuva = LoadImage("vihollinen");
26    Image setelikuva2 = LoadImage("seteli2");
27    Image palikkakuva = LoadImage("palikka");
28    Image palikkakuva2 = LoadImage("palikka2");
29    Image maaalikuva = LoadImage("maaali");
30    Image pahiskuva = LoadImage("joku");
31    Image palikkakuva3 = LoadImage("palikkkka");
32
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34
35    EasyHighScore topLista = new EasyHighScore();
36
37
38    private Image[] ukkelinKavely = LoadImages("tyyppi", "tyyppi2", "tyyppi4");
39
40
41
42
43    public override void Begin()
44    {
45        Gravity = new Vector(0, -1000);
46
47        LuoKentta();
48        LisaaNappaimet();
49
50        LuoPistelaskuri();
51
52        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
53"Aloita peli", "Lopeta");
54        Add(alkuValikko);
55        alkuValikko.Color = Color.Red;
56
57        alkuValikko.AddItemHandler(2, Exit);
58
59
60        Camera.Follow(pelaaja1);
61        Camera.ZoomFactor = 1.2;
62        Camera.StayInLevel = true;
63
64
65    }
66
67    void LuoKentta()
68    {
69
70
71
72
73
74        Level.CreateBottomBorder();
75        Level.CreateTopBorder();
76
77        TileMap kentta = TileMap.FromLevelAsset("kentta1");
78        kentta.SetTileMethod('#', LisaaTaso);
79        kentta.SetTileMethod('*', LisaaTahti);
80        kentta.SetTileMethod('V', LisaaVihollinen);
81        kentta.SetTileMethod('S', LisaaSeteli);
82        kentta.SetTileMethod('1', LisaaSeteli2);
83        kentta.SetTileMethod('P', LisaaPalikka);
84        kentta.SetTileMethod('p', LisaaPalikka2);
85        kentta.SetTileMethod('M', LisaaMaali);
86        kentta.SetTileMethod('2', LisaaVihollinen2);
87        kentta.SetTileMethod('T', LisaaTaso2);
88
89
90
91        kentta.SetTileMethod('N', LisaaPelaaja);
92        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
93        Level.CreateBorders();
94        Level.Background.CreateStars(10000);
95
96
97
98
99
100    }
101
102    void LisaaTaso(Vector paikka, double leveys, double korkeus)
103    {
104        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
105        taso.Position = paikka;
106        taso.Color = Color.Brown;
107        Add(taso);
108    }
109    void LisaaTaso2(Vector paikka, double leveys, double korkeus)
110    {
111        PhysicsObject taso2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
112        taso2.Position = paikka;
113        taso2.Image = palikkakuva3;
114        Add(taso2);
115
116    }
117    void LisaaTahti(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        tahti.IgnoresCollisionResponse = true;
121        tahti.Position = paikka;
122        tahti.Image = tahtiKuva;
123        tahti.Tag = "kolikko";
124        Add(tahti);
125    }
126
127    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
128    {
129        pelaaja1 = new PlatformCharacter(leveys, korkeus);
130        pelaaja1.Position = paikka;
131        pelaaja1.Mass = 4.0;
132        pelaaja1.Image = pelaajanKuva;
133        AddCollisionHandler(pelaaja1, "kolikko", TormaaTahteen);
134        AddCollisionHandler(pelaaja1, "pahis", PelaajaOsuu);
135        AddCollisionHandler(pelaaja1, "seteli", TormaaSeteliin);
136        AddCollisionHandler(pelaaja1, "seteli2", TormaaSeteliin2);
137        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
138        Add(pelaaja1);
139        pelaaja1.CanRotate = false;
140
141
142
143        pelaaja1.Animation = new Animation(ukkelinKavely);
144
145        pelaaja1.Animation.Start();
146        pelaaja1.Animation.FPS = 5;
147    }
148    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
149    {
150        vihollinen = new PlatformCharacter(leveys, korkeus);
151        vihollinen.Position = paikka;
152        vihollinen.Mass = 5.0;
153        vihollinen.Image = vihollisenKuva;
154        Add(vihollinen);
155        vihollinen.Tag = "pahis";
156        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
157        tasoAivot.Speed = 100;
158
159        vihollinen.Brain = tasoAivot;
160        tasoAivot.FallsOffPlatforms = false;
161
162
163
164
165
166
167
168
169
170
171    }
172
173    void LisaaNappaimet()
174    {
175        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
176        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
177
178        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
179        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
180        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
181
182
183
184
185        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
186
187        Keyboard.Listen(Key.P, ButtonState.Pressed, Pause, "Pysäyttää pelin");
188
189        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
190        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
191        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
192
193        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
194    }
195
196    void Liikuta(PlatformCharacter hahmo, double nopeus)
197    {
198        hahmo.Walk(nopeus);
199    }
200
201    void Hyppaa(PlatformCharacter hahmo, double nopeus)
202    {
203        hahmo.Jump(nopeus);
204    }
205
206    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
207    {
208        maaliAani.Play();
209        MessageDisplay.Add("Keräsit kolikon!");
210        tahti.Destroy();
211        pisteLaskuri.Value += 1;
212    }
213    void PelaajaOsuu(PhysicsObject hahmo, PhysicsObject vihollinen)
214    {
215        topLista.HighScoreWindow.Closed += AloitaPeli;
216
217
218        pelaaja1.Destroy();
219        topLista.EnterAndShow(pisteLaskuri.Value);
220
221
222
223
224
225    }
226    public void AloitaPeli(Window sender)
227    {
228        AloitaAlusta();
229
230    }
231    void AloitaAlusta()
232    {
233        ClearAll();
234        LuoKentta();
235        LisaaNappaimet();
236        Gravity = new Vector(0, -1000);
237
238
239        LuoPistelaskuri();
240
241
242
243
244        Camera.Follow(pelaaja1);
245        Camera.ZoomFactor = 0.2;
246        Camera.StayInLevel = true;
247
248    }IntMeter pisteLaskuri;
249
250    void LuoPistelaskuri()
251    {
252        pisteLaskuri = new IntMeter(0);
253
254
255        Label pisteNaytto = new Label();
256        pisteNaytto.X = Screen.Left + 100;
257        pisteNaytto.Y = Screen.Top - 100;
258        pisteNaytto.TextColor = Color.Black;
259        pisteNaytto.Color = Color.White;
260
261        IntMeter keratytEsineet = new IntMeter(0);
262
263
264
265        pisteNaytto.BindTo(pisteLaskuri);
266        Add(pisteNaytto);
267
268        pisteNaytto.IntFormatString = "rahaa: {0:D1}";
269
270
271
272
273    }
274    void LisaaSeteli(Vector paikka, double leveys, double korkeus)
275    {
276        PhysicsObject seteli = PhysicsObject.CreateStaticObject(leveys, korkeus);
277        seteli.IgnoresCollisionResponse = true;
278        seteli.Position = paikka;
279        seteli.Image = setelikuva;
280        seteli.Tag = "seteli";
281        Add(seteli);
282
283
284
285    }
286    void TormaaSeteliin(PhysicsObject hahmo, PhysicsObject tahti)
287    {
288
289        maaliAani.Play();
290        MessageDisplay.Add("Keräsit setelin!");
291        tahti.Destroy();
292        pisteLaskuri.Value += 5;
293    }
294
295    void LisaaSeteli2(Vector paikka, double leveys, double korkeus)
296    {
297        PhysicsObject seteli2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
298        seteli2.IgnoresCollisionResponse = true;
299        seteli2.Position = paikka;
300        seteli2.Image = setelikuva2;
301        seteli2.Tag = "seteli2";
302        Add(seteli2);
303    }
304    void TormaaSeteliin2(PhysicsObject hahmo, PhysicsObject tahti)
305    {
306
307        maaliAani.Play();
308        MessageDisplay.Add("Keräsit setelin!");
309        tahti.Destroy();
310        pisteLaskuri.Value += 100;
311    }
312    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
313    {
314        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
315        palikka.IgnoresCollisionResponse = true;
316        palikka.Position = paikka;
317        palikka.Image = palikkakuva;
318        palikka.Tag = "palikka";
319        Add(palikka);
320
321
322
323
324    }
325    void LisaaPalikka2(Vector paikka, double leveys, double korkeus)
326    {
327        PhysicsObject palikka2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
328        palikka2.IgnoresCollisionResponse = true;
329        palikka2.Position = paikka;
330        palikka2.Image = palikkakuva2;
331        palikka2.Tag = "palikka2";
332        Add(palikka2);
333    }
334    void LisaaMaali(Vector paikka, double leveys, double korkeus)
335    {
336        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
337        maali.IgnoresCollisionResponse = true;
338        maali.Position = paikka;
339        maali.Image = maaalikuva;
340        maali.Tag = "maali";
341        Add(maali);
342
343
344    }
345    void TormaaMaaliin(PhysicsObject hahmo, PhysicsObject maali)
346    {
347        maaliAani.Play();
348        MessageDisplay.Add("Läpäisit Tason!");
349        SeuraavaKentta();
350
351
352    }
353    void SeuraavaKentta()
354    {
355        ClearAll();
356        LisaaNappaimet();
357        LuoPistelaskuri();
358        LuoKentta2();
359
360
361        Gravity = new Vector(0, -1000);
362
363        Camera.Follow(pelaaja1);
364        Camera.ZoomFactor = 1.2;
365        Camera.StayInLevel = true;
366    }
367    void LuoKentta2()
368    {
369
370        LuoKentta();
371        LisaaNappaimet();
372        LuoPistelaskuri();
373
374
375    }
376
377    void LisaaVihollinen2(Vector paikka, double leveys, double korkeus)
378    {
379        vihollinen = new PlatformCharacter(leveys, korkeus);
380        vihollinen.Position = paikka;
381        vihollinen.Mass = 5.0;
382        vihollinen.Image = pahiskuva;
383        Add(vihollinen);
384        vihollinen.Tag = "pahis";
385        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
386        tasoAivot.Speed = 200;
387
388        vihollinen.Brain = tasoAivot;
389        tasoAivot.FallsOffPlatforms = false;
390
391    }
392
393
394} 
395
396
397
Note: See TracBrowser for help on using the repository browser.