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

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