source: 2015/30/ArttuH/TasoHyppely/TasoHyppely/TasoHyppely/TasoHyppely.cs @ 6981

Revision 6981, 16.0 KB checked in by arjuhoyl, 4 years ago (diff)

päivä 4 päätös

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class TasoHyppely : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    double ammusnopeus2 = 3000;
15    double pahisNopeus = 100;
16    double Painovoima = -1000;
17    double pelaajaMassa = 4.0;
18    double pelaajan1_ase_nopeus = 15;
19    double ase_X = 20.0;
20    double ase_Y = -10.0;
21    double pelaajan_nopeus = 300.0;
22    double pistelaskurin_X = 100;
23    double pistelaskurin_Y = 100;
24    double pelaajan1_Luoti_laskuri_X = 190;
25    double pelaajan1_Luoti_laskuri_Y = 100;
26    double pelaajan2_Luoti_laskuri_X = 190;
27    double pelaajan2_Luoti_laskuri_Y = 180;
28    double pelaajan1_luodin_massa = 150;
29    double pelaajan2_luodin_massa = 15;
30
31    bool pelaaja1ampuu = false;
32    bool pelaaja2ampuu = false;
33
34    PlatformCharacter pelaaja1;
35    PlatformCharacter pelaaja2;
36    IntMeter pisteLaskuri;
37    IntMeter luotilaskuri;
38    IntMeter luotilaskuri2;
39    IntMeter elamalaskuri;
40    IntMeter elamalaskuri2;
41    int pelaajienMaara;
42    int kenttaNro = 1;
43    int kenttaMaara = 6;
44
45    Image asekuva = LoadImage("asekuva");
46    Image asekuva2 = LoadImage("asekuva_2");
47    Image pelaajanKuva1 = LoadImage("ukko");
48    Image pelaajanKuva2 = LoadImage("toinenukko");
49    Image tahtiKuva = LoadImage("suklaa");
50    Image luoti = LoadImage("luoti");
51    Image piikkikuva = LoadImage("piikki");
52    Image orkki = LoadImage("orkki");
53    Image orkki2 = LoadImage("pahis2");
54    Image ammuspakettiKuva = LoadImage("ammobox");
55    private Animation pelihahmo1;
56    private Animation pelihahmo2;
57    SoundEffect maaliAani = LoadSoundEffect("Pickup_Coin21");
58
59    public override void Begin()
60    {
61        Paavalikko();
62    }
63
64    void LuoKentta(int pelaajienMaara)
65    {
66        ClearAll();
67        MediaPlayer.Play("LevelUp");
68        Gravity = new Vector(0, Painovoima);
69        TileMap kentta = TileMap.FromLevelAsset("Kentta"+ kenttaNro);
70        kentta.SetTileMethod('#', LisaaTaso);
71        kentta.SetTileMethod('*', LisaaTahti);
72        kentta.SetTileMethod('1', LisaaPelaaja);
73        kentta.SetTileMethod('X', Piikki);
74        kentta.SetTileMethod('A', Ammuspaketti);
75        kentta.SetTileMethod('P', LisaaPahis);
76        kentta.SetTileMethod('B', LisaaPahis2);
77        kentta.SetTileMethod('M', LuoMaali);
78        if (pelaajienMaara == 2)
79        {
80            kentta.SetTileMethod('2', LisaaPelaaja2);
81        }
82        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
83        Level.CreateBorders();
84        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
85
86        //Camera.StayInLevel = true;
87
88        LisaaOhjaimet();
89        Camera.Follow(pelaaja1);
90        if (pelaajienMaara == 2)
91        {
92            Camera.Follow(pelaaja1, pelaaja2);
93            Luotilaskuri2(); 
94           
95        }
96        LuoPistelaskuri();
97        Luotilaskuri();
98    }
99
100    void LisaaTaso(Vector paikka, double leveys, double korkeus)
101    {
102        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
103        taso.Position = paikka;
104        taso.Color = Color.Green;
105        Add(taso);
106    }
107
108    void LisaaTahti(Vector paikka, double leveys, double korkeus)
109    {
110        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
111        tahti.IgnoresCollisionResponse = true;
112        tahti.Position = paikka;
113        tahti.Image = tahtiKuva;
114        tahti.Tag = "tahti";
115        Add(tahti);
116    }
117
118    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
119    {
120        pelihahmo1 = LoadAnimation("ukkoanimaatio");
121        pelaaja1 = new PlatformCharacter(leveys, korkeus);
122        pelaaja1.Position = paikka;
123        pelaaja1.Mass = pelaajaMassa;
124        pelaaja1.Image = pelaajanKuva1;
125        pelaaja1.AnimWalk = pelihahmo1;
126        pelaaja1.Weapon = new AssaultRifle(50, 10);
127        pelaaja1.Weapon.Image = asekuva;
128        pelaaja1.Weapon.FireRate = pelaajan1_ase_nopeus;
129        pelaaja1.Weapon.X = ase_X;
130        pelaaja1.Weapon.Y = ase_Y;
131        pelaaja1.Weapon.Ammo.Value = 100;
132        pelaaja1.Weapon.AmmoIgnoresGravity = false;
133        elamalaskuri = new IntMeter(20, 0, 20);
134        elamalaskuri.LowerLimit += delegate {PiikkiTormaa(pelaaja1, new PhysicsObject(1,1));};
135        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
136        AddCollisionHandler(pelaaja1,"piikki", PiikkiTormaa);
137        AddCollisionHandler(pelaaja1, "paketti1", Ammusotettu);
138        AddCollisionHandler(pelaaja1, "maali", maali);
139        AddCollisionHandler(pelaaja1, "PahisLuoti", pelaajaanOsuuLuoti);
140        ControllerOne.Listen(Button.A, ButtonState.Down, Hyppaa, "pelaaja hypää", pelaaja1, 300.0);
141        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle/oikealle", pelaaja1);
142        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtaa, "tähtää aseella");
143        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "ampuu", pelaaja1);
144        ControllerOne.Listen(Button.RightTrigger, ButtonState.Pressed, delegate { pelaaja1ampuu = true; }, null);
145        ControllerOne.Listen(Button.RightTrigger, ButtonState.Released, delegate {pelaaja1ampuu = false;} , null);
146        ControllerOne.Listen(Button.DPadLeft, ButtonState.Pressed, Cheathauska, "");
147        Add(pelaaja1);
148    }
149    void Liikuta(PlatformCharacter hahmo, double nopeus)
150    {
151        hahmo.Walk(nopeus);
152    }
153
154    void Hyppaa(PlatformCharacter hahmo, double nopeus)
155    {
156        hahmo.Jump(nopeus);
157    }
158
159    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
160    {
161        pisteLaskuri.Value += 1;
162        maaliAani.Play();
163        MessageDisplay.Add("Sait Suklaata!");
164        tahti.Destroy();
165    }
166    void LisaaOhjaimet()
167    {
168
169        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
170        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
171        ControllerTwo.Listen(Button.Start, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
172        Keyboard.Listen(Key.F1, ButtonState.Pressed, Cheat, "");
173        Keyboard.Listen(Key.F2, ButtonState.Down, LuotiCheat, "");
174        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LuotiCheat, "");
175        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, LuotiCheat, "");
176    }
177
178    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
179    {
180        pelihahmo2 = LoadAnimation("toinenukkoanimaatio");
181        pelaaja2 = new PlatformCharacter(leveys, korkeus);
182        pelaaja2.Position = paikka;
183        pelaaja2.Mass = 4.0;
184        pelaaja2.Image = pelaajanKuva2;
185        pelaaja2.AnimWalk = pelihahmo2;
186        pelaaja2.Weapon = new AssaultRifle(50, 10);
187        pelaaja2.Weapon.FireRate = 1;
188        pelaaja2.Weapon.AmmoIgnoresGravity = false;
189        pelaaja2.Weapon.Image = null;
190        pelaaja2.Weapon.Image = asekuva2;
191        pelaaja2.Weapon.X = ase_X;
192        pelaaja2.Weapon.Y = -10.0;
193        pelaaja2.Weapon.Ammo.Value = 100;
194        elamalaskuri2 = new IntMeter(20, 0, 20);
195        elamalaskuri2.LowerLimit += delegate { PiikkiTormaa(pelaaja2, new PhysicsObject(1, 1)); };
196        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
197        AddCollisionHandler(pelaaja2, "piikki", PiikkiTormaa);
198        AddCollisionHandler(pelaaja2, "paketti1", Ammusotettu2);
199        AddCollisionHandler(pelaaja2, "maali", maali);
200        AddCollisionHandler(pelaaja2, "PahisLuoti",pelaajaanOsuuLuoti);
201        ControllerTwo.Listen(Button.A, ButtonState.Down, Hyppaa, "pelaaja hypää", pelaaja2, 300.0);
202        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle/oikealle", pelaaja2);
203        ControllerTwo.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtaa2, "tähtää aseella");
204        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella2, "ampuu", pelaaja2);
205        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Pressed, delegate { pelaaja2ampuu = true; }, null);
206        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Released, delegate { pelaaja2ampuu = false; }, null);
207        Add(pelaaja2);
208       
209    }
210    void Liikuta(AnalogState tatinTila, PlatformCharacter hahmo)
211    {
212        Vector tatinAsento = tatinTila.StateVector;
213        if (tatinAsento.X == 0.0)
214        {
215            return;
216        }
217        hahmo.Walk(pelaajan_nopeus * tatinAsento.X);
218
219    }
220    void Paavalikko()
221    {
222        MultiSelectWindow alkuvalikko = new MultiSelectWindow("pelin valikko", "aloita peli", "lopeta");
223        alkuvalikko.AddItemHandler(0, PelaajaValikko);
224        alkuvalikko.AddItemHandler(1, Exit);
225        Add(alkuvalikko);
226
227    }
228    void PelaajaValikko()
229    {
230        MultiSelectWindow alkuvalikko = new MultiSelectWindow("montako pelaajaa", "yksin", "kahdestaan");
231        alkuvalikko.AddItemHandler(0, delegate 
232        { 
233            LuoKentta(1);
234            pelaajienMaara = 1;
235        });
236        alkuvalikko.AddItemHandler(1, delegate
237        { 
238            LuoKentta(2);
239            pelaajienMaara = 2;
240        });
241        Add(alkuvalikko);
242    }
243    void Ammusosui(PhysicsObject ammus, PhysicsObject kohde)
244    {
245        ammus.Destroy();
246    }
247    void LuoPistelaskuri()
248    {
249         pisteLaskuri = new IntMeter(0);
250
251        Label pisteNaytto = new Label();
252        pisteNaytto.X = Screen.Left + pistelaskurin_X;
253        pisteNaytto.Y = Screen.Top - pistelaskurin_Y;
254        pisteNaytto.TextColor = Color.Brown;
255        pisteNaytto.Color = Color.Wheat;
256        pisteNaytto.Title = "Suklaa";
257
258        pisteNaytto.BindTo(pisteLaskuri);
259        Add(pisteNaytto);
260    }
261
262    void AmmuAseella(PlatformCharacter pelaaja1)
263    {
264        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
265
266        if (ammus != null)
267        {
268            pelaaja1.Weapon.Angle += Angle.FromDegrees(RandomGen.NextInt(-100, 10));
269            luotilaskuri.Value--;
270            ammus.Size *= 0.8;
271            ammus.Mass = pelaajan1_luodin_massa;
272            ammus.Image = luoti;
273            ControllerOne.Vibrate(0.16, 0.16, 0.16, 0.16, 0.1);
274            ammus.MaximumLifetime = TimeSpan.FromSeconds(0.6);
275           
276        }
277    }
278
279    void Tahtaa(AnalogState tatinTila)
280    {
281        if (pelaaja1ampuu)
282        {
283            pelaaja1.Weapon.Angle = tatinTila.StateVector.Angle + Angle.FromDegrees(RandomGen.NextInt(-10, 10)); 
284        }
285        else
286        {
287            pelaaja1.Weapon.Angle = tatinTila.StateVector.Angle;
288        }
289    }
290
291    void PiikkiTormaa(PhysicsObject tormaaja, PhysicsObject kohde)
292    {
293        ClearAll();
294        Paavalikko();
295    }
296    void Piikki(Vector paikka, double leveys, double korkeus)
297    {
298        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
299        piikki.Position = paikka;
300        piikki.Image = piikkikuva;
301        piikki.CollisionIgnoreGroup = 10;
302        piikki.Tag = "piikki";
303        Add(piikki);
304    }
305
306
307    void AmmuAseella2(PlatformCharacter pelaaja2)
308    {
309        PhysicsObject ammus = pelaaja2.Weapon.Shoot();
310
311        if (ammus != null)
312        {
313            pelaaja2.Weapon.Angle += Angle.FromDegrees(RandomGen.NextInt(-1, 1));
314            ammus.Size *= 0.8;
315            ammus.Mass = pelaajan2_luodin_massa;
316            ammus.Image = luoti;
317            luotilaskuri2.Value--;
318            ammus.Velocity = pelaaja2.Weapon.Angle.GetVector().Normalize() * ammusnopeus2;
319            ControllerTwo.Vibrate(100.16, 100.16, 0.16, 0.16, 0.1);
320            ammus.MaximumLifetime = TimeSpan.FromSeconds(1.3);
321        }
322    }
323    void Tahtaa2(AnalogState tatinTila)
324    {
325        if (pelaaja2ampuu)
326        {
327            pelaaja2.Weapon.Angle = tatinTila.StateVector.Angle + Angle.FromDegrees(RandomGen.NextInt(-10, 10));
328        }
329        else
330        {
331            pelaaja2.Weapon.Angle = tatinTila.StateVector.Angle;
332        }
333
334    }
335    void Luotilaskuri()
336    {
337        luotilaskuri = new IntMeter(100);
338
339        Label pisteNaytto = new Label();
340        pisteNaytto.X = Screen.Right - pelaajan1_Luoti_laskuri_X;
341        pisteNaytto.Y = Screen.Top - pelaajan1_Luoti_laskuri_Y;
342        pisteNaytto.TextColor = Color.Red;
343        pisteNaytto.Color = Color.Black;
344        pisteNaytto.Title = "Pelaajan 1 Panokset";
345
346        pisteNaytto.BindTo(luotilaskuri);
347        Add(pisteNaytto);
348    }
349
350    void Luotilaskuri2()
351    {
352        luotilaskuri2 = new IntMeter(100);
353
354        Label pisteNaytto = new Label();
355        pisteNaytto.X = Screen.Right - pelaajan2_Luoti_laskuri_X;
356        pisteNaytto.Y = Screen.Top - pelaajan2_Luoti_laskuri_Y;
357        pisteNaytto.TextColor = Color.Blue;
358        pisteNaytto.Color = Color.Black;
359        pisteNaytto.Title = "Pelaajan 2 Panokset";
360        pisteNaytto.BindTo(luotilaskuri2);
361        Add(pisteNaytto);
362    }
363    void Ammuspaketti(Vector paikka, double leveys, double korkeus)
364    {
365        PhysicsObject ammuspaketti = PhysicsObject.CreateStaticObject(leveys, korkeus);
366        ammuspaketti.Position = paikka;
367        ammuspaketti.CollisionIgnoreGroup = 10;
368        ammuspaketti.Image = ammuspakettiKuva;
369        ammuspaketti.Tag = "paketti1";
370        Add(ammuspaketti);
371
372    }
373    void Ammusotettu(PhysicsObject hahmo, PhysicsObject kohde)
374    {
375        kohde.Destroy();
376        PlatformCharacter pelaaja1 = hahmo as PlatformCharacter;
377        pelaaja1.Weapon.Ammo.Value = 100;
378        luotilaskuri.Value = 100;
379    }
380    void Ammusotettu2(PhysicsObject hahmo, PhysicsObject kohde)
381    {
382        kohde.Destroy();
383        PlatformCharacter pelaaja2 = hahmo as PlatformCharacter;
384        pelaaja2.Weapon.Ammo.Value = 100;
385        luotilaskuri2.Value = 100;
386    }
387
388    void LisaaPahis(Vector paikka, double leveys, double korkeus)
389       {
390        PlatformCharacter pahis = new PlatformCharacter(leveys, korkeus);
391        pahis.Image = orkki;
392        pahis.Position = paikka;
393        pahis.CollisionIgnoreGroup = 10;
394        Add(pahis);
395        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
396        tasoAivot.Speed = pahisNopeus;
397        tasoAivot.JumpSpeed = 500;
398        tasoAivot.TriesToJump = true;
399        pahis.Brain = tasoAivot;
400       }
401
402    void LisaaPahis2(Vector paikka, double leveys, double korkeus)
403    {
404        PlatformCharacter pahis2 = new PlatformCharacter(leveys, korkeus);
405        pahis2.Image = orkki2;
406        pahis2.Position = paikka;
407        pahis2.CollisionIgnoreGroup = 10;
408        Add(pahis2);
409        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
410        tasoAivot.Speed = pahisNopeus;
411        tasoAivot.JumpSpeed = 500;
412        tasoAivot.TriesToJump = true;
413        pahis2.Brain = tasoAivot;
414    }
415    void maali(PhysicsObject pelaaja, PhysicsObject maali)
416    {
417        if (kenttaNro < kenttaMaara)
418        {
419            kenttaNro++;
420            LuoKentta(pelaajienMaara);
421        }
422       
423    }
424
425    void LuoMaali(Vector paikka, double leveys, double korkeus)
426    {
427        PhysicsObject voittomaali =  PhysicsObject.CreateStaticObject(leveys, korkeus);
428        voittomaali.Position = paikka;
429        voittomaali.Tag = "maali";
430        Add(voittomaali);
431    }
432
433    void Cheat()
434    {
435        if (kenttaNro < kenttaMaara)
436        {
437           
438            kenttaNro++;
439            LuoKentta(pelaajienMaara);
440        }
441    }
442    void pelaajaanOsuuLuoti(PhysicsObject pelaaja, PhysicsObject kohde)
443    {
444        elamalaskuri.Value -= 1;
445        elamalaskuri2.Value -= 1;
446    }
447    void LuotiCheat()
448    {
449        pelaaja1.Weapon.Ammo.Value = 100;
450        luotilaskuri.Value = 100;
451
452        pelaaja2.Weapon.Ammo.Value = 100;
453        luotilaskuri2.Value = 100;
454    }
455    void Cheathauska()
456    {
457        ammusnopeus2 = 999999999999999;
458        pelaajan1_ase_nopeus = 999999999999999;
459        pelaaja1.Weapon.InfiniteAmmo = true;
460        pelaaja2.Weapon.InfiniteAmmo = true;
461    }
462}
Note: See TracBrowser for help on using the repository browser.