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

Revision 2057, 10.8 KB checked in by hesasnel, 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
39    bool masaKatsooOikealla = true;
40    bool masaLyo = false;
41
42    SoundEffect maaliAani = LoadSoundEffect("maali");
43
44    public override void Begin()
45    {
46        Gravity = new Vector(0, -1000);
47
48        luoKentta();
49        lisaaNappaimet();
50        lisaaESmittari();
51        Camera.Follow(pelaaja1);
52        Camera.ZoomFactor = 1.2;
53        Camera.StayInLevel = true;
54    }
55
56    void luoKentta()
57    {
58        TileMap kentta = TileMap.FromFile("kentta1.txt");
59        kentta['#'] = lisaaTaso;
60        kentta['*'] = lisaaTahti;
61        kentta['M'] = lisaaPelaaja;
62        kentta['O'] = lisaaMaankamara;
63        kentta['S'] = lisaaMaa;
64        kentta['J'] = lisaaJetpak;
65        kentta['E'] = lisaaES;
66        kentta['L'] = lisaaLaatikko;
67        kentta['K'] = lisaaKitara;
68        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
69        Level.CreateBorders();
70        GameObject taustakuva = new GameObject(Screen.Width, Screen.Height);
71        taustakuva.Image = tausta;
72        Add(taustakuva, -2);
73        GetLayer(-2).RelativeTransition = new Vector(0.1, 0.1);
74    }
75
76    PhysicsObject lisaaTaso()
77    {
78        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
79        taso.Color = Color.Green;
80        return taso;
81    }
82    PhysicsObject lisaaLaatikko()
83   {
84        PhysicsObject laatikko = PhysicsObject.CreateStaticObject(200, 200);
85        laatikko.Image = lootikko;
86        laatikko.Tag = "laatikko";
87        return laatikko;
88    }
89    PhysicsObject lisaaKitara()
90    {
91        PhysicsObject kitara = PhysicsObject.CreateStaticObject(65, 120);
92        kitara.Image = Kiitara;
93        kitara.Tag = "Kitara";
94        return kitara;
95    }
96    PhysicsObject lisaaTahti()
97    {
98        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
99        tahti.Image = tahtiKuva;
100        tahti.Tag = "tahti";
101        return tahti;
102    }
103    PhysicsObject lisaaMaankamara()
104    {
105        PhysicsObject maankamara = PhysicsObject.CreateStaticObject(40, 40);
106        maankamara.Image = ruohikko;
107        return maankamara;
108
109
110
111    }
112    PhysicsObject lisaaMaa()
113    {
114        PhysicsObject maa = PhysicsObject.CreateStaticObject(40, 40);
115        maa.Image = multa;
116        return maa;
117    }
118
119    PhysicsObject lisaaJetpak()
120    {
121        PhysicsObject jetpak = PhysicsObject.CreateStaticObject(65, 90);
122        jetpak.Image = Jetpack;
123        jetpak.Tag = "jetpak";
124        return jetpak;
125    }
126
127    PhysicsObject lisaaES()
128    {
129        PhysicsObject ES = PhysicsObject.CreateStaticObject(40, 80);
130        ES.Image = Polttoaine;
131        ES.Tag = "ES";
132        return ES;
133    }
134   
135    PlatformCharacter lisaaPelaaja()
136    {
137        pelaaja1 = new PlatformCharacter(75, 120);
138
139        PelaajanAnimaatiot();
140        //pelaaja1.Animation = new Animation(Pelaajalentaa);
141        //pelaaja1.Animation.Start();
142        pelaaja1.Mass = 4.0;
143        // pelaaja1.Image = pelaajanKuva;
144        AddCollisionHandler(pelaaja1, osuTahteen);
145        AddCollisionHandler(pelaaja1, osuJetpakiin);
146        AddCollisionHandler(pelaaja1, osuES);
147        AddCollisionHandler(pelaaja1, osuLaatikkoon);
148       
149
150        return pelaaja1;
151    }
152
153    void PelaajanAnimaatiot()
154    {
155        pelaaja1.RightWalkingAnimation = new Animation(pelaajanKavelykuvatOikea);
156        pelaaja1.RightWalkingAnimation.FPS = 10;
157        pelaaja1.RightWalkingAnimation.Start();
158        pelaaja1.LeftWalkingAnimation = new Animation(pelaajanKavelykuvatVasen);
159        pelaaja1.LeftWalkingAnimation.FPS = 10;
160        pelaaja1.LeftWalkingAnimation.Start();
161
162    }
163
164    void lisaaNappaimet()
165    {
166        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
167        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
168
169        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
170        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
171        Keyboard.Listen(Key.Space, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
172        Keyboard.Listen(Key.Down, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
173       
174       
175
176        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
177
178        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
179        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
180        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
181        ControllerOne.Listen(Button.DPadDown, ButtonState.Pressed, hakkaa, "Hakkaa kitaralla", pelaaja1);
182   
183       
184    }
185
186    void lisaaESmittari()
187    {
188        ESmittari = LuoESmittari( 600, 500); 
189    }
190
191    DoubleMeter LuoESmittari(double x, double y)
192    {
193        DoubleMeter mittari = new DoubleMeter(0);
194        Label naytto = new Label();
195        naytto.BindTo (mittari);
196        naytto.X = 300;
197        naytto.Y = 250;
198        naytto.TextColor = Color.LightGreen;
199        naytto.BorderColor = Color.Blue;
200        naytto.Color = Color.DarkBlue;
201        mittari.MaxValue = 15;
202        Add (naytto);
203        return mittari;
204    }
205
206    void kaytajetpak(PlatformCharacter hahmo, double nopeus)
207    {   
208       
209       
210       
211
212        if (ESmittari.Value > 0.0)
213        {
214            hahmo.Push(new Vector(0, nopeus));
215            ESmittari.Value -= 0.035;
216            pelaaja1.LeftWalkingAnimation = null;
217            pelaaja1.RightWalkingAnimation = null;
218            pelaaja1.RightIdleAnimation = null;
219            pelaaja1.LeftIdleAnimation = null;
220            pelaaja1.Animation = new Animation(Pelaajalentaa);
221            pelaaja1.Animation.Start();
222        }
223       
224       
225        //pelaaja1.Animation.Start(100);
226    }
227
228    void hakkaa(PlatformCharacter hahmo)
229    {
230        pelaaja1.Width = 170;
231        pelaaja1.RightWalkingAnimation = null;
232        pelaaja1.RightIdleAnimation = null;
233        pelaaja1.LeftWalkingAnimation = null;
234        pelaaja1.LeftIdleAnimation = null;
235        pelaaja1.Animation = null;
236
237        if (!masaKatsooOikealla)
238            pelaaja1.Animation = new Animation(masahakkaakuvatvasen);
239        else
240            pelaaja1.Animation = new Animation(masahakkaakuvat);
241        masaLyo = true;
242        pelaaja1.Animation.FPS = 5;
243        pelaaja1.Animation.Start();
244        Timer.SingleShot(0.4, ajastinlaukesi);
245        //pelaaja1.Animation.Stop();
246    }
247    void lopetalento()
248    {
249        PelaajanAnimaatiot();
250        pelaaja1.Animation = null;
251        //pelaaja1.LeftIdleAnimation.Start();
252        //pelaaja1.RightIdleAnimation.Start();
253        pelaaja1.LeftWalkingAnimation.Start();
254        pelaaja1.RightWalkingAnimation.Start();
255    }
256    void ajastinlaukesi()
257    {
258        PelaajanAnimaatiot();
259        pelaaja1.Animation = null;
260        masaLyo = false;
261        pelaaja1.Width = 75;
262
263    }
264    void liikuta(PlatformCharacter hahmo, double nopeus)
265    {
266        if (nopeus < 0)
267            masaKatsooOikealla = false;
268        else
269            masaKatsooOikealla = true;
270        hahmo.Walk(nopeus);
271    }
272
273    void hyppaa(PlatformCharacter hahmo, double nopeus)
274    {
275        hahmo.Jump(nopeus);
276    }
277
278    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
279    {
280        if (kohde.Tag.ToString() == "tahti")
281        {
282            maaliAani.Play();
283            MessageDisplay.Add("Keräsit tähden!");
284            kohde.Destroy();
285        }
286
287    }
288
289    void osuLaatikkoon(PhysicsObject hahmo, PhysicsObject kohde)
290    {
291        if (kohde.Tag.ToString() == "laatikko" && masaLyo)
292
293            kohde.Destroy();
294    }
295
296    void osuJetpakiin(PhysicsObject hahmo, PhysicsObject kohde)
297    {
298        if (kohde.Tag.ToString() == "jetpak")
299        {
300            Label label = new Label("Masa majava: Voi pojat! Sain Jetpakin! Nyt pystyn lentämään painamalla 'Ylös'.");
301           
302            Label label2 = new Label("Masa majava: Siihen kuitenkin tarvitaan Euroshopper-energiajuomaa polttoaineeksi...");
303
304            Add(label);
305            Timer.SingleShot(4, delegate()
306            {
307                label.Destroy();
308                Add(label2);
309            }
310            );
311            Timer.SingleShot(8, label2.Destroy);
312
313
314
315            kohde.Destroy();
316            Keyboard.Listen(Key.Up, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
317            Keyboard.Listen(Key.Up, ButtonState.Released, lopetalento, "Lopettaa lennon");
318            ControllerOne.Listen(Button.DPadUp, ButtonState.Down, kaytajetpak, "Käyttää Jetpakiä", pelaaja1, lentonopeus);
319            ControllerOne.Listen(Button.DPadUp, ButtonState.Released, lopetalento, "Lopettaa lennon");
320        }
321    }
322    void osuES(PhysicsObject hahmo, PhysicsObject kohde)
323    {
324        if (kohde.Tag.ToString() == "ES")
325        {
326            Label label = new Label("Masa majava: ES! Tekis mieli maistaa...mutta tarvitsen sitä polttoaineeksi.");
327            Add(label);
328            Timer.SingleShot(4, delegate()
329            {
330                label.Destroy();
331            });
332            kohde.Destroy();
333            ESmittari.Value += 5;
334            }
335    }
336}
Note: See TracBrowser for help on using the repository browser.