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

Revision 6742, 11.9 KB checked in by jivesuor, 6 years ago (diff)

Tasohyppelyyn lisätty pelaajalle ase ja ammuksia kenttään.

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