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

Revision 6939, 8.3 KB checked in by misakana, 8 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 = 350;
12    const double hyppyNopeus = 700;
13    const int 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    Image ovi2Kuva = LoadImage("Ristikko2");
27    Image Avaimeton2Kuva = LoadImage("Avaimeton2");
28    Image Avain2Kuva = LoadImage("Avain2");
29
30    DoubleMeter avaintenmaara;
31
32    IntMeter kuolemat;
33
34    SoundEffect maaliAani = LoadSoundEffect("maali");
35
36    PhysicsObject viimeinenCheckpoint;
37
38   
39
40   
41   
42
43    public override void Begin()
44    {
45
46        //Window.Width = 800;
47        //Window.Height = 600;
48
49        IsFullScreen = true;
50
51        Gravity = new Vector(0, -1000);
52
53        LuoKentta();
54        LisaaNappaimet();
55        Asetamittari();
56        AsetaLaskin();
57
58       
59        Camera.Follow(pelaaja1);
60        Camera.ZoomFactor = 1.0;
61        Camera.StayInLevel = true;
62
63
64       
65    }
66
67    void AsetaLaskin()
68    {
69        kuolemat = new IntMeter(0);
70
71        Label tekstikentta = new Label(150, 180);       
72        tekstikentta.BindTo(kuolemat);
73        tekstikentta.X = Screen.Right - 150;
74        tekstikentta.Y = Screen.Top - 100;
75        tekstikentta.TextColor = Color.Black;
76        Add(tekstikentta);
77    }
78
79    void Asetamittari()
80    {
81        avaintenmaara = new DoubleMeter(0);
82        avaintenmaara.MaxValue = 2;
83        avaintenmaara.UpperLimit += avaimetTaynna;
84
85        ProgressBar avainNaytto = new ProgressBar(100, 100);
86        avainNaytto.BindTo(avaintenmaara);
87        avainNaytto.X = Screen.Left + 200;
88        avainNaytto.Y = Screen.Bottom + 100;
89        avainNaytto.Image = LoadImage("Avaimeton2");
90        avainNaytto.BarImage = LoadImage("Avain2");
91        Add(avainNaytto);
92    }
93
94    void LuoKentta()
95    {
96        TileMap kentta = TileMap.FromLevelAsset("kentta1");
97        kentta.SetTileMethod('#', LisaaTaso);
98        kentta.SetTileMethod('O', LisaaOvi);
99        kentta.SetTileMethod('N', LisaaPelaaja);
100        kentta.SetTileMethod('A', LisaaAvain);
101        kentta.SetTileMethod('P', LisaaPiikki);
102        kentta.SetTileMethod('C', LisaaCheckpoint);
103        kentta.SetTileMethod('2', LisaaOvi2);
104        kentta.Execute(Koko, Koko);
105        Level.CreateBorders();
106        Level.Background.CreateGradient(Color.White, Color.White);
107
108        PhysicsObject liikkuva1 = new PhysicsObject(200.0, 40.0);
109    }
110
111    void LisaaOvi2(Vector paikka, double leveys, double korkeus)
112    {
113        PhysicsObject ovi2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
114        ovi2.Position = paikka;
115        ovi2.Image = ovi2Kuva;
116        ovi2.Tag = "ovi2";
117        Add(ovi2);
118    }
119
120
121    void LisaaCheckpoint(Vector paikka, double leveys, double korkeus)
122
123    {
124        PhysicsObject checkpoint = PhysicsObject.CreateStaticObject(leveys, korkeus);
125        checkpoint.IgnoresCollisionResponse = true;
126        checkpoint.Position = paikka;
127        checkpoint.Image = checkpointKuvaEi;
128        checkpoint.Tag = "checkpoint";
129        Add(checkpoint);
130    }
131
132
133    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
134    {
135        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);     
136        piikki.Position = paikka;
137        piikki.Image = piikkiKuva;
138        piikki.Tag = "piikki";
139        Add(piikki);
140    }
141
142    void LisaaTaso(Vector paikka, double leveys, double korkeus)
143    {
144        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
145        taso.Position = paikka;
146        taso.Color = Color.DarkRed;
147        Add(taso);
148    }
149
150    void LisaaOvi(Vector paikka, double leveys, double korkeus)
151    {
152       
153        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
154        ovi.Position = paikka;
155        ovi.Image = oviKuva;
156        ovi.Tag = "ovi";
157        Add(ovi);
158    }
159
160    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
161    {
162        pelaaja1 = new PlatformCharacter(35, 35);
163        pelaaja1.Position = paikka;
164        pelaaja1.Mass = 4.0;
165        pelaaja1.Image = pelaajanKuva;
166        AddCollisionHandler(pelaaja1, "avain", TormaaAvaimeen);
167        AddCollisionHandler(pelaaja1, "ovi", ovenAvaus);
168        AddCollisionHandler(pelaaja1, "ovi2", ovi2Avaus);
169        AddCollisionHandler(pelaaja1, "piikki", osuiPiikkiin);
170        AddCollisionHandler(pelaaja1, "checkpoint", checkpointAktivoitu);
171        pelaaja1.IgnoresCollisionResponse = false;
172        Add(pelaaja1);
173
174        Label avaimet = new Label(50.0, 50.0);
175        avaimet.Color = Color.Red;
176        avaimet.Text = "Avainten maara";
177        avaimet.X = 0.0;
178        avaimet.Y = 0.0;
179    }
180
181    void LisaaNappaimet()
182    {
183        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
184        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
185        Keyboard.Listen(Key.R, ButtonState.Pressed, ResetToCheckpoint , "Palaa edelliseen checkpointtiin");
186
187        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
188        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
189        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
190
191        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
192
193        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
194        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
195        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
196
197        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
198    }
199
200    void ResetToCheckpoint()
201    {
202        pelaaja1.Position = viimeinenCheckpoint.Position;
203    }
204
205    void LisaaAvain(Vector paikka, double leveys, double korkeus)
206    {
207        PhysicsObject avain = PhysicsObject.CreateStaticObject(leveys, korkeus);
208        avain.IgnoresCollisionResponse = true;
209        avain.Position = paikka;
210        avain.Image = avainKuva;
211        avain.Tag = "avain";
212        Add(avain);
213    }   
214
215    void Liikuta(PlatformCharacter hahmo, double nopeus)
216    {
217        hahmo.Walk(nopeus);
218    }
219
220    void Hyppaa(PlatformCharacter hahmo, double nopeus)
221    {
222        hahmo.Jump(nopeus);
223    }
224
225    void TormaaAvaimeen(PhysicsObject hahmo, PhysicsObject avain)
226    {
227       
228            maaliAani.Play();
229            MessageDisplay.Add("Sait avaimen!");
230            avain.Destroy();
231
232            avaintenmaara.Value += 1;
233    }
234
235    void osuiPiikkiin(PhysicsObject pelaaja1, PhysicsObject avain)
236    {
237        pelaaja1.Position = viimeinenCheckpoint.Position;
238
239        kuolemat.Value += 1;
240    }
241
242    void checkpointAktivoitu(PhysicsObject pelaaja1, PhysicsObject checkpoint)
243    {
244        viimeinenCheckpoint = checkpoint;
245        viimeinenCheckpoint.Image = checkpointKuvaKylla;
246        MessageDisplay.Add("Saavutit checkpointin!");
247        checkpoint.Tag = "aktivoituCheckpoint";
248    }
249
250
251
252    void ovi2Avaus(PhysicsObject pelaaja1, PhysicsObject ovi2)
253    {
254        if (avaintenmaara > 1)
255        {
256            MessageDisplay.Add("Avasit kultaisen oven");
257            avaintenmaara.Value -= 2;
258            ovi2.Destroy();
259        }
260    }
261   
262    void ovenAvaus(PhysicsObject pelaaja1, PhysicsObject ovi)
263    {
264        if(avaintenmaara > 0)
265        {
266         MessageDisplay.Add("Avasit oven");
267         avaintenmaara.Value -= 1;
268         ovi.Destroy();
269        }
270
271    }   
272
273
274
275    void avaimetTaynna()
276    {
277        MessageDisplay.Add("Olet saavuttanut avainten maksimimäärän!");
278    }
279}
Note: See TracBrowser for help on using the repository browser.