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

Revision 6770, 13.6 KB checked in by jivesuor, 7 years ago (diff)

Tasohyppelyyn lisätty juokseminen Xbox-ohjaimella. Hyppäämiseen lisätty ääni.
Ase muutettu näkymättömäksi. Voittoon tarvittavien tähtien määrä muutettu tasan 50.

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