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

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