source: 2011/23/mianaure/Oma peli/Tasohyppelypeli4/Tasohyppelypeli4/Peli.cs @ 1829

Revision 1829, 10.3 KB checked in by anlakane, 10 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 System.Collections.Generic;
9
10
11public class Peli : PhysicsGame
12
13{
14
15    const double nopeus = 200;
16    const double hyppyNopeus = 1000;
17    const int RUUDUN_KOKO = 40;
18
19    PhysicsObject pelaaja1;
20
21    Image pelaajanKuva = LoadImage("norsu");
22
23    Image pelaajanKuva3 = LoadImage("norsu3");
24
25    Image tahtiKuva = LoadImage("tahti");
26
27    int tahtienmaara = 0;
28    int mpainovoima = 5;
29    int tasonro = 1;
30    double aika = 30;
31
32    SoundEffect maaliAani = LoadSoundEffect("maali");
33
34
35
36    DoubleMeter alaspainLaskuri;
37
38
39
40    public override void Begin()
41    {
42
43        ClearAll();
44        tahtienmaara = 0;
45        MessageDisplay.Add("Olet kerännyt " + tahtienmaara + " / 3 tähteä");
46        MessageDisplay.Add("Painovoiman muutoksia jäljellä " + mpainovoima);
47        Gravity = new Vector(0, -1000);
48        minne = "alas";
49        luoKentta();
50        lisaaNappaimet();
51        Camera.Follow(pelaaja1);
52        Camera.ZoomFactor = 1.2;
53        Camera.StayInLevel = true;
54
55        alaspainLaskuri = new DoubleMeter(aika);
56
57        Timer aikaLaskuri = new Timer();
58        aikaLaskuri.Interval = 0.1;
59        aikaLaskuri.Trigger += LaskeAlaspain;
60        aikaLaskuri.Start();
61
62        Label aikaNaytto = new Label();
63        aikaNaytto.TextColor = Color.Black;
64        aikaNaytto.DecimalPlaces = 1;
65        aikaNaytto.BindTo(alaspainLaskuri);
66        Add(aikaNaytto);
67    }
68
69
70
71    void uusialku()
72    {
73        ClearAll();
74        tahtienmaara = 0;
75        MessageDisplay.Add("Olet kerännyt " + tahtienmaara + " / 3 tähteä");
76        MessageDisplay.Add("Painovoiman muutoksia jäljellä " + mpainovoima);
77        Gravity = new Vector(0, -1000);
78        minne = "alas";
79        luoKentta();
80        lisaaNappaimet();
81        Camera.Follow(pelaaja1);
82        Camera.ZoomFactor = 1.2;
83        Camera.StayInLevel = true;
84
85        Label aikaNaytto = new Label();
86        aikaNaytto.TextColor = Color.Black;
87        aikaNaytto.DecimalPlaces = 1;
88        aikaNaytto.BindTo(alaspainLaskuri);
89        Add(aikaNaytto);
90    }
91
92    void LaskeAlaspain(Timer timer)
93    {
94        alaspainLaskuri.Value -= 0.1;
95       
96
97        if (alaspainLaskuri.Value <= 0)
98        {
99            MessageDisplay.Add("Aika loppui...");
100            timer.Stop();
101       
102            // täydennä mitä tapahtuu, kun aika loppuu
103        }
104    }
105
106
107    void luoKentta()
108    {
109        TileMap kentta = TileMap.FromFile("kentta1.txt");
110        kentta['#'] = lisaaTaso;
111        kentta['*'] = lisaaTahti;
112        kentta['N'] = lisaaPelaaja;
113        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
114        //Level.CreateBorders();
115        Level.Background.CreateGradient(Color.White, Color.LightGray);
116        AddCollisionHandler(pelaaja1, osuTahteen);
117    }
118
119    PhysicsObject lisaaTaso()
120    {
121        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
122        taso.Color = Color.DarkGray;
123        return taso;
124    }
125
126    PhysicsObject lisaaTahti()
127    {
128        PhysicsObject tahti = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
129        tahti.Image = tahtiKuva;
130        tahti.Tag = "tahti";
131        return tahti;
132    }
133
134    PhysicsObject lisaaPelaaja()
135    {
136        pelaaja1 = new PhysicsObject(40, 40, Shape.Circle);
137        pelaaja1.Mass = 4.0;
138        pelaaja1.Image = pelaajanKuva;
139        pelaaja1.Restitution = 0.5;
140        pelaaja1.CanRotate = false;
141        return pelaaja1;
142    }
143
144    void lisaaNappaimet()
145    {
146
147        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
148        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
149        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
150        Keyboard.Listen(Key.Space, ButtonState.Pressed, painov, "Painovoiman muutos");
151        Keyboard.Listen(Key.Enter, ButtonState.Pressed, ulosruudusta, "Aloita taso alusta");
152
153        //ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
154        //ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
155        //ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
156        //ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
157    }
158
159    void liikuta(PhysicsObject hahmo, double nopeus)
160    {
161        //hahmo.Walk(nopeus);
162
163        if (hahmo.Velocity.Magnitude < 200)
164        {
165            hahmo.Hit(new Vector(nopeus, 0));
166        }
167
168    }
169    void ulosruudusta()
170    {
171        alaspainLaskuri.Value -= 10;
172        if (tasonro == 1)
173        {
174            uusialku();
175        }
176        if (tasonro == 2)
177        {
178            taso2();
179        }
180        if (tasonro == 3)
181        {
182            taso3();
183        }
184        if (tasonro == 4)
185        {
186            taso4();
187        }
188
189    }
190
191
192
193
194
195
196
197    void osuTahteen(PhysicsObject hahmo, PhysicsObject kohde)
198    {
199        if (kohde.Tag.ToString() == "tahti")
200        {
201            maaliAani.Play();
202            tahtienmaara++;
203            MessageDisplay.Add("Olet kerännyt " + tahtienmaara + " / 3 tähteä");
204            alaspainLaskuri.Value += 10;
205            kohde.Destroy();
206            if (tahtienmaara == 3)
207            {
208                MessageDisplay.Add("Selvisit tason!!! ");
209                aika = alaspainLaskuri.Value;
210                alaspainLaskuri.Value += 11.5;
211                if (tasonro == 1)
212                {
213                    Timer.SingleShot(1.5, taso2);
214                }
215                if (tasonro == 2)
216                {
217                    Timer.SingleShot(1.5, taso3);
218                }
219                if (tasonro == 3)
220                {
221                    Timer.SingleShot(1.5, taso4);
222                }
223               
224                tasonro++;
225            }
226        }
227    }
228
229
230    void painov()
231    {
232        if (mpainovoima > 0)
233        {
234            mpainovoima--;
235            MessageDisplay.Add("Painovoiman muutoksia jäljellä " + mpainovoima);
236            if (minne == "alas")
237            {
238                Gravity = new Vector(0, 0);
239                Gravity = new Vector(0, 1000);
240                minne = "ylös";
241                pelaaja1.Image = pelaajanKuva3;
242
243            }
244            else if (minne == "ylös")
245            {
246                Gravity = new Vector(0, 0);
247                Gravity = new Vector(0, -1000);
248                minne = "alas";
249                pelaaja1.Image = pelaajanKuva;
250
251            }
252        }
253    }
254
255
256
257
258
259    void taso2()
260    {
261
262        ClearAll();
263        MessageDisplay.TextColor = Color.Black;
264        tahtienmaara = 0;
265        mpainovoima = 5;
266        TileMap kentta = TileMap.FromFile("kentta2.txt");
267        kentta['#'] = lisaaTaso;
268        kentta['*'] = lisaaTahti;
269        kentta['N'] = lisaaPelaaja;
270        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
271        //Level.CreateBorders();
272        Level.Background.CreateGradient(Color.White, Color.LightGray);
273
274        MessageDisplay.Add("Olet kerännyt " + tahtienmaara + " / 3 tähteä");
275        MessageDisplay.Add("Painovoiman muutoksia jäljellä " + mpainovoima);
276        Gravity = new Vector(0, -1000);
277        minne = "alas";
278        lisaaNappaimet();
279        AddCollisionHandler(pelaaja1, osuTahteen);
280        Camera.Follow(pelaaja1);
281        Camera.ZoomFactor = 1.2;
282        Camera.StayInLevel = true;
283
284        Label aikaNaytto = new Label();
285        aikaNaytto.TextColor = Color.Black;
286        aikaNaytto.DecimalPlaces = 1;
287        aikaNaytto.BindTo(alaspainLaskuri);
288        Add(aikaNaytto);
289
290
291
292
293    }
294
295
296    void taso3()
297    {
298
299        ClearAll();
300
301        tahtienmaara = 0;
302        mpainovoima = 6;
303        TileMap kentta = TileMap.FromFile("kentta3.txt");
304        kentta['#'] = lisaaTaso;
305        kentta['*'] = lisaaTahti;
306        kentta['N'] = lisaaPelaaja;
307        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
308        //Level.CreateBorders();
309        Level.Background.CreateGradient(Color.White, Color.LightGray);
310        MessageDisplay.Add("Olet kerännyt " + tahtienmaara + " / 3 tähteä");
311        MessageDisplay.Add("Painovoiman muutoksia jäljellä " + mpainovoima);
312        lisaaNappaimet();
313        AddCollisionHandler(pelaaja1, osuTahteen);
314        Camera.Follow(pelaaja1);
315        Camera.ZoomFactor = 1.2;
316        Camera.StayInLevel = true;
317        Gravity = new Vector(0, -1000);
318        minne = "alas";
319        Label aikaNaytto = new Label();
320        aikaNaytto.TextColor = Color.Black;
321        aikaNaytto.DecimalPlaces = 1;
322        aikaNaytto.BindTo(alaspainLaskuri);
323        Add(aikaNaytto);
324
325    }
326
327    void taso4()
328    {
329
330        ClearAll();
331
332        tahtienmaara = 0;
333        mpainovoima = 6;
334        TileMap kentta = TileMap.FromFile("kentta4.txt");
335        kentta['#'] = lisaaTaso;
336        kentta['*'] = lisaaTahti;
337        kentta['N'] = lisaaPelaaja;
338        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
339        //Level.CreateBorders();
340        Level.Background.CreateGradient(Color.White, Color.LightGray);
341        MessageDisplay.Add("Olet kerännyt " + tahtienmaara + " / 3 tähteä");
342        MessageDisplay.Add("Painovoiman muutoksia jäljellä " + mpainovoima);
343        lisaaNappaimet();
344        AddCollisionHandler(pelaaja1, osuTahteen);
345        Camera.Follow(pelaaja1);
346        Camera.ZoomFactor = 1.2;
347        Camera.StayInLevel = true;
348        Gravity = new Vector(0, -1000);
349        minne = "alas";
350        Label aikaNaytto = new Label();
351        aikaNaytto.TextColor = Color.Black;
352        aikaNaytto.DecimalPlaces = 1;
353        aikaNaytto.BindTo(alaspainLaskuri);
354        Add(aikaNaytto);
355
356    }
357    public string minne { get; set; }
358
359    public object taso { get; set; }
360
361    protected override void Update(Time time)
362    {
363
364        if (pelaaja1.X < Level.Left || pelaaja1.X > Level.Right || pelaaja1.Y < Level.Bottom || pelaaja1.Y > Level.Top)
365        {
366            ulosruudusta();
367        }
368        base.Update(time);
369    }
370}
Note: See TracBrowser for help on using the repository browser.