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

Revision 6727, 10.6 KB checked in by jivesuor, 5 years ago (diff)

Tasohyppelyyn lisätty räjähdykset kolikoiden keräämiseen.

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