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

Revision 6792, 14.1 KB checked in by jivesuor, 6 years ago (diff)

Viimeinen lähetys versionhallintaan ennen esittelyä!

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        paavihu.CollisionIgnoreGroup = 4;
155
156        PlatformWandererBrain paavihuaivot = new PlatformWandererBrain();
157        paavihuaivot.Speed = 400;
158        paavihuaivot.TriesToJump = false;
159        paavihuaivot.JumpSpeed = 1000;
160
161        paavihu.Brain = paavihuaivot;
162    }
163
164    void LisaaPahis(Vector paikka, double leveys, double korkeus)
165    {
166        PlatformCharacter pahis = new PlatformCharacter(leveys, korkeus);
167        pahis.Position = paikka;
168        pahis.Tag = "pahis";
169        pahis.Image = pahiskuva;
170        Add(pahis);
171        pahis.CollisionIgnoreGroup = 3;
172
173        PlatformWandererBrain pahisaivot = new PlatformWandererBrain();
174        pahisaivot.Speed = 40;
175        pahisaivot.FallsOffPlatforms = false;
176
177        pahis.Brain = pahisaivot;
178    }
179
180    void LisaaVihu(Vector paikka, double leveys, double korkeus)
181    {
182        PlatformCharacter vihu = new PlatformCharacter(leveys, korkeus);
183        vihu.Position = paikka;
184        vihu.Color = Color.Black;
185        vihu.Tag = "pahis";
186        vihu.Image = vihukuva;
187        Add(vihu);
188        vihu.CollisionIgnoreGroup = 3;
189        vihu.CollisionIgnoreGroup = 4;
190
191        PlatformWandererBrain tasoaivot = new PlatformWandererBrain();
192        tasoaivot.Speed = 100;
193        tasoaivot.FallsOffPlatforms = true;
194        tasoaivot.JumpSpeed = 400;
195        tasoaivot.TriesToJump = true;
196
197        vihu.Brain = tasoaivot;
198
199    }
200
201    void LisaaMaa(Vector paikka, double leveys, double korkeus)
202    {
203        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
204        maa.Position = paikka;
205        maa.Image = MaaPalikka;
206        Add(maa);
207        maa.CollisionIgnoreGroup = 2;
208    }
209
210    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
211    {
212        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
213        palikka.Position = paikka;
214        palikka.Image = punainen;
215        Add(palikka);
216        palikka.CollisionIgnoreGroup = 2;
217    }
218
219    void LisaaTaso(Vector paikka, double leveys, double korkeus)
220    {
221        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
222        taso.Position = paikka;
223        taso.Color = Color.Blue;
224        taso.Image = tasokuva;
225        Add(taso);
226        taso.CollisionIgnoreGroup = 2;
227    }
228
229    void LisaaKolikko(Vector paikka, double leveys, double korkeus)
230    {
231        kolikko = PhysicsObject.CreateStaticObject(leveys, korkeus);
232        kolikko.IgnoresCollisionResponse = true;
233        kolikko.Position = paikka;
234        kolikko.Image = Kolikko;
235        kolikko.Tag = "tahti";
236        Add(kolikko);
237        kolikko.CollisionIgnoreGroup = 2;
238    }
239
240    void LisaaAmmo(Vector paikka, double leveys, double korkeus)
241    {
242        PhysicsObject ammo = PhysicsObject.CreateStaticObject(leveys, korkeus);
243        ammo.Position = paikka;
244        ammo.Image = abcd;
245        ammo.Tag = "ammo";
246        Add(ammo);
247    }
248
249    //void LisaaRajahdys()
250    //{
251
252    //}
253
254    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
255    {
256        pelaaja1 = new PlatformCharacter(leveys, korkeus);
257        pelaaja1.Position = paikka;
258        pelaajanaloituspaikka = paikka;
259        pelaaja1.Mass = 4.0;
260        pelaaja1.Image = pelaajanKuva;
261        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
262        AddCollisionHandler(pelaaja1, "pahis", TormaaVihuun);
263        AddCollisionHandler(pelaaja1, "ammo", TormaaAmmoon);
264        Add(pelaaja1);
265
266        pelaaja1.Weapon = new AssaultRifle(30, 10);
267
268        pelaaja1.Weapon.Ammo.Value = 10;
269
270        pelaaja1.Weapon.FireRate = 0.5;
271
272        pelaaja1.Weapon.IsVisible = false;
273
274        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
275       
276
277
278
279        pelaajan1Tahdet = new IntMeter(0);
280        pelaajan1Tahdet.MaxValue = 100;
281        Label tahdet = new Label();
282        tahdet.BindTo(pelaajan1Tahdet);
283
284        tahdet.X = -700;
285        tahdet.Y = 500;
286        tahdet.TextColor = Color.Black;
287        tahdet.BorderColor = Color.Black;
288        tahdet.Color = Color.White;
289        tahdet.Image = Kolikko;
290        tahdet.Height = korkeus;
291        tahdet.Width = leveys;
292        tahdet.TextScale *= 2;
293        Add(tahdet);
294
295
296        Label ammukset = new Label();
297        ammukset.BindTo(pelaaja1.Weapon.Ammo);
298        ammukset.Y += pelaaja1.Height;
299        ammukset.X += 20;
300        ammukset.TextColor = Color.Black;
301        ammukset.BorderColor = Color.Black;
302        ammukset.Color = Color.White;
303        ammukset.Image = abcd;
304        ammukset.Width *= 1.5;
305        pelaaja1.Add(ammukset);
306
307
308        pelaajan1Elamat = new IntMeter(5);
309        pelaajan1Elamat.MaxValue = 20;
310        Label naytto = new Label();
311        naytto.BindTo(pelaajan1Elamat);
312
313        naytto.Y += pelaaja1.Height;
314        naytto.X -= 20;
315        naytto.TextColor = Color.Black;
316        naytto.BorderColor = Color.Black;
317        naytto.Color = Color.White;
318        naytto.Image = elama;
319        naytto.Width *= 2;
320        //naytto.Size *= 1;
321        //naytto.TextScale = new Vector(0.5, 0.5);
322        pelaaja1.Add(naytto);
323    }
324
325    void AmmuAseella(PlatformCharacter pelaaja)
326    {
327        PhysicsObject ammus = pelaaja.Weapon.Shoot();
328        ControllerOne.Vibrate(1.0, 1.0, 5.0, 5.0, 0.5);
329
330        if (ammus != null)
331        {
332            ammus.CollisionIgnoreGroup = 2;
333         
334        }
335    }
336
337    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
338    {
339        ammus.Destroy();
340        kohde.Destroy();
341    }
342
343    void TormaaVihuun(PhysicsObject pelaaja, PhysicsObject vihu)
344    {
345        MessageDisplay.Add("Auts! Törmäsit Vihuun!");
346
347        ControllerOne.Vibrate(1.0, 1.0, 0.0, 0.0, 0.5);
348
349        PlaySound("osuma");
350
351        pelaajan1Elamat.Value -= 1;
352
353        pelaaja1.Position = pelaajanaloituspaikka;
354
355        if (pelaajan1Elamat == 0)
356        {
357            pelaaja1.Destroy();
358            ControllerOne.Vibrate(1.0, 1.0, 0.0, 0.0, 2.0);
359            MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
360            toplista.EnterAndShow(pelaajan1Tahdet.Value);
361            toplista.HighScoreWindow.Closed += toplistapois;
362
363        }
364    }
365
366
367    void KasittelePelaajanPutoaminen(PhysicsObject pelaaja1, PhysicsObject kohde)
368    {
369
370        pelaajan1Elamat.Value -= 1;
371
372        PlaySound("osuma");
373
374        MessageDisplay.Add("Putosit!");
375
376        pelaaja1.Position = pelaajanaloituspaikka;
377
378        if (pelaajan1Elamat == 0)
379        {
380            pelaaja1.Destroy();
381            MessageDisplay.Add("Pelaaja 1 hävisi pelin.");
382            ControllerOne.Vibrate(1.0, 1.0, 0.0, 0.0, 2.0);
383            toplista.EnterAndShow(pelaajan1Tahdet.Value);
384            toplista.HighScoreWindow.Closed += toplistapois;
385        }
386
387    }
388
389
390
391    void LisaaNappaimet()
392    {
393        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
394        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
395        Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaAlusta, "Aloittaa pelin alusta.");
396
397        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
398        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
399        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
400        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
401
402        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
403        ControllerOne.Listen(Button.Start, ButtonState.Pressed, AloitaAlusta, "Aloittaa pelin alusta.");
404
405        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
406        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
407        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
408        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
409        ControllerOne.Listen(Button.RightShoulder, ButtonState.Down, Juokse, "pelaaja juoksee oikealle", pelaaja1);
410        ControllerOne.Listen(Button.LeftShoulder, ButtonState.Down, JuokseVasen, "Pelaaja juoksee vasemmalle", pelaaja1);
411
412        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
413    }
414
415
416    void AloitaAlusta()
417    {
418        ClearAll();
419        Begin();
420    }
421
422    void Liikuta(PlatformCharacter hahmo, double nopeus)
423    {
424        hahmo.Walk(nopeus);
425    }
426
427    void Juokse(PlatformCharacter hahmo)
428    {
429        hahmo.Walk(400);
430    }
431
432    void JuokseVasen(PlatformCharacter hahmo)
433    {
434        hahmo.Walk(-400);
435    }
436
437    void Hyppaa(PlatformCharacter hahmo, double nopeus)
438    {
439        hahmo.Jump(nopeus);
440        hyppy.Play();
441    }
442
443    void TormaaAmmoon(PhysicsObject hahmo, PhysicsObject ammo)
444    {
445        pelaaja1.Weapon.Ammo.Value += 5;
446        maaliAani.Play();
447        MessageDisplay.Add("Keräsit 5 ammusta!");
448
449        ExplosionSystem rajahdys = new ExplosionSystem(abcd, pMaxMaara);
450
451        double x = ammo.X;
452        double y = ammo.Y;
453        int pMaara = 10;
454
455        rajahdys.AddEffect(x, y, pMaara);
456
457        Add(rajahdys, 1);
458
459        ammo.Destroy();
460    }
461
462    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
463    {
464        pelaajan1Tahdet.Value += 1;
465        maaliAani.Play();
466        MessageDisplay.Add("Keräsit kolikon!");
467
468
469
470        ExplosionSystem rajahdys = new ExplosionSystem(Kolikko, pMaxMaara);
471
472        double x = tahti.X;
473        double y = tahti.Y;
474        int pMaara = 10;
475
476        rajahdys.AddEffect(x, y, pMaara);
477
478        Add(rajahdys, 1);
479
480        tahti.Destroy();
481
482
483        if (pelaajan1Tahdet == 50)
484        {
485            MessageDisplay.Add("Voitit pelin!");
486            toplista.EnterAndShow(pelaajan1Tahdet.Value);
487            toplista.HighScoreWindow.Closed += toplistapois;
488        }
489    }
490}
Note: See TracBrowser for help on using the repository browser.