source: 2014/24/UrhoP/pallopeli1/pallopeli1/pallopeli1/pallopeli1.cs @ 4975

Revision 4975, 12.6 KB checked in by urpynnon, 5 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8using Jypeli.LevelEditor;
9public class pallopeli1 : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 800;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    PlatformCharacter pelaaja2;
17    PlatformCharacter pelaaja3;
18    PlatformCharacter pelaaja4;
19
20
21    Image piikki2 = LoadImage("piikki1");
22    Image pelaajanKuva1 = LoadImage("pallo");
23    Image tahtiKuva = LoadImage("tahti");
24    Image pelaajanKuva2 = LoadImage("pallo1");
25
26    int kenttaNro = 1;
27
28
29    public override void Begin()
30    {
31       
32        ClearAll();
33
34        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli  A ", "Lopeta  B");
35        Add(alkuValikko);
36
37       
38
39       
40        alkuValikko.AddItemHandler(0, SeuraavaKentta);
41
42
43        alkuValikko.AddItemHandler(1, Exit);
44
45        alkuValikko.DefaultCancel = 1;
46
47       
48
49        Gravity = new Vector(0, -1000);
50
51
52       
53       
54
55        Camera.Follow(pelaaja1);
56        Camera.ZoomFactor = 1.2;
57        Camera.StayInLevel = true;
58
59        MessageDisplay.Add("Kerää kaikki 12 Tähteä");
60
61       
62
63    }
64
65    void alku()
66    {
67        eipause();
68        kenttaNro = 1;
69        SeuraavaKentta();
70    }
71
72    void SeuraavaKentta()
73    {
74        ClearAll();
75
76        eipause();
77        Gravity = new Vector(0, -1000);
78
79        if (kenttaNro == 1) LuoKentta();
80        else if (kenttaNro == 2) LuoKentta2();
81        else if (kenttaNro == 3) LuoKentta3();
82        else if (kenttaNro == 4) LuoKentta4();
83        else if (kenttaNro == 5) LuoKentta5();
84        else if (kenttaNro > 5) Voitto();
85
86        IsMouseVisible = false;
87        Camera.Follow(pelaaja1);
88        Camera.ZoomFactor = 1.2;
89        Camera.StayInLevel = true;
90        LisaaNappaimet();
91        LuoPistelaskuri();
92        LuoPistelaskuri();
93       
94    }
95
96
97    void Voitto()
98    {
99        MultiSelectWindow loppumenu = new MultiSelectWindow("Voititpelin", "Uusipeli  A ", "Lopeta  B");
100        Add(loppumenu);
101
102        loppumenu.AddItemHandler(0, alku);
103
104
105        loppumenu.AddItemHandler(1, Exit);
106
107        loppumenu.DefaultCancel = 1;
108    }
109   
110
111    void LuoKentta()
112    {
113
114        LuoAikaLaskuri();
115
116        TileMap kentta1 = TileMap.FromLevelAsset("kentta1");
117        kentta1.SetTileMethod('#', LisaaTaso);
118        kentta1.SetTileMethod('W', Lisaapiikki);
119        kentta1.SetTileMethod('*', LisaaTahti);
120        kentta1.SetTileMethod('P', LisaaPelaaja1);
121        kentta1.SetTileMethod('p', LisaaPelaaja2);
122        kentta1.SetTileMethod('0', LisaaPelaaja4);
123        kentta1.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
124        Level.CreateBorders();
125        Level.Background.CreateGradient(Color.MediumBlue, Color.MediumBlue);
126    }
127
128    void TormasiMaaliin()
129    {
130       
131        kenttaNro++;
132        SeuraavaKentta();
133    }
134
135    void LuoKentta2()
136    {
137        LuoAikaLaskuri();
138
139
140        TileMap kentta2 = TileMap.FromLevelAsset("kentta2");
141        kentta2.SetTileMethod('#', LisaaTaso);
142        kentta2.SetTileMethod('W', Lisaapiikki);
143        kentta2.SetTileMethod('*', LisaaTahti);
144        kentta2.SetTileMethod('P', LisaaPelaaja1);
145        kentta2.SetTileMethod('p', LisaaPelaaja2);
146        kentta2.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
147        Level.CreateBorders();
148        Level.Background.CreateGradient(Color.MediumBlue, Color.MediumBlue);
149    }
150
151    void LuoKentta3()
152    {
153
154        LuoAikaLaskuri();
155
156        TileMap kentta3 = TileMap.FromLevelAsset("kentta3");
157        kentta3.SetTileMethod('#', LisaaTaso);
158        kentta3.SetTileMethod('W', Lisaapiikki);
159        kentta3.SetTileMethod('*', LisaaTahti);
160        kentta3.SetTileMethod('P', LisaaPelaaja1);
161        kentta3.SetTileMethod('p', LisaaPelaaja2);
162        kentta3.SetTileMethod('S', LisaaPelaaja3);
163        kentta3.SetTileMethod('0', LisaaPelaaja4);
164        kentta3.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
165        Level.CreateBorders();
166        Level.Background.CreateGradient(Color.MediumBlue, Color.MediumBlue);
167    }
168
169    void LuoKentta4()
170    {
171
172        LuoAikaLaskuri();
173
174        TileMap kentta4 = TileMap.FromLevelAsset("kentta4");
175        kentta4.SetTileMethod('#', LisaaTaso);
176        kentta4.SetTileMethod('W', Lisaapiikki);
177        kentta4.SetTileMethod('*', LisaaTahti);
178        kentta4.SetTileMethod('P', LisaaPelaaja1);
179        kentta4.SetTileMethod('p', LisaaPelaaja2);
180        kentta4.SetTileMethod('S', LisaaPelaaja3);
181        kentta4.SetTileMethod('0', LisaaPelaaja4);
182        kentta4.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
183        Level.CreateBorders();
184        Level.Background.CreateGradient(Color.MediumBlue, Color.MediumBlue);
185    }
186
187
188    void LuoKentta5()
189    {
190
191        LuoAikaLaskuri();
192
193        TileMap kentta5 = TileMap.FromLevelAsset("kentta5");
194        kentta5.SetTileMethod('#', LisaaTaso);
195        kentta5.SetTileMethod('W', Lisaapiikki);
196        kentta5.SetTileMethod('*', LisaaTahti);
197        kentta5.SetTileMethod('P', LisaaPelaaja1);
198        kentta5.SetTileMethod('p', LisaaPelaaja2);
199        kentta5.SetTileMethod('S', LisaaPelaaja3);
200        kentta5.SetTileMethod('0', LisaaPelaaja4);
201        kentta5.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
202        Level.CreateBorders();
203        Level.Background.CreateGradient(Color.MediumBlue, Color.MediumBlue);
204    }
205
206
207
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.Black;
215        Add(taso);
216    }
217
218    void LisaaTahti(Vector paikka, double leveys, double korkeus)
219    {
220        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
221        tahti.IgnoresCollisionResponse = true;
222        tahti.Position = paikka;
223        tahti.Image = tahtiKuva;
224        tahti.Tag = "tahti";
225        Add(tahti);
226    }
227
228    void LisaaPelaaja1(Vector paikka, double leveys, double korkeus)
229    {
230        pelaaja1 = new PlatformCharacter(leveys, korkeus);
231        pelaaja1.Position = paikka;
232        pelaaja1.Mass = 4.0;
233        pelaaja1.Image = pelaajanKuva1;
234        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
235        Add(pelaaja1);
236        AddCollisionHandler(pelaaja1, "piikki", Tormaapiikkiin);
237    }
238
239    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
240    {
241        pelaaja2 = new PlatformCharacter(leveys, korkeus);
242        pelaaja2.Position = paikka;
243        pelaaja2.Mass = 2.0;
244        pelaaja2.Image = pelaajanKuva2;
245        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
246        Add(pelaaja2);
247        AddCollisionHandler(pelaaja2, "piikki", Tormaapiikkiin2);
248    }
249
250    void LisaaPelaaja3(Vector paikka, double leveys, double korkeus)
251    {
252        pelaaja3 = new PlatformCharacter(leveys, korkeus);
253        pelaaja3.Position = paikka;
254        pelaaja3.Mass = 2.0;
255        pelaaja3.Image = pelaajanKuva2;
256        Add(pelaaja3);
257        AddCollisionHandler(pelaaja3, "piikki", Tormaapiikkiin3);
258    }
259
260
261    void LisaaPelaaja4(Vector paikka, double leveys, double korkeus)
262    {
263        pelaaja4 = new PlatformCharacter(leveys, korkeus);
264        pelaaja4.Position = paikka;
265        pelaaja4.Mass = 2.0;
266        pelaaja4.Image = pelaajanKuva2;
267        Add(pelaaja4);
268       
269    }
270
271
272
273
274    void Lisaapiikki(Vector paikka, double leveys, double korkeus)
275    {
276        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
277        piikki.Position = paikka;
278        piikki.IgnoresCollisionResponse = true;
279        piikki.Image = piikki2;
280        piikki.Tag = "piikki";
281        Add(piikki);
282 
283    }
284
285
286
287    void rajahdys()
288    {
289        Explosion rajahdys = new Explosion(50);
290       
291        Add(rajahdys);
292    }
293
294    void LisaaNappaimet()
295    {
296        ControllerOne.Listen(Button.Y, ButtonState.Down, pause, "Pelivalikko");
297        Keyboard.Listen(Key.R, ButtonState.Down, eipause, "Aloita alusta");
298
299        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
300        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
301        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
302        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
303        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
304        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
305        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
306        ControllerOne.Listen(Button.DPadUp, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
307        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
308        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
309        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
310        ControllerOne.Listen(Button.Start, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
311        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
312        ControllerOne.Listen(Button.Y, ButtonState.Down, Pelivalikko, "Pelivalikko");
313        Keyboard.Listen(Key.R, ButtonState.Down, Begin, "Aloita alusta");
314        ControllerOne.Listen(Button.A, ButtonState.Pressed, AloitaPeli, "Aloita Peli" );
315       
316       
317       
318       
319           
320
321
322        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
323
324
325
326        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
327    }
328
329    void Liikuta(PlatformCharacter hahmo, double nopeus)
330    {
331        hahmo.Walk(nopeus);
332    }
333
334
335    void Pelivalikko()
336
337    {
338        pause();
339
340        MultiSelectWindow Pelivalikko = new MultiSelectWindow("Pelivalikko", "Aloita taso alusta  A ", "Aloita peli alusta B");
341        Add(Pelivalikko);
342
343
344
345        Pelivalikko.AddItemHandler(0, SeuraavaKentta);
346
347
348        Pelivalikko.AddItemHandler(1, alku);
349       
350        Pelivalikko.DefaultCancel = 1;
351    }
352
353
354    void Hyppaa(PlatformCharacter hahmo, double nopeus)
355    {
356        hahmo.Jump(nopeus);
357    }
358
359    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
360    {
361
362        MessageDisplay.Add("Keräsit tähden!");
363        tahti.Destroy();
364        pisteLaskuri.Value += 1;
365
366    }
367
368    void Tormaapiikkiin(PhysicsObject piikki, PhysicsObject hahmo)
369    {
370
371       
372        pelaaja1.Destroy();
373        kuolit();
374       
375
376    }
377
378    void Tormaapiikkiin2(PhysicsObject piikki, PhysicsObject hahmo)
379    {
380
381
382        pelaaja2.Destroy();
383       
384
385
386    }
387
388    void Tormaapiikkiin3(PhysicsObject piikki, PhysicsObject hahmo)
389    {
390
391
392        pelaaja3.Destroy();
393
394
395
396    }
397
398
399
400
401
402    IntMeter pisteLaskuri;
403
404    void LuoPistelaskuri()
405    {
406        pisteLaskuri = new IntMeter(0);
407
408        Label pisteNaytto = new Label();
409        pisteNaytto.X = Screen.Right - 100;
410        pisteNaytto.Y = Screen.Top - 100;
411        pisteNaytto.TextColor = Color.Black;
412        pisteNaytto.Color = Color.White;
413
414        pisteNaytto.BindTo(pisteLaskuri);
415        Add(pisteNaytto);
416        pisteNaytto.Title = "Tähdet";
417        pisteLaskuri.AddTrigger(12, TriggerDirection.Up, KaikkiKeratty);
418
419
420    }
421
422
423
424
425    void LuoAikaLaskuri()
426    {
427        Timer aikaLaskuri = new Timer();
428        aikaLaskuri.Interval = 40;
429        aikaLaskuri.Timeout += AikaLoppui;
430        aikaLaskuri.Start(1);
431
432        Label aikaNaytto = new Label();
433        aikaNaytto.TextColor = Color.White;
434        aikaNaytto.DecimalPlaces = 1;
435        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
436        aikaNaytto.X = Screen.Right - 200;
437        aikaNaytto.Y = Screen.Top - 100;
438        Add(aikaNaytto);
439       
440    }
441
442
443    void AikaLoppui()
444    {
445        MessageDisplay.Add("Aika loppui...");
446
447        pause();
448     
449    }
450
451    void kuolit()
452    {
453        MessageDisplay.Add("Kuolit");
454
455        pause();
456
457    }
458
459
460
461    void pause()
462
463    {
464        IsPaused = true;
465    }
466
467    void eipause()
468    {
469        IsPaused = false;
470    }
471
472    void AloitaPeli()
473
474    {
475
476    }
477
478    void KaikkiKeratty()
479{
480    MessageDisplay.Add("voitit pelin.");
481
482    TormasiMaaliin();
483}
484
485   
486}
Note: See TracBrowser for help on using the repository browser.