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

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