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

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