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

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