source: 2011/24/HenrikS/MasaMajavanMaailma/MasaMajavanMaailma/MasaMajavanMaailma/Peli.cs @ 2159

Revision 2159, 14.4 KB checked in by Hesasnel, 8 years ago (diff)
RevLine 
[2036]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11    const double nopeus = 400;
12    const double hyppyNopeus = 1000;
[2057]13    const double lentonopeus = 10000;
[2036]14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
[2057]17    DoubleMeter ESmittari;
[2036]18
19    Image pelaajanKuvaOikea = LoadImage("Masaoikea");
[2057]20    Image[] pelaajanKavelykuvatOikea = LoadImages("Masaoikea", "Masajuoksuoikea");
21    Image[] pelaajanKavelykuvatVasen = LoadImages("Masavasen", "Masajuoksuvasen");
22
[2036]23    Image tahtiKuva = LoadImage("tahti");
24    Image pelaajanKuvaVasen = LoadImage("Masavasen");
25    Image PelaajajuokseeOikea = LoadImage("Masajuoksuvasen");
26    Image PelaajajuokseeVasen = LoadImage("Masajuoksuoikea");
27    Image Pelaajalentaa = LoadImage("Masalentaa");
28    Image Jetpack = LoadImage("Jetpak");
29    Image Polttoaine = LoadImage("Euroshopper");
30    Image ruohikko = LoadImage("Maanpinta");
31    Image multa = LoadImage("Multa");
[2057]32    Image Kiitara = LoadImage("Kitara");
33    Image[] masahakkaakuvat = LoadImages ("Masakitara", "MasakitaraPAM");
34    Image tausta = LoadImage("Tausta");
35    Image lootikko = LoadImage("Laatikko");
36    Image[] masahakkaakuvatvasen = LoadImages("MasakitaraVasen", "MasakitaraTUM");
37    Image[] laatikkodestroyed = LoadImages("Laatikkohajosi", "Hammastikkuja");
[2107]38    Image Maaali = LoadImage("Maali");
[2036]39
[2057]40    bool masaKatsooOikealla = true;
41    bool masaLyo = false;
42
[2036]43    SoundEffect maaliAani = LoadSoundEffect("maali");
[2107]44    int kenttatilanne = 1;
[2036]45
46    public override void Begin()
47    {
[2107]48        aloitapeli(kenttatilanne);
49       
50
51    }
52    void aloitapeli(int kenttanumero)
53    {
54        ClearAll();
[2036]55        Gravity = new Vector(0, -1000);
[2107]56        if (kenttanumero == 1)
57        {
58            luoKentta();
59        }
60        if (kenttanumero == 2)
61        {
62            luokentta2();
63        }
[2036]64        lisaaNappaimet();
[2057]65        lisaaESmittari();
[2036]66        Camera.Follow(pelaaja1);
67        Camera.ZoomFactor = 1.2;
[2107]68        Camera.StayInLevel = true;   
[2036]69    }
70    void luoKentta()
71    {
72        TileMap kentta = TileMap.FromFile("kentta1.txt");
73        kentta['#'] = lisaaTaso;
74        kentta['*'] = lisaaTahti;
75        kentta['M'] = lisaaPelaaja;
76        kentta['O'] = lisaaMaankamara;
77        kentta['S'] = lisaaMaa;
78        kentta['J'] = lisaaJetpak;
79        kentta['E'] = lisaaES;
[2057]80        kentta['L'] = lisaaLaatikko;
81        kentta['K'] = lisaaKitara;
[2107]82        kentta['m'] = lisaaMaali;
[2036]83        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
84        Level.CreateBorders();
[2107]85        Level.BackgroundColor = Color.DarkBlue;
[2057]86        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
87        taustakuva.Image = tausta;
88        Add(taustakuva, -2);
89        GetLayer(-2).RelativeTransition = new Vector(0.1, 0.1);
[2036]90    }
[2107]91    void luokentta2()
92    {
93        TileMap kentta2 = TileMap.FromFile("kentta2.txt");
94        kentta2['#'] = lisaaTaso;
95        kentta2['*'] = lisaaTahti;
96        kentta2['M'] = lisaaPelaaja;
97        kentta2['O'] = lisaaMaankamara;
98        kentta2['S'] = lisaaMaa;
99        kentta2['J'] = lisaaJetpak;
100        kentta2['E'] = lisaaES;
101        kentta2['L'] = lisaaLaatikko;
102        kentta2['K'] = lisaaKitara;
103        kentta2['m'] = lisaaMaali;
104        kentta2.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
105        Level.CreateBorders();
106        Level.BackgroundColor = Color.DarkBlue;
107        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
108        taustakuva.Image = tausta;
109        Add(taustakuva, -2);
110        GetLayer(-2).RelativeTransition = new Vector(0.1, 0.1);
111    }
[2036]112
113    PhysicsObject lisaaTaso()
114    {
115        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
116        taso.Color = Color.Green;
117        return taso;
118    }
[2057]119    PhysicsObject lisaaLaatikko()
120   {
121        PhysicsObject laatikko = PhysicsObject.CreateStaticObject(200, 200);
122        laatikko.Image = lootikko;
123        laatikko.Tag = "laatikko";
124        return laatikko;
125    }
126    PhysicsObject lisaaKitara()
127    {
128        PhysicsObject kitara = PhysicsObject.CreateStaticObject(65, 120);
129        kitara.Image = Kiitara;
130        kitara.Tag = "Kitara";
131        return kitara;
132    }
[2036]133    PhysicsObject lisaaTahti()
134    {
135        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
136        tahti.Image = tahtiKuva;
137        tahti.Tag = "tahti";
138        return tahti;
139    }
140    PhysicsObject lisaaMaankamara()
141    {
142        PhysicsObject maankamara = PhysicsObject.CreateStaticObject(40, 40);
143        maankamara.Image = ruohikko;
144        return maankamara;
145
146
147
148    }
149    PhysicsObject lisaaMaa()
150    {
151        PhysicsObject maa = PhysicsObject.CreateStaticObject(40, 40);
152        maa.Image = multa;
153        return maa;
154    }
155
156    PhysicsObject lisaaJetpak()
157    {
158        PhysicsObject jetpak = PhysicsObject.CreateStaticObject(65, 90);
159        jetpak.Image = Jetpack;
160        jetpak.Tag = "jetpak";
161        return jetpak;
162    }
163
164    PhysicsObject lisaaES()
165    {
166        PhysicsObject ES = PhysicsObject.CreateStaticObject(40, 80);
167        ES.Image = Polttoaine;
168        ES.Tag = "ES";
169        return ES;
170    }
[2107]171    PhysicsObject lisaaMaali()
172    {
173        PhysicsObject Maali = PhysicsObject.CreateStaticObject(75, 120);
174        Maali.Image = Maaali;
175        Maali.Tag = "Maali";
176        return Maali;
177
178
179
180    }
[2057]181   
[2036]182    PlatformCharacter lisaaPelaaja()
183    {
184        pelaaja1 = new PlatformCharacter(75, 120);
[2057]185
186        PelaajanAnimaatiot();
187        //pelaaja1.Animation = new Animation(Pelaajalentaa);
188        //pelaaja1.Animation.Start();
[2036]189        pelaaja1.Mass = 4.0;
190        // pelaaja1.Image = pelaajanKuva;
191        AddCollisionHandler(pelaaja1, osuTahteen);
192        AddCollisionHandler(pelaaja1, osuJetpakiin);
193        AddCollisionHandler(pelaaja1, osuES);
[2057]194        AddCollisionHandler(pelaaja1, osuLaatikkoon);
[2107]195        AddCollisionHandler(pelaaja1, osuKitaraan);
196        AddCollisionHandler(pelaaja1, osuMaaliin);
[2057]197       
[2036]198
199        return pelaaja1;
200    }
201
[2057]202    void PelaajanAnimaatiot()
203    {
204        pelaaja1.RightWalkingAnimation = new Animation(pelaajanKavelykuvatOikea);
205        pelaaja1.RightWalkingAnimation.FPS = 10;
206        pelaaja1.RightWalkingAnimation.Start();
207        pelaaja1.LeftWalkingAnimation = new Animation(pelaajanKavelykuvatVasen);
208        pelaaja1.LeftWalkingAnimation.FPS = 10;
209        pelaaja1.LeftWalkingAnimation.Start();
210
211    }
212
[2036]213    void lisaaNappaimet()
214    {
215        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
216        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
217
218        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
219        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
220        Keyboard.Listen(Key.Space, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
[2107]221       
[2057]222       
223       
[2036]224
225        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
226
227        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
228        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
229        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
[2107]230     
[2057]231   
232       
[2036]233    }
234
[2057]235    void lisaaESmittari()
236    {
237        ESmittari = LuoESmittari( 600, 500); 
238    }
239
240    DoubleMeter LuoESmittari(double x, double y)
241    {
242        DoubleMeter mittari = new DoubleMeter(0);
243        Label naytto = new Label();
244        naytto.BindTo (mittari);
245        naytto.X = 300;
246        naytto.Y = 250;
247        naytto.TextColor = Color.LightGreen;
248        naytto.BorderColor = Color.Blue;
249        naytto.Color = Color.DarkBlue;
250        mittari.MaxValue = 15;
251        Add (naytto);
252        return mittari;
253    }
254
255    void kaytajetpak(PlatformCharacter hahmo, double nopeus)
256    {   
257       
258       
259       
260
261        if (ESmittari.Value > 0.0)
262        {
263            hahmo.Push(new Vector(0, nopeus));
264            ESmittari.Value -= 0.035;
265            pelaaja1.LeftWalkingAnimation = null;
266            pelaaja1.RightWalkingAnimation = null;
267            pelaaja1.RightIdleAnimation = null;
268            pelaaja1.LeftIdleAnimation = null;
269            pelaaja1.Animation = new Animation(Pelaajalentaa);
270            pelaaja1.Animation.Start();
271        }
272       
273       
274        //pelaaja1.Animation.Start(100);
275    }
276
277    void hakkaa(PlatformCharacter hahmo)
278    {
279        pelaaja1.Width = 170;
280        pelaaja1.RightWalkingAnimation = null;
281        pelaaja1.RightIdleAnimation = null;
282        pelaaja1.LeftWalkingAnimation = null;
283        pelaaja1.LeftIdleAnimation = null;
284        pelaaja1.Animation = null;
285
286        if (!masaKatsooOikealla)
287            pelaaja1.Animation = new Animation(masahakkaakuvatvasen);
288        else
289            pelaaja1.Animation = new Animation(masahakkaakuvat);
290        masaLyo = true;
291        pelaaja1.Animation.FPS = 5;
292        pelaaja1.Animation.Start();
293        Timer.SingleShot(0.4, ajastinlaukesi);
294        //pelaaja1.Animation.Stop();
295    }
296    void lopetalento()
297    {
298        PelaajanAnimaatiot();
299        pelaaja1.Animation = null;
[2159]300        pelaaja1.LeftIdleAnimation.Start();
301        pelaaja1.RightIdleAnimation.Start();
[2057]302        pelaaja1.LeftWalkingAnimation.Start();
303        pelaaja1.RightWalkingAnimation.Start();
304    }
305    void ajastinlaukesi()
306    {
307        PelaajanAnimaatiot();
308        pelaaja1.Animation = null;
309        masaLyo = false;
310        pelaaja1.Width = 75;
311
312    }
[2036]313    void liikuta(PlatformCharacter hahmo, double nopeus)
314    {
[2057]315        if (nopeus < 0)
316            masaKatsooOikealla = false;
317        else
318            masaKatsooOikealla = true;
[2036]319        hahmo.Walk(nopeus);
320    }
321
322    void hyppaa(PlatformCharacter hahmo, double nopeus)
323    {
324        hahmo.Jump(nopeus);
325    }
326
327    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
328    {
329        if (kohde.Tag.ToString() == "tahti")
330        {
[2107]331           
[2036]332            MessageDisplay.Add("Keräsit tähden!");
333            kohde.Destroy();
334        }
335
336    }
[2107]337    void osuKitaraan(PhysicsObject hahmo, PhysicsObject kohde)
338    {
339        if (kohde.Tag.ToString() == "Kitara")
340        {
341            Label label = new Label("Masa majava: Kitara...mitä minä tällä tekisin. Soittaisin musiikkia?");
[2159]342            label.TextColor = Color.Black;
343            label.Color = Color.White;
[2107]344            Label label2 = new Label("Masa majava: Hei! Nyt keksin! Painamalla 'Alas' minä voisin...");
[2159]345            label2.TextColor = Color.Black;
346            label2.Color = Color.White;
[2107]347            Add (label);
348            Timer.SingleShot(4, delegate()
349            {
350                label.Destroy();
351                Add(label2);
352            }
353            );
354            Timer.SingleShot(8, label2.Destroy);
355            kohde.Destroy();
356            Keyboard.Listen(Key.Down, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
357              ControllerOne.Listen(Button.DPadDown, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
358        }
359    }
[2057]360
361    void osuLaatikkoon(PhysicsObject hahmo, PhysicsObject kohde)
362    {
363        if (kohde.Tag.ToString() == "laatikko" && masaLyo)
[2107]364        {
365            Animation laatikkotuhottu = new Animation(laatikkodestroyed);
366            Label label = new Label("Masa majava: Siitäs sait, tyhmä loota.");
[2159]367            label.TextColor = Color.Black;
368            label.Color = Color.White;
[2107]369            Add(label);
370            Timer.SingleShot(3, delegate()
371            {
372                label.Destroy();
373            });
[2117]374           
[2159]375            Timer.SingleShot(0.5, delegate()
376            {
377                laatikkotuhottu.Start(1);
[2107]378                kohde.Destroy();
[2159]379            });
[2107]380        }
[2057]381    }
382
[2036]383    void osuJetpakiin(PhysicsObject hahmo, PhysicsObject kohde)
384    {
385        if (kohde.Tag.ToString() == "jetpak")
386        {
387            Label label = new Label("Masa majava: Voi pojat! Sain Jetpakin! Nyt pystyn lentämään painamalla 'Ylös'.");
[2159]388            label.TextColor = Color.Black;
389            label.Color = Color.White;
[2057]390           
[2036]391            Label label2 = new Label("Masa majava: Siihen kuitenkin tarvitaan Euroshopper-energiajuomaa polttoaineeksi...");
[2159]392            label2.TextColor = Color.Black;
393            label2.Color = Color.White;
[2036]394            Add(label);
[2117]395            Timer.SingleShot(3, delegate()
[2036]396            {
397                label.Destroy();
398                Add(label2);
399            }
400            );
[2117]401            Timer.SingleShot(6, label2.Destroy);
[2036]402
403
404
405            kohde.Destroy();
[2057]406            Keyboard.Listen(Key.Up, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
407            Keyboard.Listen(Key.Up, ButtonState.Released, lopetalento, "Lopettaa lennon");
408            ControllerOne.Listen(Button.DPadUp, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
409            ControllerOne.Listen(Button.DPadUp, ButtonState.Released, lopetalento, "Lopettaa lennon");
[2036]410        }
411    }
412    void osuES(PhysicsObject hahmo, PhysicsObject kohde)
413    {
414        if (kohde.Tag.ToString() == "ES")
415        {
[2057]416            Label label = new Label("Masa majava: ES! Tekis mieli maistaa...mutta tarvitsen sitä polttoaineeksi.");
[2159]417            label.TextColor = Color.Black;
418            label.Color = Color.White;
[2057]419            Add(label);
420            Timer.SingleShot(4, delegate()
421            {
422                label.Destroy();
423            });
[2036]424            kohde.Destroy();
[2057]425            ESmittari.Value += 5;
426            }
[2036]427    }
[2107]428    void osuMaaliin(PhysicsObject hahmo, PhysicsObject kohde)
429    {
430        if (kohde.Tag.ToString() == "Maali")
431        {
432            Label label = new Label("Masa majava: Jepulis! Ovi seuraavaan kenttään!");
[2159]433            label.TextColor = Color.Black;
434            label.Color = Color.White;
[2107]435            Add(label);
436            Timer.SingleShot(4,delegate()
437                {
438                    label.Destroy();
439                    kenttatilanne += 1;
440                    aloitapeli(kenttatilanne);
441                });
442
443
444        }
445    }
[2036]446}
Note: See TracBrowser for help on using the repository browser.