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

Revision 2107, 14.1 KB checked in by paaaanro, 8 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 Peli : PhysicsGame
10{
11    const double nopeus = 400;
12    const double hyppyNopeus = 1000;
13    const double lentonopeus = 10000;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17    DoubleMeter ESmittari;
18
19    Image pelaajanKuvaOikea = LoadImage("Masaoikea");
20    Image[] pelaajanKavelykuvatOikea = LoadImages("Masaoikea", "Masajuoksuoikea");
21    Image[] pelaajanKavelykuvatVasen = LoadImages("Masavasen", "Masajuoksuvasen");
22
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");
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");
38    Image Maaali = LoadImage("Maali");
39
40    bool masaKatsooOikealla = true;
41    bool masaLyo = false;
42
43    SoundEffect maaliAani = LoadSoundEffect("maali");
44    int kenttatilanne = 1;
45
46    public override void Begin()
47    {
48        aloitapeli(kenttatilanne);
49       
50
51    }
52    void aloitapeli(int kenttanumero)
53    {
54        ClearAll();
55        Gravity = new Vector(0, -1000);
56        if (kenttanumero == 1)
57        {
58            luoKentta();
59        }
60        if (kenttanumero == 2)
61        {
62            luokentta2();
63        }
64        lisaaNappaimet();
65        lisaaESmittari();
66        Camera.Follow(pelaaja1);
67        Camera.ZoomFactor = 1.2;
68        Camera.StayInLevel = true;   
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;
80        kentta['L'] = lisaaLaatikko;
81        kentta['K'] = lisaaKitara;
82        kentta['m'] = lisaaMaali;
83        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
84        Level.CreateBorders();
85        Level.BackgroundColor = Color.DarkBlue;
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);
90    }
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    }
112
113    PhysicsObject lisaaTaso()
114    {
115        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
116        taso.Color = Color.Green;
117        return taso;
118    }
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    }
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    }
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    }
181   
182    PlatformCharacter lisaaPelaaja()
183    {
184        pelaaja1 = new PlatformCharacter(75, 120);
185
186        PelaajanAnimaatiot();
187        //pelaaja1.Animation = new Animation(Pelaajalentaa);
188        //pelaaja1.Animation.Start();
189        pelaaja1.Mass = 4.0;
190        // pelaaja1.Image = pelaajanKuva;
191        AddCollisionHandler(pelaaja1, osuTahteen);
192        AddCollisionHandler(pelaaja1, osuJetpakiin);
193        AddCollisionHandler(pelaaja1, osuES);
194        AddCollisionHandler(pelaaja1, osuLaatikkoon);
195        AddCollisionHandler(pelaaja1, osuKitaraan);
196        AddCollisionHandler(pelaaja1, osuMaaliin);
197       
198
199        return pelaaja1;
200    }
201
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
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);
221       
222       
223       
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);
230     
231   
232       
233    }
234
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;
300        //pelaaja1.LeftIdleAnimation.Start();
301        //pelaaja1.RightIdleAnimation.Start();
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    }
313    void liikuta(PlatformCharacter hahmo, double nopeus)
314    {
315        if (nopeus < 0)
316            masaKatsooOikealla = false;
317        else
318            masaKatsooOikealla = true;
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        {
331           
332            MessageDisplay.Add("Keräsit tähden!");
333            kohde.Destroy();
334        }
335
336    }
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?");
342            label.TextColor = Color.Yellow;
343            Label label2 = new Label("Masa majava: Hei! Nyt keksin! Painamalla 'Alas' minä voisin...");
344            label2.TextColor = Color.Yellow;
345            Add (label);
346            Timer.SingleShot(4, delegate()
347            {
348                label.Destroy();
349                Add(label2);
350            }
351            );
352            Timer.SingleShot(8, label2.Destroy);
353            kohde.Destroy();
354            Keyboard.Listen(Key.Down, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
355              ControllerOne.Listen(Button.DPadDown, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
356        }
357    }
358
359    void osuLaatikkoon(PhysicsObject hahmo, PhysicsObject kohde)
360    {
361        if (kohde.Tag.ToString() == "laatikko" && masaLyo)
362        {
363            Animation laatikkotuhottu = new Animation(laatikkodestroyed);
364            Label label = new Label("Masa majava: Siitäs sait, tyhmä loota.");
365            label.TextColor = Color.Yellow;
366            Add(label);
367            Timer.SingleShot(3, delegate()
368            {
369                label.Destroy();
370            });
371            laatikkotuhottu.Start(1);
372            Timer.SingleShot(1, delegate()
373            {
374                kohde.Destroy();
375            });
376        }
377    }
378
379    void osuJetpakiin(PhysicsObject hahmo, PhysicsObject kohde)
380    {
381        if (kohde.Tag.ToString() == "jetpak")
382        {
383            Label label = new Label("Masa majava: Voi pojat! Sain Jetpakin! Nyt pystyn lentämään painamalla 'Ylös'.");
384            label.TextColor = Color.Yellow;
385           
386            Label label2 = new Label("Masa majava: Siihen kuitenkin tarvitaan Euroshopper-energiajuomaa polttoaineeksi...");
387            label2.TextColor = Color.Yellow;
388
389            Add(label);
390            Timer.SingleShot(2, delegate()
391            {
392                label.Destroy();
393                Add(label2);
394            }
395            );
396            Timer.SingleShot(4, label2.Destroy);
397
398
399
400            kohde.Destroy();
401            Keyboard.Listen(Key.Up, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
402            Keyboard.Listen(Key.Up, ButtonState.Released, lopetalento, "Lopettaa lennon");
403            ControllerOne.Listen(Button.DPadUp, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
404            ControllerOne.Listen(Button.DPadUp, ButtonState.Released, lopetalento, "Lopettaa lennon");
405        }
406    }
407    void osuES(PhysicsObject hahmo, PhysicsObject kohde)
408    {
409        if (kohde.Tag.ToString() == "ES")
410        {
411            Label label = new Label("Masa majava: ES! Tekis mieli maistaa...mutta tarvitsen sitä polttoaineeksi.");
412            label.TextColor = Color.Yellow;
413            Add(label);
414            Timer.SingleShot(4, delegate()
415            {
416                label.Destroy();
417            });
418            kohde.Destroy();
419            ESmittari.Value += 5;
420            }
421    }
422    void osuMaaliin(PhysicsObject hahmo, PhysicsObject kohde)
423    {
424        if (kohde.Tag.ToString() == "Maali")
425        {
426            Label label = new Label("Masa majava: Jepulis! Ovi seuraavaan kenttään!");
427            label.TextColor = Color.Yellow;
428            Add(label);
429            Timer.SingleShot(4,delegate()
430                {
431                    label.Destroy();
432                    kenttatilanne += 1;
433                    aloitapeli(kenttatilanne);
434                });
435
436
437        }
438    }
439}
Note: See TracBrowser for help on using the repository browser.