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

Revision 6974, 12.4 KB checked in by eekrrint, 4 years ago (diff)
RevLine 
[6838]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{
[6939]11    const double nopeus = 350;
12    const double hyppyNopeus = 700;
13    const int Koko = 50;
[6838]14
15    PlatformCharacter pelaaja1;
16
[6876]17    Image pelaajanKuva = LoadImage("pallo");
[6838]18    Image tahtiKuva = LoadImage("tahti");
[6876]19    Image avainKuva = LoadImage("Key");
20    Image kyllaAvain = LoadImage("kylla_avain");
21    Image eiAvain = LoadImage("ei_avain");
[6904]22    Image oviKuva = LoadImage("Ristikko");
23    Image piikkiKuva = LoadImage("Piikki");
24    Image checkpointKuvaKylla = LoadImage("checkpoint_kylla");
25    Image checkpointKuvaEi = LoadImage("checkpoint_ei");
[6939]26    Image ovi2Kuva = LoadImage("Ristikko2");
27    Image Avaimeton2Kuva = LoadImage("Avaimeton2");
28    Image Avain2Kuva = LoadImage("Avain2");
[6974]29    Image pahiksenKuva = LoadImage("Vihollinen1");
30    Image oviVasenKuva = LoadImage("OviVasen");
31    Image paluuOikeaKuva = LoadImage("PaluuOikea");
[6838]32
[6876]33    DoubleMeter avaintenmaara;
34
[6939]35    IntMeter kuolemat;
36
[6904]37    SoundEffect maaliAani = LoadSoundEffect("maali");
[6876]38
[6904]39    PhysicsObject viimeinenCheckpoint;
[6838]40
[6974]41    bool cheats = false;
[6939]42
[6974]43    bool painovoima = true;
44
45
46
[6838]47   
[6939]48   
[6838]49
50    public override void Begin()
51    {
[6876]52
53        //Window.Width = 800;
54        //Window.Height = 600;
55
56        IsFullScreen = true;
57
[6838]58        LuoKentta();
59        LisaaNappaimet();
[6876]60        Asetamittari();
[6939]61        AsetaLaskin();
[6974]62        LisaaPainovoima();
[6838]63
[6876]64       
[6838]65        Camera.Follow(pelaaja1);
66        Camera.ZoomFactor = 1.0;
67        Camera.StayInLevel = true;
[6876]68
69
[6838]70       
71    }
72
[6974]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
[6939]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;
[6974]95        tekstikentta.Text = tekstikentta + "moimoi";
[6939]96        Add(tekstikentta);
97    }
98
[6876]99    void Asetamittari()
100    {
101        avaintenmaara = new DoubleMeter(0);
[6939]102        avaintenmaara.MaxValue = 2;
[6876]103        avaintenmaara.UpperLimit += avaimetTaynna;
104
[6939]105        ProgressBar avainNaytto = new ProgressBar(100, 100);
[6876]106        avainNaytto.BindTo(avaintenmaara);
[6939]107        avainNaytto.X = Screen.Left + 200;
[6876]108        avainNaytto.Y = Screen.Bottom + 100;
[6939]109        avainNaytto.Image = LoadImage("Avaimeton2");
110        avainNaytto.BarImage = LoadImage("Avain2");
[6876]111        Add(avainNaytto);
112    }
113
[6838]114    void LuoKentta()
115    {
116        TileMap kentta = TileMap.FromLevelAsset("kentta1");
117        kentta.SetTileMethod('#', LisaaTaso);
[6876]118        kentta.SetTileMethod('O', LisaaOvi);
[6838]119        kentta.SetTileMethod('N', LisaaPelaaja);
120        kentta.SetTileMethod('A', LisaaAvain);
[6904]121        kentta.SetTileMethod('P', LisaaPiikki);
122        kentta.SetTileMethod('C', LisaaCheckpoint);
[6939]123        kentta.SetTileMethod('2', LisaaOvi2);
[6974]124        kentta.SetTileMethod('V', LisaaPahis);
125        kentta.SetTileMethod('<', LisaaVasenOvi);
126
127
128        kentta.SetTileMethod('U', LisaaOikeaPaluu);
129
[6939]130        kentta.Execute(Koko, Koko);
[6838]131        Level.CreateBorders();
[6939]132        Level.Background.CreateGradient(Color.White, Color.White);
133
134        PhysicsObject liikkuva1 = new PhysicsObject(200.0, 40.0);
[6838]135    }
136
[6974]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
[6939]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    }
[6904]179
[6939]180
[6904]181    void LisaaCheckpoint(Vector paikka, double leveys, double korkeus)
[6939]182
[6904]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
[6838]202    void LisaaTaso(Vector paikka, double leveys, double korkeus)
203    {
204        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
205        taso.Position = paikka;
[6939]206        taso.Color = Color.DarkRed;
[6838]207        Add(taso);
208    }
209
[6876]210    void LisaaOvi(Vector paikka, double leveys, double korkeus)
[6838]211    {
[6876]212       
[6904]213        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
214        ovi.Position = paikka;
215        ovi.Image = oviKuva;
216        ovi.Tag = "ovi";
217        Add(ovi);
[6838]218    }
219
220    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
221    {
[6904]222        pelaaja1 = new PlatformCharacter(35, 35);
[6838]223        pelaaja1.Position = paikka;
224        pelaaja1.Mass = 4.0;
225        pelaaja1.Image = pelaajanKuva;
226        AddCollisionHandler(pelaaja1, "avain", TormaaAvaimeen);
[6904]227        AddCollisionHandler(pelaaja1, "ovi", ovenAvaus);
[6939]228        AddCollisionHandler(pelaaja1, "ovi2", ovi2Avaus);
[6904]229        AddCollisionHandler(pelaaja1, "piikki", osuiPiikkiin);
230        AddCollisionHandler(pelaaja1, "checkpoint", checkpointAktivoitu);
[6974]231        AddCollisionHandler(pelaaja1, "pahis", osuiPiikkiin);
[6939]232        pelaaja1.IgnoresCollisionResponse = false;
[6838]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");
[6939]246        Keyboard.Listen(Key.R, ButtonState.Pressed, ResetToCheckpoint , "Palaa edelliseen checkpointtiin");
[6974]247        Keyboard.Listen(Key.Enter, ButtonState.Pressed, CheatitPaalle, "Enable Cheats");
[6838]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
[6974]253       
254
[6838]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
[6974]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
[6939]284    void ResetToCheckpoint()
285    {
286        pelaaja1.Position = viimeinenCheckpoint.Position;
287    }
288
[6838]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
[6876]309    void TormaaAvaimeen(PhysicsObject hahmo, PhysicsObject avain)
[6838]310    {
[6939]311       
312            maaliAani.Play();
313            MessageDisplay.Add("Sait avaimen!");
314            avain.Destroy();
[6838]315
[6939]316            avaintenmaara.Value += 1;
[6838]317    }
[6876]318
[6974]319    void osuiPiikkiin(PhysicsObject pelaaja1, PhysicsObject juttu)
[6904]320    {
321        pelaaja1.Position = viimeinenCheckpoint.Position;
[6939]322
323        kuolemat.Value += 1;
[6974]324       
[6904]325    }
326
327    void checkpointAktivoitu(PhysicsObject pelaaja1, PhysicsObject checkpoint)
328    {
329        viimeinenCheckpoint = checkpoint;
330        viimeinenCheckpoint.Image = checkpointKuvaKylla;
[6939]331        MessageDisplay.Add("Saavutit checkpointin!");
332        checkpoint.Tag = "aktivoituCheckpoint";
[6904]333    }
334
335
[6939]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        }
[6974]345        else
346        {
347            MessageDisplay.Add("Sinulla ei ole tarpeeksi avaimia.");
348        }
[6939]349    }
350   
[6904]351    void ovenAvaus(PhysicsObject pelaaja1, PhysicsObject ovi)
352    {
[6974]353        if (avaintenmaara > 0)
[6904]354        {
[6974]355            MessageDisplay.Add("Avasit oven");
356            avaintenmaara.Value -= 1;
357            ovi.Destroy();
[6904]358        }
[6974]359        else
360        {
361            MessageDisplay.Add("Sinulla ei ole tarpeeksi avaimia.");
362        }
[6904]363
[6974]364    }
[6904]365
[6974]366    void CheatitPaalle()
367    {
368        InputWindow kysymysIkkuna = new InputWindow("Enter Code To Enable Cheats");
369        kysymysIkkuna.TextEntered += ProcessInput;
370        Add( kysymysIkkuna );
371    }
[6904]372
[6974]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();
[6939]403
[6974]404
405            }
406        }
407    }
408
[6876]409    void avaimetTaynna()
410    {
[6939]411        MessageDisplay.Add("Olet saavuttanut avainten maksimimäärän!");
[6876]412    }
[6838]413}
Note: See TracBrowser for help on using the repository browser.