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

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