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

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