source: 2012/30/TapaniS/The Slayer task Marsu/The Slayer task Marsu/The Slayer task Marsu/The_Slayer_task_Marsu.cs @ 3821

Revision 3821, 9.9 KB checked in by juiitamm, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class The_Slayer_task_Marsu : PhysicsGame
10{
11    PlatformCharacter pelaaja;
12    Image pelaajanKuva = LoadImage("ok");
13
14    Image vihunKuva = LoadImage("Marsuvihu1");
15    Image marsunKuva = LoadImage("Marsuvihu2");
16    DoubleMeter elamaLaskuri;
17    IntMeter marsulaskuri;
18    int _kenttanro = 1;
19    Timer aikaLaskuri;
20    double tulinopeus = 2.0;
21
22    public override void Begin()
23    {
24        ClearAll();
25        näytävalikko();
26    }
27
28    void näytävalikko()
29    {
30        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
31            "Aloita peli", "Parhaat pisteet", "Lopeta");
32        Add(alkuValikko);
33        alkuValikko.ItemSelected += PainettiinValikonNappia;
34    }
35    void Luovälivalikko()
36    {    MultiSelectWindow VäliValikko = new MultiSelectWindow("VäliValikko",
37           "Seuraava Kenttä", "Pelaa kenttä uudestaan", "Lopeta");
38    Add(VäliValikko);
39    VäliValikko.ItemSelected += PainettiinVäliValikonNappia;
40
41    }
42
43
44
45    void LuoKentta(int kenttanro)
46    {
47        ClearAll();
48        marsulaskuri = new IntMeter(0);
49        marsulaskuri.LowerLimit += delegate { Luovälivalikko(); };
50
51        Gravity = new Vector(0.0, -800.0);
52        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Kentta" + kenttanro);
53        ruudut.SetTileMethod(Color.BrightGreen, LuoTaso);
54        ruudut.SetTileMethod(Color.Black, LuoPelaaja);
55        ruudut.SetTileMethod(Color.Gold, LuoVihollinen);
56        ruudut.SetTileMethod(Color.Maroon, LuoMaa);
57        ruudut.SetTileMethod(Color.LimeGreen, LuoKukka);
58        ruudut.SetTileMethod(Color.Gray, LuoRauta);
59        ruudut.SetTileMethod(Color.Red, LuoAselaatikko);
60
61        ruudut.Execute(22, 20);
62        Level.CreateBorders();
63        Camera.ZoomToLevel();
64        AsetaOhjaimet();
65        LuoAikaLaskuri();
66        LuoPistelaskuri();
67        LuoElamaLaskuri();
68    }
69
70    void AsetaOhjaimet()
71    {
72        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
73        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Hyppää");
74        Keyboard.Listen(Key.D, ButtonState.Down, Kavele, "Kävele", 250.0);
75        Keyboard.Listen(Key.A, ButtonState.Down, Kavele, null, -250.0);
76        Keyboard.Listen(Key.S, ButtonState.Pressed, Kyykkyyn, "Kyykkyyn");
77        Keyboard.Listen(Key.S, ButtonState.Released, NouseYlos, "");
78        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
79        Keyboard.Listen(Key.P, ButtonState.Released, Pause, "Pause");
80
81    }
82
83    void PainettiinValikonNappia(int valinta)
84    {
85        switch (valinta)
86        {
87            case 0:
88                LuoKentta(_kenttanro);
89                break;
90            case 1:
91                //ParhaatPisteet();
92                break;
93            case 2:
94                Exit();
95                break;
96        }
97    }
98
99        void PainettiinVäliValikonNappia(int valinta)
100        {
101            switch (valinta)
102            {
103                case 0:
104                    LuoKentta(++_kenttanro);
105                    break;
106                case 1:
107                    LuoKentta(_kenttanro);
108                    break;
109                case 2:
110                    Exit();
111                    break;
112            }
113
114    }
115
116
117    void LuoTaso(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        taso.Position = paikka;
121        //taso.Image = groundImage;
122        taso.CollisionIgnoreGroup = 1;
123        taso.Color = Color.BrightGreen;
124        Add(taso);
125
126
127
128    }
129    void LuoRauta(Vector paikka, double leveys, double korkeus)
130    {
131        PhysicsObject rauta = PhysicsObject.CreateStaticObject(leveys, korkeus);
132        rauta.Position = paikka;
133        //maa.Image = groundImage;
134        rauta.CollisionIgnoreGroup = 1;
135        rauta.Color = Color.Gray;
136        Add(rauta);
137
138
139    }
140
141    void LuoAselaatikko(Vector paikka, double leveys, double korkeus)
142    {
143        PhysicsObject aselaatikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
144        aselaatikko.Position = paikka;
145        //aselaatikko.Image = groundImage;
146        aselaatikko.CollisionIgnoreGroup = 1;
147        aselaatikko.Color = Color.Gray;
148        Add(aselaatikko);
149        aselaatikko.Tag = "ota ase";
150    }
151
152
153    void LuoMaa(Vector paikka, double leveys, double korkeus)
154    {
155        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
156        maa.Position = paikka;
157        //maa.Image = groundImage;
158        maa.CollisionIgnoreGroup = 1;
159        maa.Color = Color.Maroon;
160        Add(maa);
161    }
162
163    void LuoKukka(Vector paikka, double leveys, double korkeus)
164    {
165        PhysicsObject kukka = PhysicsObject.CreateStaticObject(leveys, korkeus);
166        kukka.Position = paikka;
167        //maa.Image = groundImage;
168        kukka.CollisionIgnoreGroup = 1;
169        kukka.Color = Color.LimeGreen;
170        Add(kukka);
171    }
172
173    void LuoElamaLaskuri()
174    {
175        elamaLaskuri = new DoubleMeter(25);
176        elamaLaskuri.MaxValue = 25;
177        elamaLaskuri.LowerLimit += ElamaLoppui;
178
179        ProgressBar elamaPalkki = new ProgressBar(150, 20);
180        elamaPalkki.X = Screen.Left + 150;
181        elamaPalkki.Y = Screen.Top - 20;
182        elamaPalkki.BindTo(elamaLaskuri);
183        Add(elamaPalkki);
184
185        elamaPalkki.Color = Color.Transparent;
186
187        //Palkin väri:
188        elamaPalkki.BarColor = Color.Lime;
189
190        //Reunan väri:
191        elamaPalkki.BorderColor = Color.Black;
192
193    }
194
195    void ElamaLoppui()
196    {
197        MessageDisplay.Add("Marsut Valtasivat maailman, Hävisit Pelin!");
198        pelaaja.Destroy();
199        näytävalikko();
200
201    }
202
203    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
204    {
205        pelaaja = new PlatformCharacter(30, 50);
206        pelaaja.Position = paikka;
207        Add(pelaaja);
208        pelaaja.Image = pelaajanKuva;
209        pelaaja.Tag = "pelaaja";
210        AssaultRifle pyssy = new AssaultRifle(2, 5);
211        pyssy.FireRate = tulinopeus;
212        pyssy.AmmoIgnoresGravity = true;
213        pyssy.Ammo.Value = 500000;
214        pelaaja.Weapon = pyssy;
215        pelaaja.Weapon.ProjectileCollision = AmmusOsuu;
216        AddCollisionHandler<PlatformCharacter, Vihu>(pelaaja, "vihu", pelaajatörmäsi);
217        AddCollisionHandler<PlatformCharacter, PhysicsObject>(pelaaja, "ota ase", pelaajasaiaseen);
218    }
219
220    void pelaajatörmäsi(PlatformCharacter pelaaja, Vihu marsu)
221    {
222        marsu.Image = marsunKuva;
223        Timer.SingleShot(0.5, delegate { vaihdamarsukuva(marsu); });
224        elamaLaskuri.Value -= 5;
225
226
227    }
228    void vaihdamarsukuva(Vihu marsu)
229    {
230        marsu.Image = vihunKuva;
231
232    }
233    void pelaajasaiaseen(PlatformCharacter pelaaja, PhysicsObject aselaatikko)
234    {
235        aselaatikko.Destroy();
236        tulinopeus = 20.0;
237        pelaaja.Weapon.FireRate = 20.0;
238    }
239
240
241
242
243
244    void LuoVihollinen(Vector paikka, double leveys, double korkeus)
245    {
246        Vihu vihu = new Vihu(25, 40);
247        vihu.Tag = "vihu";
248        vihu.Position = paikka;
249        Add(vihu);
250        vihu.Image = vihunKuva;
251        PlatformWandererBrain seuraajanAivot = new PlatformWandererBrain();
252        seuraajanAivot.TriesToJump = true;
253        seuraajanAivot.FallsOffPlatforms = true;
254        vihu.Brain = seuraajanAivot;
255        seuraajanAivot.Active = true;
256        seuraajanAivot.Speed = 50;
257        vihu.Destroyed += vihutuhoutuu;
258        marsulaskuri.Value++;
259       
260
261    }
262
263    void vihutuhoutuu()
264    {
265        pisteLaskuri.Value += 10;
266        marsulaskuri.Value--;
267
268    }
269
270    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
271    {
272        ammus.Destroy();
273        if (kohde.Tag.ToString() == "vihu")
274            (kohde as Vihu).elamaLaskuri.Value--;
275    }
276
277    void Hyppaa()
278    {
279        pelaaja.Jump(450);
280    }
281
282    void Kavele(double suunta)
283    {
284        pelaaja.Walk(suunta);
285    }
286    void Kyykkyyn()
287    {
288        pelaaja.Height = 20;
289    }
290    void Pause()
291    {
292        ClearControls();
293        Keyboard.Listen(Key.P, ButtonState.Released, PalaaPeliin, "Pause");
294        aikaLaskuri.Pause();
295        PhysicsEnabled = false;
296    }
297    void PalaaPeliin()
298    {
299        ClearControls();
300        AsetaOhjaimet();
301        aikaLaskuri.Start();
302        PhysicsEnabled = true;
303    }
304
305    void NouseYlos()
306    {
307        pelaaja.Height = 50;
308    }
309
310    void AmmuAseella()
311    {
312        PhysicsObject ammus = pelaaja.Weapon.Shoot();
313
314
315
316        if (ammus != null)
317        {
318
319        }
320    }
321
322
323    void LuoPistelaskuri()
324    {
325        int vanhatpisteet = 0;
326        if (pisteLaskuri != null)
327        {
328            vanhatpisteet = pisteLaskuri.Value;
329        }
330
331        pisteLaskuri = new IntMeter(vanhatpisteet);
332
333        Label pisteNaytto = new Label();
334        pisteNaytto.X = Screen.Left + 100;
335        pisteNaytto.Y = Screen.Top - 100;
336        pisteNaytto.TextColor = Color.Black;
337        pisteNaytto.Color = Color.White;
338        pisteNaytto.Title = "Pisteet";
339
340
341
342        pisteNaytto.BindTo(pisteLaskuri);
343        Add(pisteNaytto);
344
345    }
346    IntMeter pisteLaskuri;
347
348    void LuoAikaLaskuri()
349    {
350        aikaLaskuri = new Timer();
351        aikaLaskuri.Start();
352
353        Label aikaNaytto = new Label();
354        aikaNaytto.TextColor = Color.White;
355        aikaNaytto.DecimalPlaces = 1;
356        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
357        Add(aikaNaytto);
358    }
359}
360
361class Vihu : PlatformCharacter
362{
363    public IntMeter elamaLaskuri = new IntMeter(2, 0, 2);
364
365    public Vihu(double leveys, double korkeus)
366        : base(leveys, korkeus)
367    {
368        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
369
370    }
371
372
373
374}
375
Note: See TracBrowser for help on using the repository browser.