source: 2015/30/EemilR/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli/Tasohyppelypeli.cs @ 6904

Revision 6904, 6.7 KB checked in by misakana, 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    const double nopeus = 400;
12    const double hyppyNopeus = 900;
13    const int RUUDUN_KOKO = 50;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("pallo");
18    Image tahtiKuva = LoadImage("tahti");
19    Image avainKuva = LoadImage("Key");
20    Image kyllaAvain = LoadImage("kylla_avain");
21    Image eiAvain = LoadImage("ei_avain");
22    Image oviKuva = LoadImage("Ristikko");
23    Image piikkiKuva = LoadImage("Piikki");
24    Image checkpointKuvaKylla = LoadImage("checkpoint_kylla");
25    Image checkpointKuvaEi = LoadImage("checkpoint_ei");
26
27
28    DoubleMeter avaintenmaara;
29
30    SoundEffect maaliAani = LoadSoundEffect("maali");
31
32    PhysicsObject viimeinenCheckpoint;
33
34   
35   
36
37    public override void Begin()
38    {
39
40        //Window.Width = 800;
41        //Window.Height = 600;
42
43        IsFullScreen = true;
44
45        Gravity = new Vector(0, -1000);
46
47        LuoKentta();
48        LisaaNappaimet();
49        Asetamittari();
50
51       
52        Camera.Follow(pelaaja1);
53        Camera.ZoomFactor = 1.0;
54        Camera.StayInLevel = true;
55
56
57       
58    }
59
60    void Asetamittari()
61    {
62        avaintenmaara = new DoubleMeter(0);
63        avaintenmaara.MaxValue = 1;
64        avaintenmaara.UpperLimit += avaimetTaynna;
65
66        ProgressBar avainNaytto = new ProgressBar(150, 180);
67        avainNaytto.BindTo(avaintenmaara);
68        avainNaytto.X = Screen.Left + 85;
69        avainNaytto.Y = Screen.Bottom + 100;
70        avainNaytto.Image = LoadImage("ei_avain");
71        avainNaytto.BarImage = LoadImage("kylla_avain");
72        Add(avainNaytto);
73    }
74
75    void LuoKentta()
76    {
77        TileMap kentta = TileMap.FromLevelAsset("kentta1");
78        kentta.SetTileMethod('#', LisaaTaso);
79        kentta.SetTileMethod('O', LisaaOvi);
80        kentta.SetTileMethod('N', LisaaPelaaja);
81        kentta.SetTileMethod('A', LisaaAvain);
82        kentta.SetTileMethod('P', LisaaPiikki);
83        kentta.SetTileMethod('C', LisaaCheckpoint);
84        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
85        Level.CreateBorders();
86        Level.Background.CreateGradient(Color.White, Color.Brown);
87    }
88
89
90    void LisaaCheckpoint(Vector paikka, double leveys, double korkeus)
91    {
92        PhysicsObject checkpoint = PhysicsObject.CreateStaticObject(leveys, korkeus);
93        checkpoint.IgnoresCollisionResponse = true;
94        checkpoint.Position = paikka;
95        checkpoint.Image = checkpointKuvaEi;
96        checkpoint.Tag = "checkpoint";
97        Add(checkpoint);
98    }
99
100
101    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
102    {
103        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);     
104        piikki.Position = paikka;
105        piikki.Image = piikkiKuva;
106        piikki.Tag = "piikki";
107        Add(piikki);
108    }
109
110    void LisaaTaso(Vector paikka, double leveys, double korkeus)
111    {
112        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
113        taso.Position = paikka;
114        taso.Color = Color.Ruby;
115        Add(taso);
116    }
117
118    void LisaaOvi(Vector paikka, double leveys, double korkeus)
119    {
120       
121        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
122        // ovi.IgnoresCollisionResponse = true;
123        ovi.Position = paikka;
124        ovi.Image = oviKuva;
125        ovi.Tag = "ovi";
126        Add(ovi);
127    }
128
129    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
130    {
131        pelaaja1 = new PlatformCharacter(35, 35);
132        pelaaja1.Position = paikka;
133        pelaaja1.Mass = 4.0;
134        pelaaja1.Image = pelaajanKuva;
135        AddCollisionHandler(pelaaja1, "avain", TormaaAvaimeen);
136        AddCollisionHandler(pelaaja1, "ovi", ovenAvaus);
137        AddCollisionHandler(pelaaja1, "piikki", osuiPiikkiin);
138        AddCollisionHandler(pelaaja1, "checkpoint", checkpointAktivoitu);
139       
140        Add(pelaaja1);
141
142        Label avaimet = new Label(50.0, 50.0);
143        avaimet.Color = Color.Red;
144        avaimet.Text = "Avainten maara";
145        avaimet.X = 0.0;
146        avaimet.Y = 0.0;
147    }
148
149    void LisaaNappaimet()
150    {
151        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
152        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
153
154        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
155        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
156        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
157
158        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
159
160        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
161        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
162        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
163
164        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
165    }
166
167    void LisaaAvain(Vector paikka, double leveys, double korkeus)
168    {
169        PhysicsObject avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
170        avain.IgnoresCollisionResponse = true;
171        avain.Position = paikka;
172        avain.Image = avainKuva;
173        avain.Tag = "avain";
174        Add(avain);
175    }   
176
177    void Liikuta(PlatformCharacter hahmo, double nopeus)
178    {
179        hahmo.Walk(nopeus);
180    }
181
182    void Hyppaa(PlatformCharacter hahmo, double nopeus)
183    {
184        hahmo.Jump(nopeus);
185    }
186
187    void TormaaAvaimeen(PhysicsObject hahmo, PhysicsObject avain)
188    {
189        maaliAani.Play();
190        MessageDisplay.Add("Sait avaimen!");
191        avain.Destroy();
192
193
194        avaintenmaara.Value += 1;           
195    }
196
197    void osuiPiikkiin(PhysicsObject pelaaja1, PhysicsObject avain)
198    {
199        pelaaja1.Position = viimeinenCheckpoint.Position;
200    }
201
202    void checkpointAktivoitu(PhysicsObject pelaaja1, PhysicsObject checkpoint)
203    {
204        viimeinenCheckpoint = checkpoint;
205        viimeinenCheckpoint.Image = checkpointKuvaKylla;
206    }
207
208
209    void ovenAvaus(PhysicsObject pelaaja1, PhysicsObject ovi)
210    {
211       
212
213        if(avaintenmaara == 1)
214        {
215            MessageDisplay.Add("Avasit oven!");
216            avaintenmaara.Value -= 1;
217            ovi.Destroy();
218           
219        }
220    }
221
222
223
224    void avaimetTaynna()
225    {
226        MessageDisplay.Add("Sinulla on nyt yksi avain!");
227    }
228}
Note: See TracBrowser for help on using the repository browser.