source: 2015/30/EemilR/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli.cs @ 6996

Revision 6996, 15.2 KB checked in by eekrrint, 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
9/// <summary>
10/// The Jump
11/// </summary>
12
13public class Tasohyppelypeli : PhysicsGame
14{
15    const double nopeus = 350;
16    const double hyppyNopeus = 700;
17    const int Koko = 50;
18
19    PlatformCharacter pelaaja1;
20
21    Image pelaajanKuva = LoadImage("pallo");
22    Image tahtiKuva = LoadImage("tahti");
23    Image avainKuva = LoadImage("Key");
24    Image kyllaAvain = LoadImage("kylla_avain");
25    Image eiAvain = LoadImage("ei_avain");
26    Image oviKuva = LoadImage("Ristikko");
27    Image piikkiKuva = LoadImage("Piikki");
28    Image checkpointKuvaKylla = LoadImage("checkpoint_kylla");
29    Image checkpointKuvaEi = LoadImage("checkpoint_ei");
30    Image ovi2Kuva = LoadImage("Ristikko2");
31    Image Avaimeton2Kuva = LoadImage("Avaimeton2");
32    Image Avain2Kuva = LoadImage("Avain2");
33    Image pahiksenKuva = LoadImage("Vihollinen1");
34    Image oviVasenKuva = LoadImage("OviVasen");
35    Image paluuOikeaKuva = LoadImage("PaluuOikea");
36    Image MaaliKuva = LoadImage("Maali");
37
38    DoubleMeter avaintenmaara;
39
40    IntMeter kuolemat;
41
42    SoundEffect maaliAani = LoadSoundEffect("maali2");
43
44    PhysicsObject viimeinenCheckpoint;
45
46    PhysicsObject viimeinenSpawn;
47
48    bool painovoima = true;
49
50
51
52   
53   
54
55    public override void Begin()
56    {
57
58        //Window.Width = 800;
59        //Window.Height = 600;
60
61        IsFullScreen = true;
62
63        LuoKentta();
64        LisaaNappaimet();
65        Asetamittari();
66        AsetaLaskin();
67        LisaaPainovoima();
68
69       
70        Camera.Follow(pelaaja1);
71        Camera.ZoomFactor = 1.0;
72        Camera.StayInLevel = true;
73
74
75       
76    }
77
78    void LisaaPainovoima()
79    {
80        if (painovoima == true)
81        {
82            Gravity = new Vector(0, -1000);
83        }
84        else
85        {
86           Gravity = new Vector(0, 0);
87        }
88       
89    }
90
91    void AsetaLaskin()
92    {
93        kuolemat = new IntMeter(0);
94
95        Label tekstikentta = new Label(150, 180);       
96        tekstikentta.BindTo(kuolemat);
97        tekstikentta.X = Screen.Right - 150;
98        tekstikentta.Y = Screen.Top - 100;
99        tekstikentta.TextColor = Color.Black;
100        Add(tekstikentta);
101    }
102
103    void Asetamittari()
104    {
105        avaintenmaara = new DoubleMeter(0);
106        avaintenmaara.MaxValue = 2;
107        avaintenmaara.UpperLimit += avaimetTaynna;
108
109        ProgressBar avainNaytto = new ProgressBar(100, 100);
110        avainNaytto.BindTo(avaintenmaara);
111        avainNaytto.X = Screen.Left + 200;
112        avainNaytto.Y = Screen.Bottom + 100;
113        avainNaytto.Image = LoadImage("Avaimeton2");
114        avainNaytto.BarImage = LoadImage("Avain2");
115        Add(avainNaytto);
116    }
117
118    void LuoKentta()
119    {
120        TileMap kentta = TileMap.FromLevelAsset("kentta1");
121        kentta.SetTileMethod('#', LisaaTaso);
122        kentta.SetTileMethod('O', LisaaOvi);
123        kentta.SetTileMethod('0', LisaaPelaaja);
124        kentta.SetTileMethod('A', LisaaAvain);
125        kentta.SetTileMethod('P', LisaaPiikki);
126        kentta.SetTileMethod('C', LisaaCheckpoint);
127        kentta.SetTileMethod('2', LisaaOvi2);
128        kentta.SetTileMethod('V', LisaaPahis);
129        kentta.SetTileMethod('<', LisaaVasenOvi);
130       
131
132
133        kentta.SetTileMethod('U', LisaaOikeaPaluu);
134        kentta.SetTileMethod('S', spawn);
135
136        kentta.SetTileMethod('M', LisaaMaali);
137
138        kentta.Execute(Koko, Koko);
139        Level.CreateBorders();
140        Level.Background.CreateGradient(Color.White, Color.White);
141
142        PhysicsObject liikkuva1 = new PhysicsObject(200.0, 40.0);
143    }
144
145    void LisaaMaali(Vector paikka, double leveys, double korkeus)
146    {
147        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
148        maali.Position = paikka;
149        maali.IgnoresCollisionResponse = true;
150        maali.Tag = "maali";
151        maali.Image = MaaliKuva;
152        Add(maali);
153    }
154
155    void spawn(Vector paikka, double leveys, double korkeus)
156    {
157        PhysicsObject spawnpoint = PhysicsObject.CreateStaticObject(leveys, korkeus);
158        spawnpoint.Position = paikka;
159        spawnpoint.IgnoresCollisionResponse = true;
160        spawnpoint.IsVisible = false;
161        spawnpoint.Tag = "spawnpoint";
162
163        viimeinenSpawn = spawnpoint;
164
165    }
166
167    void LisaaOikeaPaluu(Vector paikka, double leveys, double korkeus)
168    {
169        PhysicsObject PaluuOikea = PhysicsObject.CreateStaticObject(leveys, korkeus);
170        PaluuOikea.Position = paikka;
171        PaluuOikea.Image = paluuOikeaKuva;
172        PaluuOikea.IgnoresCollisionResponse = true;
173        Add(PaluuOikea);
174    }
175
176    void LisaaVasenOvi(Vector paikka, double leveys, double korkeus)
177    {
178        PhysicsObject OviVasen = PhysicsObject.CreateStaticObject(leveys, korkeus);
179        OviVasen.Position = paikka;
180        OviVasen.Image = oviVasenKuva;
181        OviVasen.IgnoresCollisionResponse = true;
182        Add(OviVasen);
183    }
184
185
186    void LisaaPahis(Vector paikka, double leveys, double korkeus)
187    {
188        PlatformCharacter Pahis = new PlatformCharacter(leveys, korkeus);
189        Pahis.Position = paikka;
190        Pahis.Image = pahiksenKuva;
191        Pahis.Tag = "pahis";
192        Pahis.Shape = Shape.FromImage(pahiksenKuva);
193        Pahis.IgnoresExplosions = true;
194
195        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
196        tasoAivot.Speed = 100;
197
198        Pahis.Brain = tasoAivot;
199        Add(Pahis);
200    }
201
202    void LisaaOvi2(Vector paikka, double leveys, double korkeus)
203    {
204        PhysicsObject ovi2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
205        ovi2.Position = paikka;
206        ovi2.Image = ovi2Kuva;
207        ovi2.Tag = "ovi2";
208        Add(ovi2);
209    }
210
211
212    void LisaaCheckpoint(Vector paikka, double leveys, double korkeus)
213
214    {
215        PhysicsObject checkpoint = PhysicsObject.CreateStaticObject(leveys, korkeus);
216        checkpoint.IgnoresCollisionResponse = true;
217        checkpoint.Position = paikka;
218        checkpoint.Image = checkpointKuvaEi;
219        checkpoint.Tag = "checkpoint";
220        Add(checkpoint);
221    }
222
223
224    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
225    {
226        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);     
227        piikki.Position = paikka;
228        piikki.Image = piikkiKuva;
229        piikki.Tag = "piikki";
230        Add(piikki);
231    }
232
233    void LisaaTaso(Vector paikka, double leveys, double korkeus)
234    {
235        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
236        taso.Position = paikka;
237        taso.Color = Color.DarkRed;
238        Add(taso);
239    }
240
241    void LisaaOvi(Vector paikka, double leveys, double korkeus)
242    {
243       
244        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
245        ovi.Position = paikka;
246        ovi.Image = oviKuva;
247        ovi.Tag = "ovi";
248        Add(ovi);
249    }
250
251    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
252    {
253        pelaaja1 = new PlatformCharacter(35, 35);
254        pelaaja1.Position = paikka;
255        pelaaja1.Mass = 4.0;
256        pelaaja1.Image = pelaajanKuva;
257        AddCollisionHandler(pelaaja1, "avain", TormaaAvaimeen);
258        AddCollisionHandler(pelaaja1, "ovi", ovenAvaus);
259        AddCollisionHandler(pelaaja1, "ovi2", ovi2Avaus);
260        AddCollisionHandler(pelaaja1, "piikki", osuiPiikkiin);
261        AddCollisionHandler(pelaaja1, "checkpoint", checkpointAktivoitu);
262        AddCollisionHandler(pelaaja1, "pahis", osuiPiikkiin);
263        AddCollisionHandler(pelaaja1, "maali", osuiMaaliin);
264        pelaaja1.IgnoresCollisionResponse = false;
265        Add(pelaaja1);
266
267        Label avaimet = new Label(50.0, 50.0);
268        avaimet.Color = Color.Red;
269        avaimet.Text = "Avainten maara";
270        avaimet.X = 0.0;
271        avaimet.Y = 0.0;
272    }
273
274    void osuiMaaliin(PhysicsObject hahmo, PhysicsObject avain)
275    {
276        MessageDisplay.Add("Onnittelut! Pääsit maaliin!");
277    }
278
279    void LisaaNappaimet()
280    {
281        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
282        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
283        Keyboard.Listen(Key.R, ButtonState.Pressed, ResetToCheckpoint , "Palaa edelliseen checkpointtiin");
284        Keyboard.Listen(Key.Enter, ButtonState.Pressed, CheatitPaalle, "Enable Cheats");
285
286        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
287        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu Oikealle", pelaaja1, nopeus);
288        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
289
290       
291
292        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
293
294        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
295        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
296        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
297
298        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
299    }
300
301    void LiikuYlos(PlatformCharacter hahmo, double nopeus)
302    {
303        pelaaja1.Hit(new Vector(0, 1000));
304    }
305
306    void LiikuAlas(PlatformCharacter hahmo, double nopeus)
307    {
308        pelaaja1.Hit(new Vector(0, -1000));
309    }
310
311    void LiikuOikealle(PlatformCharacter hahmo, double nopeus)
312    {
313        pelaaja1.Hit(new Vector(4000, 0));
314    }
315
316    void LiikuVasemmalle(PlatformCharacter hahmo, double nopeus)
317    {
318        pelaaja1.Hit(new Vector(-4000, 0));
319    }
320
321    void ResetToCheckpoint()
322    {
323        pelaaja1.Position = viimeinenCheckpoint.Position;
324    }
325
326    void LisaaAvain(Vector paikka, double leveys, double korkeus)
327    {
328        PhysicsObject avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
329        avain.IgnoresCollisionResponse = true;
330        avain.Position = paikka;
331        avain.Image = avainKuva;
332        avain.Tag = "avain";
333        Add(avain);
334    }   
335
336    void Liikuta(PlatformCharacter hahmo, double nopeus)
337    {
338        hahmo.Walk(nopeus);
339    }
340
341    void Hyppaa(PlatformCharacter hahmo, double nopeus)
342    {
343        hahmo.Jump(nopeus);
344    }
345
346    void TormaaAvaimeen(PhysicsObject hahmo, PhysicsObject avain)
347    {
348       
349            maaliAani.Play();
350            MessageDisplay.Add("Sait avaimen!");
351            avain.Destroy();
352
353            avaintenmaara.Value += 1;
354    }
355
356    void osuiPiikkiin(PhysicsObject pelaaja1, PhysicsObject juttu)
357    {
358       
359
360        kuolemat.Value += 1;
361
362
363        Timer.SingleShot(0.1, PalaaCheckpoint);
364
365       
366
367
368       
369    }
370
371    void PalaaCheckpoint()
372    {
373        pelaaja1.Position = viimeinenCheckpoint.Position;
374     
375    }
376
377    void checkpointAktivoitu(PhysicsObject pelaaja1, PhysicsObject checkpoint)
378    {
379        viimeinenCheckpoint = checkpoint;
380        viimeinenCheckpoint.Image = checkpointKuvaKylla;
381        MessageDisplay.Add("Saavutit checkpointin!");
382        checkpoint.Tag = "aktivoituCheckpoint";
383    }
384
385
386
387    void ovi2Avaus(PhysicsObject pelaaja1, PhysicsObject ovi2)
388    {
389        if (avaintenmaara > 1)
390        {
391            MessageDisplay.Add("Avasit kultaisen oven");
392            avaintenmaara.Value -= 2;
393            ovi2.Destroy();
394        }
395        else
396        {
397            MessageDisplay.Add("Sinulla ei ole tarpeeksi avaimia.");
398        }
399    }
400   
401    void ovenAvaus(PhysicsObject pelaaja1, PhysicsObject ovi)
402    {
403        if (avaintenmaara > 0)
404        {
405            MessageDisplay.Add("Avasit oven");
406            avaintenmaara.Value -= 1;
407            ovi.Destroy();
408        }
409        else
410        {
411            MessageDisplay.Add("Sinulla ei ole tarpeeksi avaimia.");
412        }
413
414    }
415
416    void CheatitPaalle()
417    {
418        IsPaused = true;
419        InputWindow kysymysIkkuna = new InputWindow("Enter Code To Enable Cheats");
420        kysymysIkkuna.TextEntered += ProcessInput;
421        Add( kysymysIkkuna );
422    }
423
424    void ProcessInput(InputWindow ikkuna)
425    {
426        string vastaus = ikkuna.InputBox.Text;
427
428        IsPaused = false;
429
430        if (vastaus == "allOn")
431        {
432            painovoima = false;
433            LisaaPainovoima();
434
435            pelaaja1.IgnoresCollisionResponse = true;
436
437            Keyboard.Enable(Key.I);
438            Keyboard.Enable(Key.K);
439            Keyboard.Enable(Key.L);
440            Keyboard.Enable(Key.J);
441            Keyboard.Listen(Key.I, ButtonState.Pressed, LiikuYlos, "Ylös", pelaaja1, nopeus);
442            Keyboard.Listen(Key.K, ButtonState.Pressed, LiikuAlas, "Alas", pelaaja1, nopeus);
443            Keyboard.Listen(Key.L, ButtonState.Pressed, LiikuOikealle, "Oikealle", pelaaja1, nopeus);
444            Keyboard.Listen(Key.J, ButtonState.Pressed, LiikuVasemmalle, "Vasemmalle", pelaaja1, nopeus);
445        }
446
447        if (vastaus == "allOff")
448        {
449            painovoima = true;
450            LisaaPainovoima();
451
452            pelaaja1.IgnoresCollisionResponse = false;
453
454            Keyboard.Disable(Key.I);
455            Keyboard.Disable(Key.K);
456            Keyboard.Disable(Key.L);
457            Keyboard.Disable(Key.J);
458        }
459
460        if (vastaus == "respawn")
461        {
462            pelaaja1.Position = viimeinenSpawn.Position;
463        }
464
465        if (vastaus == "clearKeys")
466        {
467            avaintenmaara.Value = 0.0;
468        }
469
470        if (vastaus == "addKey2")
471        {
472            avaintenmaara.Value = 2.0;
473        }
474
475        if (vastaus == "addKey1")
476        {
477            avaintenmaara.Value = 1.0;
478        }
479
480        if (vastaus == "gravityOff")
481        {
482            painovoima = false;
483            LisaaPainovoima();
484        }
485
486        if (vastaus == "gravityOn")
487        {
488            painovoima = true;
489            LisaaPainovoima();
490        }
491
492        if (vastaus == "moveThruWallsOn")
493        {
494            pelaaja1.IgnoresCollisionResponse = true;
495        }
496
497        if (vastaus == "moveThruWallsOff")
498        {
499            pelaaja1.IgnoresCollisionResponse = false;
500        }
501
502        if (vastaus == "flyOn")
503        {
504            Keyboard.Enable(Key.I);
505            Keyboard.Enable(Key.K);
506            Keyboard.Enable(Key.L);
507            Keyboard.Enable(Key.J);
508            Keyboard.Listen(Key.I, ButtonState.Pressed, LiikuYlos, "Ylös", pelaaja1, nopeus);
509            Keyboard.Listen(Key.K, ButtonState.Pressed, LiikuAlas, "Alas", pelaaja1, nopeus);
510            Keyboard.Listen(Key.L, ButtonState.Pressed, LiikuOikealle, "Oikealle", pelaaja1, nopeus);
511            Keyboard.Listen(Key.J, ButtonState.Pressed, LiikuVasemmalle, "Vasemmalle", pelaaja1, nopeus);
512        }
513
514        if (vastaus == "flyOff")
515        {
516            Keyboard.Disable(Key.I);
517            Keyboard.Disable(Key.K);
518            Keyboard.Disable(Key.L);
519            Keyboard.Disable(Key.J);
520        }
521    }           
522
523    void avaimetTaynna()
524    {
525        MessageDisplay.Add("Olet saavuttanut avainten maksimimäärän!");
526    }
527}
Note: See TracBrowser for help on using the repository browser.