source: 2011/23/hejumunt/RunRunRun/RunRunRun/RunRunRun/Peli.cs @ 1814

Revision 1814, 12.1 KB checked in by hejumunt, 9 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 Peli : PhysicsGame
10{
11    Image hahmonKuva = LoadImage("hahmo");
12    Image talonKuva = LoadImage("talo");
13    Image katon1Kuva = LoadImage("katto1");
14    Image ikkunanKuva = LoadImage("ikkuna");
15    Image katonKuva = LoadImage("katto");
16    Image katon2Kuva = LoadImage("katto2");
17    Image ovenKuva = LoadImage("ovi");
18    Image seinanKuva = LoadImage("seinä");
19    Image tangonKuva = LoadImage("lipputanko");
20    Image nupinKuva = LoadImage("nuppi");
21    Image roskanKuva = LoadImage("roska");
22    Image koydenKuva = LoadImage("köysi");
23    Image parvekkeenKuva = LoadImage("parveke");
24    Image puskanKuva = LoadImage("puska");
25    Image puunKuva = LoadImage("puurunko");
26    Image puun1Kuva = LoadImage("puulehdet");
27    Image kellonKuva = LoadImage("kello");
28    Image kodinKuva = LoadImage("koti");
29    Image taustaKuva = LoadImage("tausta1");
30    Shape hahmonMuoto;
31
32    PlatformCharacter hahmo;
33
34    DoubleMeter alaspainLaskuri;
35    int elämät = 3;
36    Timer ajastin = new Timer(); 
37    int kenttäNro = 1;
38    int kenttäMäärä = 2;
39
40    List<Label> valikonKohdat;
41
42    public override void Begin()
43    {
44        // TODO: Kirjoita ohjelmakoodisi tähän
45        Valikko();
46
47
48    }
49    void Valikko()
50    {
51        ClearAll();
52        valikonKohdat = new List<Label>();
53
54        ajastin.Stop();
55
56        // Miksi taustakuva ei näy kun pelistä tullaan pois escillä??
57        Level.Width = Screen.Width;
58        Level.Height = Screen.Height;
59
60        Camera.Reset();
61
62        //Level.Background.Size = new Vector(Screen.Width, Screen.Height);
63        Level.Background.Image = taustaKuva;
64        //Level.Background.Size = new Vector(Screen.Width, Screen.Height);
65        //Level.Background.FitToLevel();
66        Level.Background.Width = Screen.Width;
67        Level.Background.Height = Screen.Height;
68
69        Label kohta1 = new Label("Aloita uusi peli");
70        kohta1.Position = new Vector(0, 300);
71        valikonKohdat.Add(kohta1);
72
73        Label kohta2 = new Label("Lopeta");
74        kohta2.Position = new Vector(0, -300);
75        valikonKohdat.Add(kohta2);
76
77        foreach (Label valikonKohta in valikonKohdat)
78        {
79            Add(valikonKohta);
80        }
81
82        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
83        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
84
85        Mouse.IsCursorVisible = true;
86        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
87        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
88    }
89    void ValikossaLiikkuminen(AnalogState hiirenTila)
90    {
91        foreach (Label kohta in valikonKohdat)
92        {
93            if (Mouse.IsCursorOn(kohta))
94            {
95                kohta.TextColor = Color.Red;
96            }
97            else
98            {
99                kohta.TextColor = Color.Black;
100            }
101
102        }
103    }
104
105
106    void aikaloppui(Timer Sender)
107    {
108        alaspainLaskuri.Value -= 0.1;
109
110        if (alaspainLaskuri.Value <= 0)
111        {
112            MessageDisplay.Add("Aika loppui...");
113            Sender.Stop();
114            elämät--;
115            if (elämät > 0) { Uudestaan(); }
116            else
117            {
118                gameover();
119            }
120
121
122        }
123
124    }
125    void Lopeta()
126    {
127        Exit();
128    }
129
130    void gameover()
131    {
132        ClearAll();
133        Label teksti = new Label("Oho! Hävisit pelin! Paina ESC palataksesi alkuvalikkoon!");
134        teksti.TextColor = Color.Yellow;
135        Add( teksti );
136        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Palaaminen, null);
137       
138    }
139    void Palaaminen()
140    {
141        ClearAll();
142        Valikko(); // Taustakuva ei näy? ks. r53
143    }
144    void Uudestaan()
145    {
146        ClearGameObjects();
147        LuoKenttä();
148        alaspainLaskuri.Value = 15;
149        ajastin.Start();
150    }
151   
152
153    void LuoKenttä()
154    {
155        TileMap kentta = TileMap.FromFile("kentta" + kenttäNro + ".txt");
156        kentta['%'] = lisaaTanko;
157        kentta['#'] = lisaaSeina;
158        kentta['/'] = lisaaTaso;
159        kentta['='] = lisaaTaso;
160        //kentta['+'] = lisaaTaso;
161        kentta['K'] = lisaaKatto;
162        kentta['1'] = lisaaKatto1;
163        kentta['I'] = lisaaIkkuna;
164        kentta['2'] = lisaaKatto2;
165        kentta['O'] = lisaaOvi;
166        kentta['N'] = lisaaNuppi;
167        kentta['&'] = lisaaRoska;
168        kentta['/'] = lisaaKoysi;
169        kentta['?'] = lisaaParveke;
170        kentta['P'] = lisaaPuska;
171        kentta['0'] = lisaaPuu;
172        kentta['9'] = lisaaPuu1;
173        kentta['E'] = lisaaKello;
174        kentta['M'] = lisaaKoti;
175        kentta.Insert(40.0, 40.0);
176
177        hahmo = new PlatformCharacter(40, 40, hahmonMuoto);
178        hahmo.Image = hahmonKuva;
179        hahmo.X = -2300.0;
180        hahmo.Y = -225.0;
181        AddCollisionHandler(hahmo, kasittelehahmontormays);
182
183        Add(hahmo);
184
185        //PhysicsObject alaReuna = Level.CreateBottomBorder(1.0, true);
186        Gravity = new Vector(0.0, -800.0);
187        //Level.CreateBorders();
188        Camera.Follow(hahmo);
189        Camera.StayInLevel = true;
190        //Timer ajastin = new Timer();
191        //ajastin.Interval = 0.01;
192        //ajastin.Trigger += liikutaHahmoa
193        //ajastin.Start();
194    }
195    void kasittelehahmontormays(PhysicsObject hahmo, PhysicsObject kohde)
196    {
197        if (kohde.Tag.ToString() == "kello")
198        {
199            kohde.Destroy();
200            alaspainLaskuri.Value = alaspainLaskuri.Value + 10;
201        }
202        if (kohde.Tag.ToString() == "koti")
203        {
204            ajastin.Stop();
205            kenttaloppui();
206        }
207
208    }
209   
210    void kenttaloppui()
211    {
212        kenttäNro++;
213        ClearAll();
214        if (kenttäNro > kenttäMäärä)
215        {
216            ClearAll();
217            SeuraavaKentta();
218        }
219        else
220        {
221            ClearAll();
222            Label teksti = new Label("Wuuhuu!! Voitit tason! Paina ENTER päästaksesi seuraavaan tai ESC poistuaksesi alkuvalikkoon");
223            teksti.TextColor = Color.Yellow;
224            Add(teksti);
225            Keyboard.Listen(Key.Enter, ButtonState.Pressed, SeuraavaKentta, null);
226            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Palaaminen, null);
227            // voittoteksti
228            // 3 sekunnin paasta SeuraavaKentta();
229            // Timer.SingleShot...
230        }
231    }
232    void SeuraavaKentta()
233    {
234       
235        ClearAll();
236       
237        if (kenttäNro > kenttäMäärä)
238        {
239            ClearAll();
240            Label teksti = new Label("Onneksi olkoon! Olet voittanut pelin! Paina ESC palataksesi valikkoon");
241            teksti.TextColor = Color.Yellow;
242            Add(teksti);
243            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, null);
244            return;
245
246        }
247        LuoKenttä();
248        AsetaOhjaimet();
249
250        alaspainLaskuri = new DoubleMeter(15);
251
252        ajastin = new Timer();
253        ajastin.Interval = 0.1;
254        ajastin.Trigger += aikaloppui;
255        ajastin.Start();
256
257        Label aikaNaytto = new Label();
258        aikaNaytto.TextColor = Color.Black;
259        aikaNaytto.BindTo(alaspainLaskuri);
260        Add(aikaNaytto);
261
262        Mouse.IsCursorVisible = false;
263
264    }
265
266    PhysicsObject lisaaKoti()
267    {
268        PhysicsObject koti = PhysicsObject.CreateStaticObject(80, 200);
269        koti.Image = kodinKuva;
270        koti.Tag = "koti";
271        return koti;
272    }
273    PhysicsObject lisaaKello()
274    {
275        PhysicsObject kello = PhysicsObject.CreateStaticObject(40, 40);
276        kello.Image = kellonKuva;
277        kello.Tag = "kello";
278        return kello;
279    }
280    PhysicsObject lisaaTaso()
281    {
282        PhysicsObject taso = PhysicsObject.CreateStaticObject(40.0, 40.0);
283        taso.Color = Color.Green;
284        return taso;
285    }
286    PhysicsObject lisaaKatto1()
287    {
288        PhysicsObject katto1 = PhysicsObject.CreateStaticObject(40.0, 40.0);
289        katto1.Image = katon1Kuva;
290        return katto1;
291    }
292    PhysicsObject lisaaKatto2()
293    {
294        PhysicsObject katto2 = PhysicsObject.CreateStaticObject(40.0, 40.0);
295        katto2.Image = katon2Kuva;
296        return katto2;
297    }
298    PhysicsObject lisaaIkkuna()
299    {
300        PhysicsObject ikkuna = PhysicsObject.CreateStaticObject(40.0, 40.0);
301        ikkuna.Image = ikkunanKuva;
302        return ikkuna;
303    }
304    PhysicsObject lisaaSeina()
305    {
306        PhysicsObject seina = PhysicsObject.CreateStaticObject(40.0, 40.0);
307        seina.Image = seinanKuva;
308        return seina;
309    }
310    PhysicsObject lisaaTalo()
311    {
312        PhysicsObject talo = PhysicsObject.CreateStaticObject(40.0, 40.0);
313        talo.Image = talonKuva;
314        return talo;
315    }
316    PhysicsObject lisaaTanko()
317    {
318        PhysicsObject tanko = PhysicsObject.CreateStaticObject(20.0, 40.0);
319        tanko.Image = tangonKuva;
320        return tanko;
321    }
322    PhysicsObject lisaaKatto()
323    {
324        PhysicsObject katto = PhysicsObject.CreateStaticObject(40.0, 40.0);
325        katto.Image = katonKuva;
326        return katto;
327    }
328    PhysicsObject lisaaOvi()
329    {
330        PhysicsObject ovi = PhysicsObject.CreateStaticObject(40.0, 40.0);
331        ovi.Image = ovenKuva;
332        return ovi;
333    }
334    PhysicsObject lisaaNuppi()
335    {
336        PhysicsObject nuppi = PhysicsObject.CreateStaticObject(40.0, 40.0);
337        nuppi.Image = nupinKuva;
338        return nuppi;
339    }
340    PhysicsObject lisaaRoska()
341    {
342        PhysicsObject roska = PhysicsObject.CreateStaticObject(40.0, 40.0);
343        roska.Image = roskanKuva;
344        return roska;
345    }
346    PhysicsObject lisaaKoysi()
347    {
348        PhysicsObject koysi = PhysicsObject.CreateStaticObject(10.0, 40.0);
349        koysi.Image = koydenKuva;
350        return koysi;
351    }
352    PhysicsObject lisaaParveke()
353    {
354        PhysicsObject parveke = PhysicsObject.CreateStaticObject(40.0, 40.0);
355        parveke.Image = parvekkeenKuva;
356        return parveke;
357    }
358    void AloitaPeli()
359    {
360        ClearAll();
361        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
362        hahmonMuoto = Shape.FromImage(hahmonKuva);
363
364        kenttäNro = 1;
365
366        LuoKenttä();
367        AsetaOhjaimet();
368        elämät = 3;
369        alaspainLaskuri = new DoubleMeter(15);
370
371       
372        ajastin.Interval = 0.1;
373        ajastin.Trigger += aikaloppui;
374        ajastin.Start();
375
376        Label aikaNaytto = new Label();
377        aikaNaytto.TextColor = Color.Black;
378        aikaNaytto.BindTo(alaspainLaskuri);
379        Add(aikaNaytto);
380
381        Mouse.IsCursorVisible = false;
382
383    }
384    PhysicsObject lisaaPuska()
385    {
386        PhysicsObject puska = PhysicsObject.CreateStaticObject(40.0, 40.0);
387        puska.Image = puskanKuva;
388        return puska;
389    }
390    PhysicsObject lisaaPuu()
391    {
392        PhysicsObject puu = PhysicsObject.CreateStaticObject(40.0, 40.0);
393        puu.Image = puunKuva;
394        return puu;
395    }
396    PhysicsObject lisaaPuu1()
397    {
398        PhysicsObject puu1 = PhysicsObject.CreateStaticObject(40.0, 40.0);
399        puu1.Image = puun1Kuva;
400        return puu1;
401    }
402    void AsetaOhjaimet()
403    {
404        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Paina oikealle nuolta niin hahmo liikkuu oikealle", new Vector(10000.0, 0.0));
405        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Paina nuolta vasemmalle niin hahmo liikkuu vasemmalle", new Vector(-10000.0, 0.0));
406        Keyboard.Listen(Key.Space, ButtonState.Pressed, LiikutaPelaajaa, "Paina SPACE niin hahmo hyppää");
407        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
408        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu valikkoon");
409
410    }
411    void AsetaNopeus(Vector vektori)
412    {
413        hahmo.Push(vektori);
414    }
415
416    void LiikutaPelaajaa()
417    {
418        hahmo.Jump(1000.0);
419    }
420
421}
Note: See TracBrowser for help on using the repository browser.