source: 2015/26/AtteK/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli.cs @ 6458

Revision 6458, 23.0 KB checked in by anmurtok, 4 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
9public class Tasohyppelypeli : PhysicsGame
10{
11    DoubleMeter nopeus;
12    double hyppyNopeus = 750;
13
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17    IntMeter yrityslaskuri=new IntMeter(0);
18    IntMeter kolikkolaskuri = new IntMeter(0);
19
20    int tankkeja = 0;
21    int laattoja = 0;
22    int kenttänumero = 1;
23
24    EasyHighScore topLista = new EasyHighScore();
25    Image kaljavalikko = LoadImage("kaljapelivalikko");
26    Image kaljavalinta = LoadImage("titlejuttu");
27    Image[] BonusAtt = LoadImages("Bonusvihu", "Bonusvihu2");
28    Image PaineKuva = LoadImage("PLATE");
29    Image Burgerikuva = LoadImage("BurgeriBonus");
30    Image porttikuva1 = LoadImage("portti");
31    Image porttikuva2 = LoadImage("portti2");
32    Image tynnyrikuva = LoadImage("Tynnyri");
33    Image tynnyrikuva2 = LoadImage("Tynnyri2");
34    Image tankkikuva = LoadImage("tankki");
35    Image ammuskuva = LoadImage("Ammus");
36    Image donitsikuva = LoadImage("Donitsi");
37    Image[] PoliisiAtt = LoadImages("Polisi", "Polisiattack");
38    Image tiilikuva = LoadImage("tiili");
39    Image lopunkuva = LoadImage("Loppu");
40    Image[] vihukavely = LoadImages("vih1att", "vih1att2");
41    Image[] idlekuva = LoadImages("kaljaidle", "kaljaidle2");
42    Image powerupkuva = LoadImage("powerup");
43    Image vihollisenkuva = LoadImage("vihollinen");
44    Image poliisinkuva = LoadImage("polisi");
45    Image[] lyöntikuvat = LoadImages("lyöntikalja", "lyöntikalja2");
46    Image[] hyppykuvat = LoadImages("hyppykalja", "hyppykalja2", "hyppykalja3");
47    Image[] kävelykuvat = LoadImages("Kaljakavely", "Kaljakavely2");
48    Image pelaajanKuva = LoadImage("kaljajuoppo");
49    Image tahtiKuva = LoadImage("Kolike");
50    Image ruohokuva = LoadImage("ruohotilkku");
51    SoundEffect maaliaani = LoadSoundEffect("maali");
52    SoundEffect pulloaani = LoadSoundEffect("pullo");
53    SoundEffect punchaani = LoadSoundEffect("punch");
54    SoundEffect vitutusaani = LoadSoundEffect("huutoo");
55    SoundEffect splataani = LoadSoundEffect("splat");
56    Image scorekuva = LoadImage("Fireline");
57    Image taustakuva = LoadImage("taustsa");
58
59
60    public override void Begin()
61    {
62        SmoothTextures = false;
63
64        MediaPlayer.Play("taustamusa");
65        MediaPlayer.IsRepeating = true;
66        MediaPlayer.Volume = 0.5;
67
68        topLista.HighScoreWindow.Closed += (w) => alkuvalikko();
69
70        alkuvalikko();
71    }
72    void alkuvalikko()
73    {
74        ClearAll();
75        Level.Background.Color = Color.Black;
76        Level.Background.Image = kaljavalikko;
77        Level.Background.FitToLevel();
78        //Level.Background.Width = Screen.Width;
79        //Level.Background.Height = Screen.Height;
80        MultiSelectWindow alkuValikko = new MultiSelectWindow("Kaljajuopon Juhannus Adventure Simulator HD Remastered Edition 2015 GOTY Pre-order special Soundtrack DLC Director's cut Extended Donut Mod",    "Aloita peli", "Parhaat pisteet", "Lopeta");
81        alkuValikko.Image = kaljavalinta;
82        alkuValikko.Top = Window.Top;
83        Add(alkuValikko);
84        alkuValikko.AddItemHandler(0, aloitapeli);
85        alkuValikko.AddItemHandler(1, parhaatpisteet);
86        alkuValikko.AddItemHandler(2, Exit);
87    }
88    void parhaatpisteet()
89    {
90        topLista.Show();
91    }
92    void LuoPistelaskuri()
93    {
94        Label YritysNaytto = new Label();
95        YritysNaytto.X = Screen.Left + 200;
96        YritysNaytto.Y = Screen.Top - 100;
97        YritysNaytto.TextColor = Color.White;
98        YritysNaytto.TextScale *= 3;
99        YritysNaytto.IntFormatString = "yritykset {0}";       
100        YritysNaytto.BindTo(yrityslaskuri);
101        Add(YritysNaytto);
102
103        Label KolikkoNaytto = new Label();
104        KolikkoNaytto.X = Screen.Right - 200;
105        KolikkoNaytto.Y = Screen.Top - 100;
106        KolikkoNaytto.TextColor = Color.White;
107        KolikkoNaytto.TextScale *= 3;
108        KolikkoNaytto.IntFormatString = "x{0}";
109        KolikkoNaytto.BindTo(kolikkolaskuri);
110        Add(KolikkoNaytto);
111
112        Label kolikkokuva = new Label();
113        kolikkokuva.Image = tahtiKuva;
114        kolikkokuva.Position = KolikkoNaytto.Position;
115        kolikkokuva.X -= 70;
116        Add(kolikkokuva);
117        kolikkokuva.Size = new Vector(60, 60);
118    }
119
120    void seuraavakenttä()
121    {
122        kenttänumero++;
123        aloitapeli();
124
125        if (kenttänumero == 2)
126        {
127            MediaPlayer.Play("poliisimusa");
128        }
129
130        if (kenttänumero == 3)
131        {
132            MediaPlayer.Play("tankkimusa");
133        }
134        if (kenttänumero == 4)
135        {
136            MediaPlayer.Play("bonusmusa");
137        }
138
139        MediaPlayer.IsRepeating = true;
140        MediaPlayer.Volume = 0.5; 
141    }
142
143    void aloitapeli()
144    {
145        ClearAll();
146
147        kolikkolaskuri.Value = 0;
148
149        nopeus = new DoubleMeter(300);
150        Gravity = new Vector(0, -1000);
151
152        LuoKentta();
153        LisaaNappaimet();
154       
155        Camera.Follow(pelaaja1);
156        Camera.ZoomFactor = 1.9;
157        Camera.StayInLevel = true;
158
159        LuoPistelaskuri();
160    }
161
162    void LuoKentta()
163    {
164        tankkeja = 0;
165        laattoja = 0;
166        TileMap kentta = TileMap.FromLevelAsset("kentta"+kenttänumero);
167        kentta.SetTileMethod('T', LisaaTiili);
168        kentta.SetTileMethod('U', LisaaPainelaatta);
169        kentta.SetTileMethod('J', LisaaBonus);
170        kentta.SetTileMethod('Z', LisaaPortti1);
171        kentta.SetTileMethod('X', LisaaPortti2);
172        kentta.SetTileMethod('O', LisaaPudotettava);
173        kentta.SetTileMethod('L', LisaaLoppu);
174        kentta.SetTileMethod('#', LisaaTaso);
175        kentta.SetTileMethod('*', LisaaTahti);
176        kentta.SetTileMethod('N', LisaaPelaaja);
177        kentta.SetTileMethod('K', LisaaPowerup);
178        kentta.SetTileMethod('S', LisaaTankki);
179        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
180        TileMap kentta2 = TileMap.FromLevelAsset("kentta"+kenttänumero);
181        kentta2.SetTileMethod('V', LisaaVihollinen);
182        kentta2.SetTileMethod('P', LisaaPolisi);
183        kentta2.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
184        Level.CreateBorders();
185        Level.Background.CreateGradient(Color.White, Color.White);
186        Level.Background.Image = taustakuva;
187
188        if (kenttänumero == 4)
189        {
190            LuoAikaLaskuri();
191        }
192    }
193
194    void LuoAikaLaskuri()
195    {
196        Timer aikaLaskuri = new Timer();
197        aikaLaskuri.Interval = 10;
198        aikaLaskuri.Timeout += AikaLoppui;
199        aikaLaskuri.Start(1);
200
201        Label aikaNaytto = new Label();
202        aikaNaytto.TextColor = Color.Red;
203        aikaNaytto.Y = Screen.Top - 100;
204        aikaNaytto.TextScale *= 4;
205        aikaNaytto.DecimalPlaces = 0;
206        aikaNaytto.DoubleFormatString = "{0:0.0}/10";
207        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
208        Add(aikaNaytto);
209    }
210
211    void AikaLoppui()
212    {
213        ClearAll();
214        Level.Background.Color = Color.Black;
215        Level.Background.Image = scorekuva;
216        Level.Background.FitToLevel();
217        topLista.EnterAndShow(kolikkolaskuri.Value);
218       
219    }
220
221    void LisaaPortti1(Vector paikka, double leveys, double korkeus)
222    {
223        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
224        taso.Position = paikka;
225        taso.Color = Color.Green;
226        Add(taso);
227        taso.Image = porttikuva1;
228        taso.Tag = "portti";
229    }
230    void LisaaPortti2(Vector paikka, double leveys, double korkeus)
231    {
232        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
233        taso.Position = paikka;
234        taso.Color = Color.Green;
235        Add(taso);
236        taso.Image = porttikuva2;
237        taso.Tag = "portti";
238    }
239    void LisaaTaso(Vector paikka, double leveys, double korkeus)
240    {
241        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
242        taso.Position = paikka;
243        taso.Color = Color.Green;
244        Add(taso);
245        taso.Image = ruohokuva;
246    }
247    void LisaaPudotettava(Vector paikka, double leveys, double korkeus)
248    {
249        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys*0.75, korkeus*1);
250        taso.Position = paikka;
251        taso.Color = Color.Green;
252        taso.IgnoresGravity = true;
253        Add(taso);
254        taso.Image = tynnyrikuva;
255        taso.Tag = "pudotettava";
256        taso.IgnoresCollisionResponse = true;
257        AddCollisionHandler(taso, "lyonti", delegate(PhysicsObject pudotettava, PhysicsObject nyrkki)
258 
259
260               
261        {
262            taso.Image = tynnyrikuva2;
263            pudotettava.Velocity = new Vector(0, -800);
264            Timer.SingleShot(10, delegate { LisaaPudotettava(paikka, leveys, korkeus); });
265        });
266    }
267 
268    void LisaaTiili (Vector paikka, double leveys, double korkeus)
269    {
270        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
271        taso.Position = paikka;
272        taso.Color = Color.Green;
273        Add(taso);
274        taso.Image = tiilikuva;
275    }
276    void LisaaLoppu(Vector paikka, double leveys, double korkeus)
277    {
278        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys*5, korkeus*3);
279        taso.Position = paikka;
280        taso.Color = Color.Green;
281        Add(taso);
282        taso.Image = lopunkuva;
283        taso.Y += korkeus;
284        taso.Tag = "loppu";
285    }
286    void LisaaTahti(Vector paikka, double leveys, double korkeus)
287    {
288        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
289        tahti.IgnoresCollisionResponse = true;
290        tahti.Position = paikka;
291        tahti.Image = tahtiKuva;
292        tahti.Tag = "tahti";
293        Add(tahti);
294    }
295    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
296    {
297        PlatformCharacter Vihollinen1 = new PlatformCharacter(leveys, korkeus);
298        Vihollinen1.Position = paikka;
299        Vihollinen1.Image = vihollisenkuva;
300        Vihollinen1.Tag = "vihollinen";
301        Add(Vihollinen1);
302        Vihollinen1.AnimWalk = new Animation (vihukavely);
303        Vihollinen1.AnimWalk.FPS = 4;
304
305        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
306        tasoAivot.TriesToJump = true;
307        tasoAivot.Speed = 100;
308
309        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
310        seuraajanAivot.Speed = 425;
311        seuraajanAivot.DistanceFar = 300;
312        seuraajanAivot.DistanceClose = 200;
313        seuraajanAivot.StopWhenTargetClose = false;
314        seuraajanAivot.FarBrain = tasoAivot;
315
316       
317
318        Vihollinen1.Brain = seuraajanAivot;
319        AddCollisionHandler(Vihollinen1, "lyonti", osuma);
320
321        Timer ajastin = new Timer();
322        ajastin.Interval = 0.75;
323        ajastin.Timeout += delegate
324        {
325            Vihollinen1.Jump(400);
326
327        };
328        ajastin.Start();
329   
330    }
331    void LisaaPolisi(Vector paikka, double leveys, double korkeus)
332    {
333        PlatformCharacter Polisi = new PlatformCharacter(leveys, korkeus);
334        Polisi.Position = paikka;
335        Polisi.Image = poliisinkuva;
336        Polisi.CollisionIgnoreGroup = 1;
337        Polisi.Tag = "vihollinen";
338        Polisi.Animation = new Animation(PoliisiAtt) { FPS = 2 };
339        Polisi.Animation.Start();
340        Add(Polisi);
341       // Polisi.AnimWalk = new Animation(vihukavely);
342        //Polisi.AnimWalk.FPS = 4;
343
344        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
345        tasoAivot.Speed = 100;
346
347        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
348        seuraajanAivot.Speed = 425;
349        seuraajanAivot.DistanceFar = 300;
350        seuraajanAivot.DistanceClose = 200;
351        seuraajanAivot.StopWhenTargetClose = false;
352        seuraajanAivot.FarBrain = tasoAivot;
353
354        //seuraajanAivot.TargetClose +=
355
356        Polisi.Brain = seuraajanAivot;
357        AddCollisionHandler(Polisi, "lyonti", osuma);
358
359        Timer ajastin = new Timer();
360        ajastin.Interval = 1;
361        ajastin.Timeout += delegate
362        {
363            if (!Polisi.IsDestroyed)
364            {
365                //Polisi.PlayAnimation(new Animation(PoliisiAtt) { FPS = 1 });
366                PhysicsObject Donitsi = new PhysicsObject(17, 17);
367                Donitsi.Image = donitsikuva;
368                Donitsi.Position = Polisi.Position;
369                Donitsi.Hit((pelaaja1.Position - Polisi.Position).Normalize() * 1500);
370                Add(Donitsi);
371                Donitsi.Shape = Shape.Circle;
372                Donitsi.LifetimeLeft = TimeSpan.FromSeconds(0.75);
373                Donitsi.Tag = "vihollinen";
374                AddCollisionHandler(Donitsi, "lyonti", osuma);
375                AddCollisionHandler(Donitsi, LuoRajahdys);
376                Donitsi.CollisionIgnoreGroup = 1;
377            }
378        };
379        ajastin.Start();
380
381    }
382    void LuoRajahdys(PhysicsObject Donitsi, PhysicsObject kohde)
383    {
384        Explosion rajahdys = new Explosion(50);
385        rajahdys.Position = Donitsi.Position;
386        rajahdys.Sound = null;
387        Add(rajahdys);
388        Donitsi.Destroy();
389
390    }
391    void LisaaBonus(Vector paikka, double leveys, double korkeus)
392    {
393        PlatformCharacter Polisi = new PlatformCharacter(leveys, korkeus);
394        Polisi.Position = paikka;
395        Polisi.Image = poliisinkuva;
396        Polisi.CollisionIgnoreGroup = 1;
397        Polisi.Tag = "vihollinen";
398        Polisi.Animation = new Animation(BonusAtt) { FPS = 10 };
399        Polisi.Animation.Start();
400        Add(Polisi);
401        // Polisi.AnimWalk = new Animation(vihukavely);
402        //Polisi.AnimWalk.FPS = 4;
403
404        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
405        tasoAivot.Speed = 100;
406
407        FollowerBrain seuraajanAivot = new FollowerBrain(Polisi);
408        seuraajanAivot.Speed = 425;
409        seuraajanAivot.DistanceFar = 300;
410        seuraajanAivot.DistanceClose = 200;
411        seuraajanAivot.StopWhenTargetClose = false;
412        seuraajanAivot.FarBrain = tasoAivot;
413
414        //seuraajanAivot.TargetClose +=
415
416        Polisi.Brain = seuraajanAivot;
417        AddCollisionHandler(Polisi, "lyonti", osuma);
418
419        Timer ajastin = new Timer();
420        ajastin.Interval = 0.1;
421        ajastin.Timeout += delegate
422        {
423            if (!Polisi.IsDestroyed)
424            {
425                //Polisi.PlayAnimation(new Animation(PoliisiAtt) { FPS = 1 });
426                PhysicsObject Donitsi = new PhysicsObject(17, 17);
427                Donitsi.Image = Burgerikuva;
428                Donitsi.Position = Polisi.Position;
429                Donitsi.Hit((pelaaja1.Position - Polisi.Position).Normalize() * 1500);
430                Add(Donitsi);
431                Donitsi.Shape = Shape.Circle;
432                Donitsi.LifetimeLeft = TimeSpan.FromSeconds(10);
433                Donitsi.Tag = "BONUS";
434                AddCollisionHandler(Donitsi, "lyonti", osuma);
435                //AddCollisionHandler(Donitsi, CollisionHandler.ExplodeObject(100, false));
436                //Donitsi.CollisionIgnoreGroup = 1;
437            }
438        };
439        ajastin.Start();
440
441    }
442    void LisaaTankki(Vector paikka, double leveys, double korkeus)
443    {
444        PlatformCharacter Tankki = new PlatformCharacter(leveys*4, korkeus*2);
445        Tankki.Position = paikka;
446        Tankki.Image = tankkikuva;
447        Tankki.CollisionIgnoreGroup = 1;
448        Tankki.Tag = "Tankki";
449        //Tankki.Animation = new Animation(PoliisiAtt) { FPS = 2 };
450        //Tankki.Animation.Start();
451        Add(Tankki);
452        tankkeja++;
453        // Polisi.AnimWalk = new Animation(vihukavely);
454        //Polisi.AnimWalk.FPS = 4;
455
456        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
457        tasoAivot.Speed = 100;
458
459        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
460        seuraajanAivot.Speed = 425;
461        seuraajanAivot.DistanceFar = 300;
462        seuraajanAivot.DistanceClose = 200;
463        seuraajanAivot.StopWhenTargetClose = false;
464        seuraajanAivot.FarBrain = tasoAivot;
465
466        IntMeter elämät = new IntMeter(3);
467
468        Tankki.Brain = tasoAivot;
469        AddCollisionHandler(Tankki, "pudotettava", delegate(PhysicsObject vihollinen, PhysicsObject tynnyri)
470        {
471            tynnyri.Destroy();
472            Explosion räjähdys = new Explosion(75);
473            räjähdys.Position = tynnyri.Position;
474            Add(räjähdys);
475            elämät.Value--;
476            if (elämät.Value == 0)
477            {
478                Tankki.Destroy();
479                tankkeja--;
480                if (tankkeja == 0)
481                {
482                    foreach (GameObject portti in GetObjectsWithTag("portti"))
483                    {
484                        portti.Destroy();
485                    }
486                }
487            }
488        });
489
490        Timer ajastin = new Timer();
491        ajastin.Interval = 1;
492        ajastin.Timeout += delegate
493        {
494            if (!Tankki.IsDestroyed && Math.Sign(Tankki.FacingDirection.GetVector().X) == Math.Sign(pelaaja1.X - Tankki.X))
495            {
496                //Polisi.PlayAnimation(new Animation(PoliisiAtt) { FPS = 1 });
497                PhysicsObject Ammus = new PhysicsObject(30, 17);
498                Ammus.Image = ammuskuva;
499                Ammus.Position = Tankki.Position + new Vector(Tankki.FacingDirection.GetVector().X * 80, 30);
500                Ammus.Hit((pelaaja1.Position - Tankki.Position).Normalize() * 1500);
501                Ammus.Angle = (pelaaja1.Position - Tankki.Position).Angle;
502                Add(Ammus);
503                Ammus.Shape = Shape.Circle;
504                Ammus.LifetimeLeft = TimeSpan.FromSeconds(2);
505                Ammus.Tag = "vihollinen";
506                AddCollisionHandler(Ammus, "lyonti", osuma);
507                AddCollisionHandler(Ammus, CollisionHandler.ExplodeObject(100, true));
508                Ammus.CollisionIgnoreGroup = 1;
509            }
510        };
511        ajastin.Start();
512
513    }
514
515    void osuma(PhysicsObject vihollinen, PhysicsObject nyrkki)
516    {
517        nyrkki.Destroy();
518        vihollinen.Destroy();
519    }
520
521
522    void LisaaPowerup(Vector paikka, double leveys, double korkeus)
523    {
524        PhysicsObject Powerup = PhysicsObject.CreateStaticObject(leveys * 0.225, korkeus * 0.75);
525        Powerup.IgnoresCollisionResponse = true;
526        Powerup.Position = paikka;
527        Powerup.Image = powerupkuva;
528        Powerup.Tag = "speedpowerup";
529        Add(Powerup);
530    }
531    void LisaaPainelaatta(Vector paikka, double leveys, double korkeus)
532    {
533        PhysicsObject Painelaatta = PhysicsObject.CreateStaticObject(leveys , korkeus * 0.1);
534        Painelaatta.IgnoresCollisionResponse = true;
535        Painelaatta.Position = paikka;
536        Painelaatta.Bottom = paikka.Y - korkeus * 0.5;
537        Painelaatta.Image = PaineKuva;
538        Painelaatta.Tag = "painelaatta";
539        Add(Painelaatta);
540        laattoja++;
541    }
542
543    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
544    {
545        pelaaja1 = new PlatformCharacter(leveys, korkeus);
546        pelaaja1.AnimJump = new Animation(hyppykuvat);
547        pelaaja1.AnimJump.FPS = 300;
548        pelaaja1.Position = paikka;
549        pelaaja1.Mass = 4.0;
550        pelaaja1.Image = pelaajanKuva;
551        pelaaja1.AnimIdle = new Animation(idlekuva);
552        pelaaja1.AnimIdle.FPS = 3;
553        pelaaja1.AnimWalk = new Animation(kävelykuvat);
554        pelaaja1.AnimWalk.FPS = 6;
555        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
556        AddCollisionHandler(pelaaja1, "vihollinen", TormaaViholliseen);
557        AddCollisionHandler(pelaaja1, "speedpowerup", TormaaPoweruppiin);
558        AddCollisionHandler(pelaaja1, "loppu", törmääloppuun);
559        AddCollisionHandler(pelaaja1, "painelaatta", törmääpainelaattaan);
560        Add(pelaaja1);
561    }
562    void törmääpainelaattaan(PhysicsObject pelaaja, PhysicsObject laatta)
563    {
564        laatta.Destroy();
565        laattoja--;
566        if (laattoja == 0)
567        {
568            foreach (GameObject portti in GetObjectsWithTag("portti"))
569            {
570                portti.Destroy();
571            }
572        }
573    }
574    void törmääloppuun(PhysicsObject pelaaja, PhysicsObject loppu)
575    {
576        if (laattoja == 0)
577        {
578            kolikkolaskuri.MinValue = kolikkolaskuri.Value;
579            seuraavakenttä();
580        }
581    }
582    void LisaaNappaimet()
583    {
584        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
585        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
586        Keyboard.Listen(Key.Space, ButtonState.Pressed, Lyö, "Pelaaja lyö", pelaaja1);
587        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
588        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
589        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
590        Keyboard.Listen(Key.F12, ButtonState.Pressed, seuraavakenttä, "Luovuttaja lol");
591
592        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
593
594        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
595        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
596        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
597
598        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
599    }
600
601    void Lyö(PlatformCharacter hahmo)
602    {
603        Animation lyöntianimaatio = new Animation(lyöntikuvat);
604        lyöntianimaatio.FPS = 10;
605        hahmo.PlayAnimation(lyöntianimaatio);
606        hahmo.Width = RUUDUN_KOKO + 5;
607        lyöntianimaatio.Played += delegate
608        {
609            hahmo.Width = RUUDUN_KOKO;
610        };
611        punchaani.Play();
612
613        PhysicsObject lyonti = new PhysicsObject(40,30);
614        lyonti.Position = hahmo.Position + hahmo.FacingDirection.GetVector() * 30;
615        lyonti.IgnoresCollisionResponse = true;
616        lyonti.Tag = "lyonti";
617        lyonti.IsVisible = false;
618        lyonti.LifetimeLeft = TimeSpan.FromSeconds(0.1);
619        Add(lyonti);
620    }
621
622    void Liikuta(PlatformCharacter hahmo, double suunta)
623    {
624        hahmo.Walk(nopeus.Value * suunta);
625    }
626
627    void Hyppaa(PlatformCharacter hahmo, double nopeus)
628    {
629        hahmo.Jump(nopeus);
630    }
631
632    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
633    {
634        maaliaani.Play(0.5,0.0,0.0);
635        //MessageDisplay.Add("LISÄÄ RAHEJA!");
636        tahti.Destroy();
637        kolikkolaskuri.Value++;
638    }
639    void TormaaPoweruppiin(PhysicsObject hahmo, PhysicsObject Powerup)
640    {
641        pulloaani.Play();
642        Powerup.Destroy();
643        nopeus.Value += 150;
644    }
645
646    void TormaaViholliseen(PhysicsObject hahmo, PhysicsObject vihollinen)
647    {
648        yrityslaskuri.Value++;
649        aloitapeli();
650        vitutusaani.Play();
651    }
652}
Note: See TracBrowser for help on using the repository browser.