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

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