source: 2013/24/HenryS/Wizard_Battle/Wizard_Battle/Wizard_Battle/Wizard_Battle.cs @ 4077

Revision 4077, 17.9 KB checked in by hejusiuk, 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 Wizard_Battle : PhysicsGame
10{
11    const double nopeus = 350;
12    const double hyppyNopeus = 850;
13    const int RUUDUN_KOKO = 40;
14
15    List<Label> valikonKohdat;
16
17    PlatformCharacter pelaaja1;
18    PlatformCharacter pelaaja2;
19    PlatformCharacter pelaaja3;
20    PlatformCharacter pelaaja4;
21
22    DoubleMeter elamaLaskuri;
23    DoubleMeter elamaLaskuri2;
24    DoubleMeter elamaLaskuri3;
25    DoubleMeter elamaLaskuri4;
26    IntMeter Lopunlaskuri;
27
28    bool saakoTeleportata = true;
29    bool saakoLuoda = true;
30    bool saakoHyokata = true;
31
32    Image pelaajanKuva = LoadImage("norsu");
33    Image tahtiKuva = LoadImage("tahti");
34    Image WVelho = LoadImage("BlueWizard");
35    Image DVelho = LoadImage("DarkWizard");
36    Image RVelho = LoadImage("RedWizard");
37    Image BVelho = LoadImage("BrownWizard");
38    Image Tulipallo = LoadImage("Fireball");
39    Image Tuli = LoadImage("Fire");
40    Image Vortex = LoadImage("Vortex");
41    Image Seinä = LoadImage("Mud");
42    Image Piikki = LoadImage("Spike");
43
44    SoundEffect maaliAani = LoadSoundEffect("maali");
45
46    public override void Begin()
47    {
48        Valikko();
49    }
50
51    void Valikko()
52        {
53            ClearAll();
54            ControllerOne.Listen(Button.A, ButtonState.Down, LuoKentta, "Aloita");
55            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
56            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
57            IsMouseVisible = true;
58            valikonKohdat = new List<Label>();
59            Label kohta1 = new Label("Aloita uusi peli");
60            kohta1.Position = new Vector(0, 40);
61            valikonKohdat.Add(kohta1);
62            Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
63            Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, LuoKentta, null);
64
65            foreach (Label valikonKohta in valikonKohdat)
66            {
67                Add(valikonKohta);
68            }
69   
70   
71    }
72
73            void ValikossaLiikkuminen(AnalogState hiirenTila)
74        {
75
76            foreach (Label Kohta in valikonKohdat)
77
78            {
79                if (Mouse.IsCursorOn(Kohta))
80                {
81                    Kohta.TextColor = Color.Red;
82                }
83                else
84                {
85                    Kohta.TextColor = Color.Black;
86                }
87
88            }
89        }
90
91    void LuoKentta()
92    {
93
94        ClearAll();
95        TileMap kentta = TileMap.FromLevelAsset("kentta1");
96        kentta.SetTileMethod('#', LisaaTaso);
97        kentta.SetTileMethod('P', LuoPelaaja1);
98        kentta.SetTileMethod('D', LuoPelaaja2);
99        kentta.SetTileMethod('R', LuoPelaaja3);
100        kentta.SetTileMethod('B', LuoPelaaja4);
101        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
102        Level.CreateBorders();
103        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
104        Gravity = new Vector(0, -1000);
105        LisaaNappaimet1();
106        LisaaNappaimet2();
107        LisaaNappaimet3();
108        LisaaNappaimet4();
109        Camera.ZoomToLevel();
110        Camera.StayInLevel = true;
111        LuoElamaLaskuri();
112        LuoElamaLaskuri2();
113        LuoElamaLaskuri3();
114        LuoElamaLaskuri4();
115        Loppui();
116    }
117
118    void LisaaTaso(Vector paikka, double leveys, double korkeus)
119    {
120        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
121        taso.Position = paikka;
122        taso.Color = Color.Green;
123        Add(taso);
124    }
125
126
127    void LuoPelaaja1(Vector paikka, double leveys, double korkeus)
128    {
129        pelaaja1 = new PlatformCharacter(80.0, 80.0);
130        pelaaja1.Position = paikka;
131        pelaaja1.Mass = 4.0;
132        pelaaja1.Image = WVelho;
133        Add(pelaaja1);
134
135    }
136
137
138
139    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
140    {
141        pelaaja2 = new PlatformCharacter(80.0, 80.0);
142        pelaaja2.Position = paikka;
143        pelaaja2.Mass = 4.0;
144        pelaaja2.Image = DVelho;
145        Add(pelaaja2);
146        pelaaja2.Weapon = new AssaultRifle(30, 10);
147        pelaaja2.Weapon.Ammo.Value = 1000;
148        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
149        pelaaja2.Weapon.FireRate = 0.5;
150    }
151
152    void LuoPelaaja3(Vector paikka, double leveys, double korkeus)
153    {
154        pelaaja3 = new PlatformCharacter(80.0, 80.0);
155        pelaaja3.Position = paikka;
156        pelaaja3.Mass = 4.0;
157        pelaaja3.Image = RVelho;
158        Add(pelaaja3);
159        pelaaja3.Weapon = new AssaultRifle(30, 10);
160        pelaaja3.Weapon.Ammo.Value = 1000;
161        pelaaja3.Weapon.ProjectileCollision = AmmusOsui;
162        pelaaja3.Weapon.FireRate = 0.5;
163    }
164
165    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
166    {
167        ammus.Destroy();
168
169        if (kohde == pelaaja1)
170        {
171            elamaLaskuri.Value -= 100;
172            PhysicsObject tulta = PhysicsObject.CreateStaticObject(50.0, 70.0);
173            tulta.Position = pelaaja1.Position;
174            tulta.Image = Tuli;
175            tulta.IgnoresCollisionResponse = true;
176            Add(tulta, 2);
177            tulta.MaximumLifetime = TimeSpan.FromSeconds(1.0);
178
179        }
180        if (kohde == pelaaja2)
181        {
182            elamaLaskuri2.Value -= 100;
183            PhysicsObject tulta = PhysicsObject.CreateStaticObject(50.0, 70.0);
184            tulta.Position = pelaaja2.Position;
185            tulta.Image = Tuli;
186            tulta.IgnoresCollisionResponse = true;
187            Add(tulta, 2);
188            tulta.MaximumLifetime = TimeSpan.FromSeconds(1.0);
189
190        }
191        if (kohde == pelaaja4)
192        {
193            elamaLaskuri4.Value -= 100;
194            PhysicsObject tulta = PhysicsObject.CreateStaticObject(50.0, 70.0);
195            tulta.Position = pelaaja4.Position;
196            tulta.Image = Tuli;
197            tulta.IgnoresCollisionResponse = true;
198            Add(tulta, 2);
199            tulta.MaximumLifetime = TimeSpan.FromSeconds(1.0);
200
201        }
202    }
203
204    void LuoPelaaja4(Vector paikka, double leveys, double korkeus)
205    {
206        pelaaja4 = new PlatformCharacter(80.0, 80.0);
207        pelaaja4.Position = paikka;
208        pelaaja4.Mass = 4.0;
209        pelaaja4.Image = BVelho;
210        Add(pelaaja4);
211    }
212
213    void LisaaNappaimet1()
214    {
215        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
216        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
217
218        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Water wizard liikkuu vasemmalle", pelaaja1, -nopeus);
219        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Water wizard liikkuu oikealle", pelaaja1, nopeus);
220        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Water wizard hyppää", pelaaja1, hyppyNopeus);
221
222
223        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
224
225        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Water wizard liikkuu vasemmalle", pelaaja1, -nopeus);
226        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Water wizard liikkuu oikealle", pelaaja1, nopeus);
227        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Water wizard hyppää", pelaaja1, hyppyNopeus);
228
229
230    }
231
232    void LisaaNappaimet2()
233    {
234        Keyboard.Listen(Key.F, ButtonState.Down, Liikuta, "Dark wizard liikkuu vasemmalle", pelaaja2, -nopeus);
235        Keyboard.Listen(Key.H, ButtonState.Down, Liikuta, "Dark wizard liikkuu oikealle", pelaaja2, nopeus);
236        Keyboard.Listen(Key.T, ButtonState.Pressed, Hyppaa, "Dark wizard hyppää", pelaaja2, hyppyNopeus);
237        Keyboard.Listen(Key.R, ButtonState.Pressed, Teleport, "Dark wizard Teleporttaa", pelaaja2);
238        Keyboard.Listen(Key.Y, ButtonState.Pressed, AmmuAseella2, "Dark wizard Hyökkää", pelaaja2);
239
240        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Dark wizard liikkuu vasemmalle", pelaaja2, -nopeus);
241        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Dark wizard liikkuu oikealle", pelaaja2, nopeus);
242        ControllerTwo.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Dark wizard hyppää", pelaaja2, hyppyNopeus);
243        ControllerTwo.Listen(Button.Y, ButtonState.Pressed, Teleport, "Dark wizard Teleporttaa", pelaaja2);
244   
245    }
246
247    void LisaaNappaimet3()
248    {
249        Keyboard.Listen(Key.J, ButtonState.Down, Liikuta, "Red wizard liikkuu vasemmalle", pelaaja3, -nopeus);
250        Keyboard.Listen(Key.L, ButtonState.Down, Liikuta, "Red wizard liikkuu oikealle", pelaaja3, nopeus);
251        Keyboard.Listen(Key.I, ButtonState.Pressed, Hyppaa, "Red wizard hyppää", pelaaja3, hyppyNopeus);
252        Keyboard.Listen(Key.O, ButtonState.Down, AmmuAseella, "Red wizard ampuu", pelaaja3);
253
254        ControllerThree.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Red wizard liikkuu vasemmalle", pelaaja3, -nopeus);
255        ControllerThree.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Red wizard liikkuu oikealle", pelaaja3, nopeus);
256        ControllerThree.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Red wizard hyppää", pelaaja3, hyppyNopeus);
257        ControllerThree.Listen(Button.Y, ButtonState.Pressed, AmmuAseella, "Red wizard ampuu", pelaaja3);
258
259
260    }
261
262    void LisaaNappaimet4()
263    {
264        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Earth wizard liikkuu vasemmalle", pelaaja4, -nopeus);
265        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Earth wizard liikkuu oikealle", pelaaja4, nopeus);
266        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Earth wizard hyppää", pelaaja4, hyppyNopeus);
267        Keyboard.Listen(Key.Enter, ButtonState.Down, TeeSeinä, "Earth wizard suojaa", pelaaja4);
268        Keyboard.Listen(Key.RightShift, ButtonState.Down, Piikit, "Earth wizard hyökkää", pelaaja4);
269
270        ControllerFour.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Earth wizard liikkuu vasemmalle", pelaaja4, -nopeus);
271        ControllerFour.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Earth wizard liikkuu oikealle", pelaaja4, nopeus);
272        ControllerFour.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Earth wizard hyppää", pelaaja4, hyppyNopeus);
273        ControllerFour.Listen(Button.Y, ButtonState.Pressed, TeeSeinä, "Earth wizard suojaa", pelaaja4);
274        ControllerFour.Listen(Button.B, ButtonState.Pressed, Piikit, "Earth wizard hyökkää", pelaaja4);
275
276    }
277
278    void Piikit(PlatformCharacter pelaaja)
279    {
280        if (saakoHyokata == true)
281        {
282            LuoPiikki(pelaaja4.X + 100, pelaaja4.Y);
283            LuoPiikki(pelaaja4.X + 200, pelaaja4.Y);
284            LuoPiikki(pelaaja4.X + 300, pelaaja4.Y);
285            LuoPiikki(pelaaja4.X + 400, pelaaja4.Y);
286            LuoPiikki(pelaaja4.X - 100, pelaaja4.Y);
287            LuoPiikki(pelaaja4.X - 200, pelaaja4.Y);
288            LuoPiikki(pelaaja4.X - 300, pelaaja4.Y);
289            LuoPiikki(pelaaja4.X - 400, pelaaja4.Y);
290            saakoHyokata = false;
291            Timer.SingleShot(7, saaHyokata);
292        }
293    }
294
295    void saaHyokata()
296    {
297        saakoHyokata = true;
298    }
299
300    void LuoPiikki(double x, double y)
301    {
302            PhysicsObject piikki = PhysicsObject.CreateStaticObject(40.0, 100.0);
303            piikki.X = x;
304            piikki.Y = y;
305            piikki.Image = Piikki;
306            piikki.MaximumLifetime = TimeSpan.FromSeconds(2);
307            Add(piikki);
308            piikki.IgnoresCollisionResponse = true;
309            AddCollisionHandler(piikki, piikkiOsui);
310    }
311
312    void piikkiOsui(PhysicsObject tormaaja, PhysicsObject kohde)
313    {
314        if (kohde == pelaaja1)
315        {
316            elamaLaskuri.Value -= 10;
317        }
318        if (kohde == pelaaja2)
319        {
320            elamaLaskuri2.Value -= 10;
321        }
322        if (kohde == pelaaja3)
323        {
324            elamaLaskuri3.Value -= 10;
325        }
326    }
327
328    void TeeSeinä(PlatformCharacter pelaaja)
329    {
330        if (saakoLuoda == true)
331        {
332            PhysicsObject suoja = PhysicsObject.CreateStaticObject(20.0, 100.0);
333            suoja.Y = pelaaja4.Y;
334            suoja.X = pelaaja4.X + 70;
335            suoja.Image = Seinä;
336            suoja.MaximumLifetime = TimeSpan.FromSeconds(2);
337            Add(suoja);
338            PhysicsObject suoja2 = PhysicsObject.CreateStaticObject(20.0, 100.0);
339            suoja2.Y = pelaaja4.Y;
340            suoja2.X = pelaaja4.X - 70;
341            suoja2.Image = Seinä;
342            suoja2.MaximumLifetime = TimeSpan.FromSeconds(2);
343            Add(suoja2);
344            saakoLuoda = false;
345            Timer.SingleShot(7, Luonti);
346        }
347
348    }
349
350    void Luonti()
351    {
352        saakoLuoda = true;
353    }
354
355    void AmmuAseella(PlatformCharacter pelaaja)
356    {
357        PhysicsObject ammus = pelaaja.Weapon.Shoot();
358
359        if (ammus != null)
360        {
361            ammus.Width = 100;
362            ammus.Height = 50;
363            ammus.Image = Tulipallo;
364            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
365        }
366    }
367
368    void AmmuAseella2(PlatformCharacter pelaaja)
369    {
370        PhysicsObject ammus = pelaaja.Weapon.Shoot();
371
372        if (ammus != null)
373        {
374            ammus.Size *= 3;
375            ammus.Image = tahtiKuva;
376            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
377        }
378    }
379
380    void Teleport(PlatformCharacter pelaaja)
381    {
382        if (saakoTeleportata == true)
383        {
384            PhysicsObject pimeys = PhysicsObject.CreateStaticObject(90.0, 100.0);
385            pimeys.Position = pelaaja2.Position;
386            pimeys.IgnoresCollisionResponse = true;
387            pimeys.Image = Vortex;
388            pimeys.MaximumLifetime = TimeSpan.FromSeconds(0.3);
389            Add(pimeys, -2);
390            maaliAani.Play();
391            pelaaja2.Position = Level.GetRandomPosition();
392            PhysicsObject pimeys2 = PhysicsObject.CreateStaticObject(90.0, 100.0);
393            pimeys2.Position = pelaaja2.Position;
394            pimeys2.IgnoresCollisionResponse = true;
395            pimeys2.Image = Vortex;
396            pimeys2.MaximumLifetime = TimeSpan.FromSeconds(0.3);
397            Add(pimeys2, -2);
398            saakoTeleportata = false;
399            Timer.SingleShot(7, Joku);
400
401             }
402    }
403
404    void Joku()
405    {
406        saakoTeleportata = true;
407    }
408
409
410    void Liikuta(PlatformCharacter hahmo, double nopeus)
411    {
412        hahmo.Walk(nopeus);
413    }
414
415    void Hyppaa(PlatformCharacter hahmo, double nopeus)
416    {
417        hahmo.Jump(nopeus);
418    }
419
420    void LuoElamaLaskuri()
421    {
422        Label Elamat = new Label("Water wizard");
423        Elamat.X = Screen.Left + 150;
424        Elamat.Y = Screen.Top - 30;
425        Add(Elamat);
426
427        elamaLaskuri = new DoubleMeter(100);
428        elamaLaskuri.MaxValue = 100;
429        elamaLaskuri.LowerLimit += ElamaLoppui;
430
431        ProgressBar elamaPalkki = new ProgressBar(150, 20);
432        elamaPalkki.X = Screen.Left + 150;
433        elamaPalkki.Y = Screen.Top - 50;
434        elamaPalkki.BarColor = Color.Red;
435        elamaPalkki.BorderColor = Color.Black;
436        elamaPalkki.BindTo(elamaLaskuri);
437        Add(elamaPalkki);
438    }
439
440    void ElamaLoppui()
441    {
442        pelaaja1.Destroy();
443        Lopunlaskuri.Value += 1;
444    }
445
446    void LuoElamaLaskuri2()
447    {
448        Label Elamat2 = new Label("Dark wizard");
449        Elamat2.X = Screen.Right - 150;
450        Elamat2.Y = Screen.Top - 30;
451        Add(Elamat2);
452
453        elamaLaskuri2 = new DoubleMeter(100);
454        elamaLaskuri2.MaxValue = 100;
455        elamaLaskuri2.LowerLimit += ElamaLoppui2;
456
457        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
458        elamaPalkki2.X = Screen.Right - 150;
459        elamaPalkki2.Y = Screen.Top - 50;
460        elamaPalkki2.BarColor = Color.Red;
461        elamaPalkki2.BorderColor = Color.Black;
462        elamaPalkki2.BindTo(elamaLaskuri2);
463        Add(elamaPalkki2);
464    }
465
466    void ElamaLoppui2()
467    {
468        pelaaja2.Destroy();
469        Lopunlaskuri.Value += 1;
470    }
471
472    void LuoElamaLaskuri3()
473    {
474        Label Elamat3 = new Label("Fire wizard");
475        Elamat3.X = Screen.Left + 150;
476        Elamat3.Y = Screen.Bottom + 50;
477        Add(Elamat3);
478
479        elamaLaskuri3 = new DoubleMeter(100);
480        elamaLaskuri3.MaxValue = 100;
481        elamaLaskuri3.LowerLimit += ElamaLoppui3;
482
483        ProgressBar elamaPalkki3 = new ProgressBar(150, 20);
484        elamaPalkki3.X = Screen.Left + 150;
485        elamaPalkki3.Y = Screen.Bottom + 30;
486        elamaPalkki3.BarColor = Color.Red;
487        elamaPalkki3.BorderColor = Color.Black;
488        elamaPalkki3.BindTo(elamaLaskuri3);
489        Add(elamaPalkki3);
490    }
491
492    void ElamaLoppui3()
493    {
494        pelaaja3.Destroy();
495        Lopunlaskuri.Value += 1;
496    }
497
498    void LuoElamaLaskuri4()
499    {
500        Label Elamat4 = new Label("Earth wizard");
501        Elamat4.X = Screen.Right - 150;
502        Elamat4.Y = Screen.Bottom + 50;
503        Add(Elamat4);
504
505        elamaLaskuri4 = new DoubleMeter(100);
506        elamaLaskuri4.MaxValue = 100;
507        elamaLaskuri4.LowerLimit += ElamaLoppui4;
508
509        ProgressBar elamaPalkki4 = new ProgressBar(150, 20);
510        elamaPalkki4.X = Screen.Right - 150;
511        elamaPalkki4.Y = Screen.Bottom + 30;
512        elamaPalkki4.BarColor = Color.Red;
513        elamaPalkki4.BorderColor = Color.Black;
514        elamaPalkki4.BindTo(elamaLaskuri4);
515        Add(elamaPalkki4);
516    }
517
518    void ElamaLoppui4()
519    {
520        pelaaja4.Destroy();
521        Lopunlaskuri.Value += 1;
522    }
523
524    void Loppui()
525    {
526        Lopunlaskuri = new IntMeter(0);
527        Lopunlaskuri.MaxValue = 3;
528        Lopunlaskuri.UpperLimit += Voitto;
529    }
530
531    void Voitto()
532    {
533        ClearControls();
534        Label tekstikentta = new Label("In the end only the strongest is left standing, as the others meet the cold void of oblivion");
535        Add(tekstikentta);
536        Timer.SingleShot(10, Valikko);
537    }
538
539}
Note: See TracBrowser for help on using the repository browser.