source: 2015/27/JimiS/tasohyppely/hyppely/hyppely/hyppely/hyppely.cs @ 6779

Revision 6779, 14.0 KB checked in by jivesuor, 6 years ago (diff)

Ammukset eivät tuhoa kolikoita tai palikoita. XBOX-ohjaimen värinää vähennetty.
Ammuksille lisätty näyttö.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10
11//TODO Lisää/muokkaa äänet
12
13public class hyppely : PhysicsGame
14{
15    const double nopeus = 200;
16    const double hyppyNopeus = 1000;
17    const int RUUDUN_KOKO = 40;
18
19    int pMaxMaara = 200;
20
21    PhysicsObject alaReuna;
22    PhysicsObject vasenReuna;
23    PhysicsObject oikeaReuna;
24    //  PhysicsObject ylaReuna;
25
26    PhysicsObject kolikko;
27
28    EasyHighScore toplista = new EasyHighScore();
29
30
31    PlatformCharacter pelaaja1;
32
33    Image pelaajanKuva = LoadImage("player");
34    Image tahtiKuva = LoadImage("tahti");
35    Image vihukuva = LoadImage("vihu");
36    Image Kolikko = LoadImage("kolikko");
37    Image MaaPalikka = LoadImage("maapalikka");
38    Image pahiskuva = LoadImage("putoamatonvihu");
39    Image tasokuva = LoadImage("tasokuva");
40    Image PaaVihu = LoadImage("Päävihollinen");
41    Image rajahdyskuva = LoadImage("rajahdys");
42    Image abcd = LoadImage("ammukset");
43    Image punainen = LoadImage("punainentaso");
44    Image elama = LoadImage("elama");
45
46
47    SoundEffect osuma = LoadSoundEffect("osuma");
48    SoundEffect tausta = LoadSoundEffect("pelimusiikkibyJimi");
49    SoundEffect hyppy = LoadSoundEffect("hyppyaani");
50
51    IntMeter pelaajan1Elamat;
52    IntMeter pelaajan1Tahdet;
53
54    Vector pelaajanaloituspaikka;
55
56
57    SoundEffect maaliAani = LoadSoundEffect("maali");
58
59    public override void Begin()
60    {
61        aloitusValikko();
62
63
64
65    }
66
67    void aloitusValikko()
68    {
69        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
70            "Aloita peli", "Parhaat pisteet", "Lopeta");
71        Add(alkuValikko);
72        alkuValikko.AddItemHandler(0, PeliAlkaa);
73        alkuValikko.AddItemHandler(1, toplista.Show);
74        toplista.HighScoreWindow.Closed += toplistapois;
75        alkuValikko.AddItemHandler(2, Exit);
76        alkuValikko.DefaultCancel = 3;
77        alkuValikko.Color = Color.Green;
78    }
79
80    public void toplistapois(Window Sender)
81    {
82        AloitaAlusta();
83    }
84
85    void PeliAlkaa()
86    {
87        Gravity = new Vector(0, -1000);
88
89        LuoKentta();
90        LisaaNappaimet();
91
92        AddCollisionHandler(pelaaja1, alaReuna, KasittelePelaajanPutoaminen);
93
94        IsFullScreen = false;
95
96        Camera.Follow(pelaaja1);
97        Camera.ZoomFactor = 1.0;
98        Camera.StayInLevel = true;
99    }
100
101    void LuoKentta()
102    {
103        TileMap kentta = TileMap.FromLevelAsset("kentta1");
104        kentta.SetTileMethod('#', LisaaTaso);
105        kentta.SetTileMethod('*', LisaaKolikko);
106        kentta.SetTileMethod('N', LisaaPelaaja);
107        kentta.SetTileMethod('A', LisaaPalikka);
108        kentta.SetTileMethod('V', LisaaVihu);
109        kentta.SetTileMethod('M', LisaaMaa);
110        kentta.SetTileMethod('P', LisaaPahis);
111        kentta.SetTileMethod('B', LisaaPaaVihu);
112        kentta.SetTileMethod('O', LisaaAmmo);
113        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
114
115
116        alaReuna = Level.CreateBottomBorder();
117        alaReuna.Restitution = 1.0;
118        alaReuna.IsVisible = false;
119
120        vasenReuna = Level.CreateLeftBorder();
121        vasenReuna.Restitution = 1.0;
122        alaReuna.IsVisible = false;
123
124        oikeaReuna = Level.CreateRightBorder();
125        oikeaReuna.Restitution = 1.0;
126        oikeaReuna.IsVisible = false;
127
128       
129
130        //ylaReuna = Level.CreateTopBorder();
131        //ylaReuna.Restitution = 1.0;
132        //ylaReuna.IsVisible = false;
133
134
135        //MediaPlayer.Play("pelimusiikkibyJimi");
136        //MediaPlayer.IsRepeating = true;
137
138        //for (int i = 0; i < 100; i++)
139        //{
140        //    tausta.Play();
141        //}
142
143        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
144    }
145
146    void LisaaPaaVihu(Vector paikka, double leveys, double korkeus)
147    {
148        PlatformCharacter paavihu = new PlatformCharacter(leveys, korkeus);
149        paavihu.Position = paikka;
150        paavihu.Tag = "pahis";
151        paavihu.Image = PaaVihu;
152        Add(paavihu);
153        paavihu.CollisionIgnoreGroup = 3;
154
155        PlatformWandererBrain paavihuaivot = new PlatformWandererBrain();
156        paavihuaivot.Speed = 400;
157        paavihuaivot.TriesToJump = false;
158        paavihuaivot.JumpSpeed = 1000;
159
160        paavihu.Brain = paavihuaivot;
161    }
162
163    void LisaaPahis(Vector paikka, double leveys, double korkeus)
164    {
165        PlatformCharacter pahis = new PlatformCharacter(leveys, korkeus);
166        pahis.Position = paikka;
167        pahis.Tag = "pahis";
168        pahis.Image = pahiskuva;
169        Add(pahis);
170        pahis.CollisionIgnoreGroup = 3;
171
172        PlatformWandererBrain pahisaivot = new PlatformWandererBrain();
173        pahisaivot.Speed = 40;
174        pahisaivot.FallsOffPlatforms = false;
175
176        pahis.Brain = pahisaivot;
177    }
178
179    void LisaaVihu(Vector paikka, double leveys, double korkeus)
180    {
181        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
182        vihu.Position = paikka;
183        vihu.Color = Color.Black;
184        vihu.Tag = "pahis";
185        vihu.Image = vihukuva;
186        Add(vihu);
187        vihu.CollisionIgnoreGroup = 3;
188
189        PlatformWandererBrain tasoaivot = new PlatformWandererBrain();
190        tasoaivot.Speed = 100;
191        tasoaivot.FallsOffPlatforms = true;
192        tasoaivot.JumpSpeed = 400;
193        tasoaivot.TriesToJump = true;
194
195        vihu.Brain = tasoaivot;
196
197    }
198
199    void LisaaMaa(Vector paikka, double leveys, double korkeus)
200    {
201        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
202        maa.Position = paikka;
203        maa.Image = MaaPalikka;
204        Add(maa);
205        maa.CollisionIgnoreGroup = 2;
206    }
207
208    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
209    {
210        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
211        palikka.Position = paikka;
212        palikka.Image = punainen;
213        Add(palikka);
214        palikka.CollisionIgnoreGroup = 2;
215    }
216
217    void LisaaTaso(Vector paikka, double leveys, double korkeus)
218    {
219        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
220        taso.Position = paikka;
221        taso.Color = Color.Blue;
222        taso.Image = tasokuva;
223        Add(taso);
224        taso.CollisionIgnoreGroup = 2;
225    }
226
227    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
228    {
229        kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
230        kolikko.IgnoresCollisionResponse = true;
231        kolikko.Position = paikka;
232        kolikko.Image = Kolikko;
233        kolikko.Tag = "tahti";
234        Add(kolikko);
235        kolikko.CollisionIgnoreGroup = 2;
236    }
237
238    void LisaaAmmo(Vector paikka, double leveys, double korkeus)
239    {
240        PhysicsObject ammo = PhysicsObject.CreateStaticObject(leveys, korkeus);
241        ammo.Position = paikka;
242        ammo.Image = abcd;
243        ammo.Tag = "ammo";
244        Add(ammo);
245    }
246
247    //void LisaaRajahdys()
248    //{
249
250    //}
251
252    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
253    {
254        pelaaja1 = new PlatformCharacter(leveys, korkeus);
255        pelaaja1.Position = paikka;
256        pelaajanaloituspaikka = paikka;
257        pelaaja1.Mass = 4.0;
258        pelaaja1.Image = pelaajanKuva;
259        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
260        AddCollisionHandler(pelaaja1, "pahis", TormaaVihuun);
261        AddCollisionHandler(pelaaja1, "ammo", TormaaAmmoon);
262        Add(pelaaja1);
263
264        pelaaja1.Weapon = new AssaultRifle(30, 10);
265
266        pelaaja1.Weapon.Ammo.Value = 10;
267
268        pelaaja1.Weapon.FireRate = 0.5;
269
270        pelaaja1.Weapon.IsVisible = false;
271
272        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
273       
274
275
276
277        pelaajan1Tahdet = new IntMeter(0);
278        pelaajan1Tahdet.MaxValue = 100;
279        Label tahdet = new Label();
280        tahdet.BindTo(pelaajan1Tahdet);
281
282        tahdet.X = -700;
283        tahdet.Y = 500;
284        tahdet.TextColor = Color.Black;
285        tahdet.BorderColor = Color.Black;
286        tahdet.Color = Color.White;
287        tahdet.Image = Kolikko;
288        tahdet.Height = korkeus;
289        tahdet.Width = leveys;
290        tahdet.TextScale *= 2;
291        Add(tahdet);
292
293
294        Label ammukset = new Label();
295        ammukset.BindTo(pelaaja1.Weapon.Ammo);
296        ammukset.Y += pelaaja1.Height;
297        ammukset.X += 20;
298        ammukset.TextColor = Color.Black;
299        ammukset.BorderColor = Color.Black;
300        ammukset.Color = Color.White;
301        ammukset.Image = abcd;
302        ammukset.Width *= 1.5;
303        pelaaja1.Add(ammukset);
304
305
306        pelaajan1Elamat = new IntMeter(5);
307        pelaajan1Elamat.MaxValue = 20;
308        Label naytto = new Label();
309        naytto.BindTo(pelaajan1Elamat);
310
311        naytto.Y += pelaaja1.Height;
312        naytto.X -= 20;
313        naytto.TextColor = Color.Black;
314        naytto.BorderColor = Color.Black;
315        naytto.Color = Color.White;
316        naytto.Image = elama;
317        naytto.Width *= 2;
318        //naytto.Size *= 1;
319        //naytto.TextScale = new Vector(0.5, 0.5);
320        pelaaja1.Add(naytto);
321    }
322
323    void AmmuAseella(PlatformCharacter pelaaja)
324    {
325        PhysicsObject ammus = pelaaja.Weapon.Shoot();
326        ControllerOne.Vibrate(1.0, 1.0, 5.0, 5.0, 0.5);
327
328        if (ammus != null)
329        {
330            ammus.CollisionIgnoreGroup = 2;
331        }
332    }
333
334    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
335    {
336        ammus.Destroy();
337        kohde.Destroy();
338    }
339
340    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
341    {
342        MessageDisplay.Add("Auts! Törmäsit Vihuun!");
343
344        ControllerOne.Vibrate(1.0, 1.0, 0.0, 0.0, 0.5);
345
346        PlaySound("osuma");
347
348        pelaajan1Elamat.Value -= 1;
349
350        pelaaja1.Position = pelaajanaloituspaikka;
351
352        if (pelaajan1Elamat == 0)
353        {
354            pelaaja1.Destroy();
355            ControllerOne.Vibrate(1.0, 1.0, 0.0, 0.0, 2.0);
356            MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
357            toplista.EnterAndShow(pelaajan1Tahdet.Value);
358            toplista.HighScoreWindow.Closed += toplistapois;
359
360        }
361    }
362
363
364    void KasittelePelaajanPutoaminen(PhysicsObject pelaaja1, PhysicsObject kohde)
365    {
366
367        pelaajan1Elamat.Value -= 1;
368
369        PlaySound("osuma");
370
371        MessageDisplay.Add("Putosit!");
372
373        pelaaja1.Position = pelaajanaloituspaikka;
374
375        if (pelaajan1Elamat == 0)
376        {
377            pelaaja1.Destroy();
378            MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
379            ControllerOne.Vibrate(1.0, 1.0, 0.0, 0.0, 2.0);
380            toplista.EnterAndShow(pelaajan1Tahdet.Value);
381            toplista.HighScoreWindow.Closed += toplistapois;
382        }
383
384    }
385
386
387
388    void LisaaNappaimet()
389    {
390        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
391        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
392        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Aloittaa pelin alusta.");
393
394        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
395        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
396        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
397        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
398
399        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
400        ControllerOne.Listen(Button.Start, ButtonState.Pressed, AloitaAlusta, "Aloittaa pelin alusta.");
401
402        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
403        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
404        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
405        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
406        ControllerOne.Listen(Button.RightShoulder, ButtonState.Down, Juokse, "pelaaja juoksee oikealle", pelaaja1);
407        ControllerOne.Listen(Button.LeftShoulder, ButtonState.Down, JuokseVasen, "Pelaaja juoksee vasemmalle", pelaaja1);
408
409        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
410    }
411
412
413    void AloitaAlusta()
414    {
415        ClearAll();
416        Begin();
417    }
418
419    void Liikuta(PlatformCharacter hahmo, double nopeus)
420    {
421        hahmo.Walk(nopeus);
422    }
423
424    void Juokse(PlatformCharacter hahmo)
425    {
426        hahmo.Walk(400);
427    }
428
429    void JuokseVasen(PlatformCharacter hahmo)
430    {
431        hahmo.Walk(-400);
432    }
433
434    void Hyppaa(PlatformCharacter hahmo, double nopeus)
435    {
436        hahmo.Jump(nopeus);
437        hyppy.Play();
438    }
439
440    void TormaaAmmoon(PhysicsObject hahmo, PhysicsObject ammo)
441    {
442        pelaaja1.Weapon.Ammo.Value += 5;
443        maaliAani.Play();
444        MessageDisplay.Add("Keräsit 5 ammusta!");
445
446        ExplosionSystem rajahdys = new ExplosionSystem(abcd, pMaxMaara);
447
448        double x = ammo.X;
449        double y = ammo.Y;
450        int pMaara = 10;
451
452        rajahdys.AddEffect(x, y, pMaara);
453
454        Add(rajahdys, 1);
455
456        ammo.Destroy();
457    }
458
459    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
460    {
461        pelaajan1Tahdet.Value += 1;
462        maaliAani.Play();
463        MessageDisplay.Add("Keräsit kolikon!");
464
465
466
467        ExplosionSystem rajahdys = new ExplosionSystem(Kolikko, pMaxMaara);
468
469        double x = tahti.X;
470        double y = tahti.Y;
471        int pMaara = 10;
472
473        rajahdys.AddEffect(x, y, pMaara);
474
475        Add(rajahdys, 1);
476
477        tahti.Destroy();
478
479
480        if (pelaajan1Tahdet == 50)
481        {
482            MessageDisplay.Add("Voitit pelin!");
483            toplista.EnterAndShow(pelaajan1Tahdet.Value);
484            toplista.HighScoreWindow.Closed += toplistapois;
485        }
486    }
487}
Note: See TracBrowser for help on using the repository browser.