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

Revision 1770, 9.6 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    Shape hahmonMuoto;
29
30    PlatformCharacter hahmo;
31
32    DoubleMeter alaspainLaskuri;
33    int elämät = 3;
34    Timer ajastin;
35    PhysicsObject kello;
36
37    List<Label> valikonKohdat;
38
39    public override void Begin()
40    {
41        // TODO: Kirjoita ohjelmakoodisi tähän
42        Valikko();
43
44
45    }
46    void Valikko()
47    {
48        ClearAll();
49        valikonKohdat = new List<Label>();
50
51        Label kohta1 = new Label("Aloita uusi peli");
52        kohta1.Position = new Vector(0, 40);
53        valikonKohdat.Add(kohta1);
54
55        Label kohta2 = new Label("Lopeta");
56        kohta2.Position = new Vector(0, -40);
57        valikonKohdat.Add(kohta2);
58
59        foreach (Label valikonKohta in valikonKohdat)
60        {
61            Add(valikonKohta);
62        }
63
64        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
65        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
66
67        Mouse.IsCursorVisible = true;
68        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
69        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
70    }
71    void ValikossaLiikkuminen(AnalogState hiirenTila)
72    {
73        foreach (Label kohta in valikonKohdat)
74        {
75            if (Mouse.IsCursorOn(kohta))
76            {
77                kohta.TextColor = Color.Red;
78            }
79            else
80            {
81                kohta.TextColor = Color.Black;
82            }
83
84        }
85    }
86
87
88    void aikaloppui(Timer Sender)
89    {
90        alaspainLaskuri.Value -= 0.1;
91
92        if (alaspainLaskuri.Value <= 0)
93        {
94            MessageDisplay.Add("Aika loppui...");
95            Sender.Stop();
96            elämät--;
97            if (elämät > 0) { Uudestaan(); }
98            else
99            {
100                gameover();
101            }
102
103
104        }
105
106    }
107    void Lopeta()
108    {
109        Exit();
110    }
111
112    void gameover()
113    {
114        ClearAll();
115        Label teksti = new Label("Oho! Hävisit pelin! Paina ESC palataksesi alkuvalikkoon!");
116        teksti.TextColor = Color.Yellow;
117        Add( teksti );
118        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Palaaminen, null);
119       
120    }
121    void Palaaminen()
122    {
123        ClearAll();
124        Valikko();
125    }
126    void Uudestaan()
127    {
128        ClearGameObjects();
129        LuoKenttä();
130        alaspainLaskuri.Value = 700;
131        ajastin.Start();
132    }
133   
134    void LuoKenttä()
135    {
136        TileMap kentta = TileMap.FromFile("kentta.txt");
137        kentta['%'] = lisaaTanko;
138        kentta['#'] = lisaaSeina;
139        kentta['/'] = lisaaTaso;
140        kentta['='] = lisaaTaso;
141        //kentta['+'] = lisaaTaso;
142        kentta['K'] = lisaaKatto;
143        kentta['1'] = lisaaKatto1;
144        kentta['I'] = lisaaIkkuna;
145        kentta['2'] = lisaaKatto2;
146        kentta['O'] = lisaaOvi;
147        kentta['N'] = lisaaNuppi;
148        kentta['&'] = lisaaRoska;
149        kentta['/'] = lisaaKoysi;
150        kentta['?'] = lisaaParveke;
151        kentta['P'] = lisaaPuska;
152        kentta['0'] = lisaaPuu;
153        kentta['9'] = lisaaPuu1;
154        kentta['E'] = lisaaKello;
155        kentta.Insert(40.0, 40.0);
156
157        hahmo = new PlatformCharacter(40, 40, hahmonMuoto);
158        hahmo.Image = hahmonKuva;
159        hahmo.X = -2300.0;
160        hahmo.Y = -225.0;
161        AddCollisionHandler(hahmo, kasittelehahmontormays);
162
163        Add(hahmo);
164
165        //PhysicsObject alaReuna = Level.CreateBottomBorder(1.0, true);
166        Gravity = new Vector(0.0, -800.0);
167        //Level.CreateBorders();
168        Camera.Follow(hahmo);
169        Camera.StayInLevel = true;
170        //Timer ajastin = new Timer();
171        //ajastin.Interval = 0.01;
172        //ajastin.Trigger += liikutaHahmoa
173        //ajastin.Start();
174    }
175    void kasittelehahmontormays(PhysicsObject hahmo, PhysicsObject kohde)
176    {
177        if (kohde.Tag.ToString() == "kello")
178        {
179            kohde.Destroy();
180        }
181    }
182    PhysicsObject lisaaKello()
183    {
184        PhysicsObject kello = PhysicsObject.CreateStaticObject(40, 40);
185        kello.Image = kellonKuva;
186        kello.Tag = "kello";
187        return kello;
188    }
189    void osuKelloon(PhysicsObject hahmo, PhysicsObject kohde)
190    {
191        if (kohde.Tag.ToString() == "kello")
192        {
193            kohde.Destroy();
194        }
195    }
196    PhysicsObject lisaaTaso()
197    {
198        PhysicsObject taso = PhysicsObject.CreateStaticObject(40.0, 40.0);
199        taso.Color = Color.Green;
200        return taso;
201    }
202    PhysicsObject lisaaKatto1()
203    {
204        PhysicsObject katto1 = PhysicsObject.CreateStaticObject(40.0, 40.0);
205        katto1.Image = katon1Kuva;
206        return katto1;
207    }
208    PhysicsObject lisaaKatto2()
209    {
210        PhysicsObject katto2 = PhysicsObject.CreateStaticObject(40.0, 40.0);
211        katto2.Image = katon2Kuva;
212        return katto2;
213    }
214    PhysicsObject lisaaIkkuna()
215    {
216        PhysicsObject ikkuna = PhysicsObject.CreateStaticObject(40.0, 40.0);
217        ikkuna.Image = ikkunanKuva;
218        return ikkuna;
219    }
220    PhysicsObject lisaaSeina()
221    {
222        PhysicsObject seina = PhysicsObject.CreateStaticObject(40.0, 40.0);
223        seina.Image = seinanKuva;
224        return seina;
225    }
226    PhysicsObject lisaaTalo()
227    {
228        PhysicsObject talo = PhysicsObject.CreateStaticObject(40.0, 40.0);
229        talo.Image = talonKuva;
230        return talo;
231    }
232    PhysicsObject lisaaTanko()
233    {
234        PhysicsObject tanko = PhysicsObject.CreateStaticObject(20.0, 40.0);
235        tanko.Image = tangonKuva;
236        return tanko;
237    }
238    PhysicsObject lisaaKatto()
239    {
240        PhysicsObject katto = PhysicsObject.CreateStaticObject(40.0, 40.0);
241        katto.Image = katonKuva;
242        return katto;
243    }
244    PhysicsObject lisaaOvi()
245    {
246        PhysicsObject ovi = PhysicsObject.CreateStaticObject(40.0, 40.0);
247        ovi.Image = ovenKuva;
248        return ovi;
249    }
250    PhysicsObject lisaaNuppi()
251    {
252        PhysicsObject nuppi = PhysicsObject.CreateStaticObject(40.0, 40.0);
253        nuppi.Image = nupinKuva;
254        return nuppi;
255    }
256    PhysicsObject lisaaRoska()
257    {
258        PhysicsObject roska = PhysicsObject.CreateStaticObject(40.0, 40.0);
259        roska.Image = roskanKuva;
260        return roska;
261    }
262    PhysicsObject lisaaKoysi()
263    {
264        PhysicsObject koysi = PhysicsObject.CreateStaticObject(10.0, 40.0);
265        koysi.Image = koydenKuva;
266        return koysi;
267    }
268    PhysicsObject lisaaParveke()
269    {
270        PhysicsObject parveke = PhysicsObject.CreateStaticObject(40.0, 40.0);
271        parveke.Image = parvekkeenKuva;
272        return parveke;
273    }
274    void AloitaPeli()
275    {
276        ClearAll();
277        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
278        hahmonMuoto = Shape.FromImage(hahmonKuva);
279
280        LuoKenttä();
281        AsetaOhjaimet();
282        elämät = 3;
283        alaspainLaskuri = new DoubleMeter(700);
284
285        ajastin = new Timer();
286        ajastin.Interval = 0.1;
287        ajastin.Trigger += aikaloppui;
288        ajastin.Start();
289
290        Label aikaNaytto = new Label();
291        aikaNaytto.TextColor = Color.Black;
292        aikaNaytto.BindTo(alaspainLaskuri);
293        Add(aikaNaytto);
294
295    }
296    PhysicsObject lisaaPuska()
297    {
298        PhysicsObject puska = PhysicsObject.CreateStaticObject(40.0, 40.0);
299        puska.Image = puskanKuva;
300        return puska;
301    }
302    PhysicsObject lisaaPuu()
303    {
304        PhysicsObject puu = PhysicsObject.CreateStaticObject(40.0, 40.0);
305        puu.Image = puunKuva;
306        return puu;
307    }
308    PhysicsObject lisaaPuu1()
309    {
310        PhysicsObject puu1 = PhysicsObject.CreateStaticObject(40.0, 40.0);
311        puu1.Image = puun1Kuva;
312        return puu1;
313    }
314    void AsetaOhjaimet()
315    {
316        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, "Paina oikealle nuolta niin hahmo liikkuu oikealle", new Vector(10000.0, 0.0));
317        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, "Paina nuolta vasemmalle niin hahmo liikkuu vasemmalle", new Vector(-10000.0, 0.0));
318        Keyboard.Listen(Key.Space, ButtonState.Pressed, LiikutaPelaajaa, "Paina SPACE niin hahmo hyppää");
319        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
320        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu valikkoon");
321
322    }
323    void AsetaNopeus(Vector vektori)
324    {
325        hahmo.Push(vektori);
326    }
327
328    void LiikutaPelaajaa()
329    {
330        hahmo.Jump(1000.0);
331    }
332
333
334    //void liikutaHahmoa(Timer Sender)
335    //{
336        //hahmo.Velocity = new Vector(100.0, hahmo.Velocity.Y);
337    //}
338
339}
Note: See TracBrowser for help on using the repository browser.