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

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