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

Revision 6183, 5.6 KB checked in by sieerinn, 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
9public class Tasohyppelypeli : PhysicsGame
10{
11    DoubleMeter nopeus = new DoubleMeter(300);
12    double hyppyNopeus = 750;
13
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17    Image powerupkuva = LoadImage("powerup");
18    Image vihollisenkuva = LoadImage("vihollinen");
19    Image poliisinkuva = LoadImage("polisi");
20    Image[] lyöntikuvat = LoadImages("lyöntikalja", "lyöntikalja2");
21    Image[] hyppykuvat = LoadImages("hyppykalja", "hyppykalja2", "hyppykalja3");
22    Image[] kävelykuvat = LoadImages("Kaljakavely", "Kaljakavely2");
23    Image pelaajanKuva = LoadImage("kaljajuoppo");
24    Image tahtiKuva = LoadImage("Kolike");
25    Image ruohokuva = LoadImage("ruohotilkku");
26    SoundEffect maaliaani = LoadSoundEffect("maali");
27    SoundEffect pulloaani = LoadSoundEffect("pullo");
28    SoundEffect punchaani = LoadSoundEffect("punch");
29    Image taustakuva = LoadImage("taustsa");
30
31    public override void Begin()
32    {
33        SmoothTextures = false;
34        Gravity = new Vector(0, -1000);
35
36        LuoKentta();
37        LisaaNappaimet();
38        MediaPlayer.Play("taustamusa");
39        MediaPlayer.IsRepeating = true;
40        Camera.Follow(pelaaja1);
41        Camera.ZoomFactor = 1.9;
42        Camera.StayInLevel = true;
43    }
44
45    void LuoKentta()
46    {
47        TileMap kentta = TileMap.FromLevelAsset("kentta1");
48        kentta.SetTileMethod('#', LisaaTaso);
49        kentta.SetTileMethod('*', LisaaTahti);
50        kentta.SetTileMethod('N', LisaaPelaaja);
51        kentta.SetTileMethod('K', LisaaPowerup);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.White, Color.White);
55        Level.Background.Image = taustakuva;
56    }
57
58    void LisaaTaso(Vector paikka, double leveys, double korkeus)
59    {
60        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
61        taso.Position = paikka;
62        taso.Color = Color.Green;
63        Add(taso);
64        taso.Image = ruohokuva;
65    }
66
67    void LisaaTahti(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        tahti.IgnoresCollisionResponse = true;
71        tahti.Position = paikka;
72        tahti.Image = tahtiKuva;
73        tahti.Tag = "tahti";
74        Add(tahti);
75    }
76
77    void LisaaPowerup(Vector paikka, double leveys, double korkeus)
78    {
79        PhysicsObject Powerup = PhysicsObject.CreateStaticObject(leveys * 0.225, korkeus * 0.75);
80        Powerup.IgnoresCollisionResponse = true;
81        Powerup.Position = paikka;
82        Powerup.Image = powerupkuva;
83        Powerup.Tag = "speedpowerup";
84        Add(Powerup);
85    }
86
87    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
88    {
89        pelaaja1 = new PlatformCharacter(leveys, korkeus);
90        pelaaja1.AnimJump = new Animation(hyppykuvat);
91        pelaaja1.AnimJump.FPS = 4;
92        pelaaja1.Position = paikka;
93        pelaaja1.Mass = 4.0;
94        pelaaja1.Image = pelaajanKuva;
95        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
96        pelaaja1.AnimIdle.FPS = 1;
97        pelaaja1.AnimWalk = new Animation(kävelykuvat);
98        pelaaja1.AnimWalk.FPS = 6;
99        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
100        AddCollisionHandler(pelaaja1, "speedpowerup", TormaaPoweruppiin);
101        Add(pelaaja1);
102    }
103
104    void LisaaNappaimet()
105    {
106        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
107        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
108        Keyboard.Listen(Key.Space, ButtonState.Pressed, Lyö, "Pelaaja lyö", pelaaja1);
109        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1.0);
110        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1.0);
111        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
112
113        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
114
115        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
116        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
117        //ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
118
119        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
120    }
121
122    void Lyö(PlatformCharacter hahmo)
123    {
124        Animation lyöntianimaatio = new Animation(lyöntikuvat);
125        lyöntianimaatio.FPS = 10;
126        hahmo.PlayAnimation(lyöntianimaatio);
127        hahmo.Width = RUUDUN_KOKO + 15;
128        lyöntianimaatio.Played += delegate
129        {
130            hahmo.Width = RUUDUN_KOKO;
131        };
132        punchaani.Play();
133    }
134
135    void Liikuta(PlatformCharacter hahmo, double suunta)
136    {
137        hahmo.Walk(nopeus.Value * suunta);
138    }
139
140    void Hyppaa(PlatformCharacter hahmo, double nopeus)
141    {
142        hahmo.Jump(nopeus);
143    }
144
145    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
146    {
147        maaliaani.Play();
148        MessageDisplay.Add("LISÄÄ RAHEJA!");
149        tahti.Destroy();
150    }
151    void TormaaPoweruppiin(PhysicsObject hahmo, PhysicsObject Powerup)
152    {
153        pulloaani.Play();
154        Powerup.Destroy();
155        nopeus.Value += 150;
156    }
157}
Note: See TracBrowser for help on using the repository browser.