source: 2011/23/vihakuli/Runner/Runner/Runner/Peli.cs @ 1740

Revision 1740, 8.2 KB checked in by vihakuli, 9 years ago (diff)
RevLine 
[1740]1using System;
2using System.IO;
3using System.Collections.Generic;
4using Jypeli;
5using Jypeli.Assets;
6using Jypeli.Controls;
7using Jypeli.Effects;
8using Jypeli.Widgets;
9
10public class Peli : PhysicsGame
11{
12    PlatformCharacter ukko;
13    Image[] UkonKuvat = LoadImages("ukko1", "ukko2");
14    Image[] UkonKuvaPeilattu;
15    Image[] Ukkoidlaa = LoadImages("ukkoidlaa");
16    double liiku = 400;
17    int pisteet = 0;
18    int MaxPisteet = 0;
19    const int ruudunLeveys = 50;
20    const int ruudunKorkeus = 50;
21    Timer KorkeaHyppyAika;
22    Timer NopeaJuoksuAika;
23    Label teksti;
24    Label kohta3;
25    Label KohtaHavisit;
26    List<Label> valikonKohdat = new List<Label>();
27    List<Label> MaaValikko = new List<Label>();
28    PhysicsObject spawn;
29    int havisit = 0;
30    int voitit = 0;
31    string[] maat;
32    string valittuMaa = "Maat\\asd.txt";
33
34    public override void Begin()
35    {
36        SetWindowSize(800, 600);
37        KorkeaHyppyAika = new Timer();
38        NopeaJuoksuAika = new Timer();
39       
40        Valikko();
41
42       
43    }
44
45    void Valikko()
46    {
47        ClearAll();
48
49        MaxPisteet = 0;
50        pisteet = 0;
51
52        Label kohta1 = new Label("Aloita peli");
53        kohta1.Position = new Vector(0, 40);
54        valikonKohdat.Add(kohta1);
55
56        Label kohta2 = new Label("Lopeta");
57        kohta2.Position = new Vector(0, -40);
58        valikonKohdat.Add(kohta2);
59
60        Label valitseMaa = new Label("Valitse maa");
61        valitseMaa.Position = new Vector(0, 0);
62        valikonKohdat.Add(valitseMaa);
63
64        if (havisit == 1)
65            valikonKohdat.Add(KohtaHavisit);
66
67        if (voitit == 1)
68            valikonKohdat.Add(kohta3);
69
70
71        foreach (Label valikonKohta in valikonKohdat)
72            {
73                Add(valikonKohta);
74            }
75
76        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
77        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
78        Mouse.ListenOn(valitseMaa, MouseButton.Left, ButtonState.Pressed, ValikkoMaa, null);
79
80        Mouse.IsCursorVisible = true;
81        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
82    }
83
84    void ValikkoMaa()
85    {
86        ClearAll();
87        maat = Directory.GetFiles("Maat");
88        int y = 40;
89        foreach (string maa in maat)
90        {
91            Label kohta = new Label(maa);
92            kohta.Position = new Vector(0, y);
93            MaaValikko.Add(kohta);
94            y -= 40;
95            Add(kohta);
96            Mouse.ListenOn(kohta, MouseButton.Left, ButtonState.Pressed, ValitseMaa, null, maa);
97        }
98    }
99
100    void ValitseMaa(string valittumaa)
101    {
102        valittuMaa = valittumaa;
103        Valikko();
104    }
105
106    void AloitaPeli()
107    {
108        ClearAll();
109        voitit = 0;
110        havisit = 0;
111        teksti = new Label("teksti");
112        TeeKentta();
113        TeeUkko();
114        napit();
115        teksti.X = Screen.Right - 100;
116        teksti.Y = Screen.Top - 50;
117        teksti.TextColor = Color.Green;
118        Add(teksti);
119    }
120
121    void Lopeta()
122    {
123        Exit();
124    }
125
126    void TeeUkko()
127    {
128        ukko = new PlatformCharacter(80, 80);
129        ukko.X = spawn.X;
130        ukko.Y = spawn.Y;
131        ukko.LinearDamping = 0.99;
132        ukko.Restitution = 0;
133        ukko.CanMoveOnAir = true;
134        AddCollisionHandler(ukko, UkkoTormasi);
135        Add(ukko);
136        Camera.Follow(ukko);
137        ukko.LeftWalkingAnimation = new Animation(UkonKuvat);
138        UkonKuvaPeilattu = Image.Mirror(UkonKuvat);
139        ukko.RightWalkingAnimation = new Animation(UkonKuvaPeilattu);
140        ukko.RightIdleAnimation = new Animation(Ukkoidlaa);
141        ukko.LeftIdleAnimation = new Animation(Ukkoidlaa);
142    }
143
144    void UkkoTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
145    {
146        if (kohde.Color == Color.Red)
147        {
148            KorkeaHyppyAika.Reset();           
149            MessageDisplay.Add(KorkeaHyppyAika.CurrentTime.ToString());
150            KorkeaHyppyAika.Start();
151        }
152
153        if (kohde.Color == Color.White)
154        {
155            NopeaJuoksuAika.Start();
156            NopeaJuoksuAika.Reset();
157        }
158
159        if (kohde.Shape == Shape.Star)
160        {
161            kohde.Destroy();
162            pisteet = pisteet + 1;
163            teksti.Text = pisteet.ToString() + "/" + MaxPisteet.ToString();
164
165            if (pisteet == MaxPisteet)
166            {
167                ClearAll();
168                valikonKohdat.Clear();
169                kohta3 = new Label("Kenttä suoritettu!");
170                kohta3.Position = new Vector(0, 120);
171                //valikonKohdat.Add(kohta3);
172                voitit = 1;
173                Valikko();
174            }
175        }
176
177        if (kohde.Color == Color.OrangeRed)
178        {
179            ClearAll();
180            valikonKohdat.Clear();
181            KohtaHavisit = new Label("Hävisit kentän!");
182            KohtaHavisit.Position = new Vector(0, 120);
183            //valikonKohdat.Add(KohtaHavisit);
184            havisit = 1;
185            Valikko();
186        }
187    }
188
189    void TeeKentta()
190    {
191        TileMap ruudut = TileMap.FromFile(valittuMaa);
192        ruudut['='] = LuoPalikka;
193        ruudut['-'] = LuoHyppyPalikka;
194        ruudut[':'] = LuoNopeusPalikka;
195        ruudut['*'] = LuoTahtiPalikka;
196        ruudut['s'] = LuoSpawn;
197        ruudut['!'] = LuoHavioPalikka;
198        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
199        Gravity = new Vector(0.0, -800.0);
200        teksti.Text = pisteet.ToString() + "/" + MaxPisteet.ToString();
201    }
202
203    PhysicsObject LuoHavioPalikka()
204    {
205        PhysicsObject havioPalikka = PhysicsObject.CreateStaticObject(40.0, 40.0);
206        havioPalikka.Color = Color.OrangeRed;
207        return havioPalikka;
208
209    }
210
211    PhysicsObject LuoSpawn()
212    {
213        spawn = PhysicsObject.CreateStaticObject(50.0, 50.0);
214        spawn.Color = Color.Green;
215        Add(spawn); 
216        return spawn;
217    }
218
219    PhysicsObject LuoPalikka()
220    {
221        PhysicsObject palikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
222        palikka.Shape = Shape.Rectangle;
223        palikka.Color = Color.Black;
224        return palikka;
225    }
226
227    PhysicsObject LuoHyppyPalikka()
228    {
229        PhysicsObject hyppyPalikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
230        hyppyPalikka.Shape = Shape.Rectangle;
231        hyppyPalikka.Color = Color.Red;
232        return hyppyPalikka;
233    }
234
235    PhysicsObject LuoNopeusPalikka()
236    {
237        PhysicsObject nopeusPalikka = PhysicsObject.CreateStaticObject(50.0, 50.0);
238        nopeusPalikka.Shape = Shape.Rectangle;
239        nopeusPalikka.Color = Color.White;
240        return nopeusPalikka;
241    }
242
243    PhysicsObject LuoTahtiPalikka()
244    {
245        PhysicsObject tahtiPalikka = PhysicsObject.CreateStaticObject(35.0, 35.0);
246        tahtiPalikka.Shape = Shape.Star;
247        tahtiPalikka.Color = Color.Yellow;
248        MaxPisteet = MaxPisteet + 1;
249        return tahtiPalikka;
250    }
251
252    void napit()
253    {
254        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaUkkoa, "Pelaaja liikkuu vasemmalle", -liiku, "vasen");
255        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaUkkoa, "Pelaaja liikkuu oikealle", liiku, "oikea");
256        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppy, "Ukko Hyppää");
257        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu");
258    }
259
260    void LiikutaUkkoa(double liiku, string suunta)
261    {
262       
263        double asd = NopeaJuoksuAika.CurrentTime;
264        if (asd < 3)
265        {
266            if (suunta == "vasen")
267            {
268                liiku = liiku - 300;
269                ukko.Walk(liiku);
270            }
271            if (suunta == "oikea")
272            {
273                liiku = liiku + 300;
274                ukko.Walk(liiku);
275            }
276        }
277       
278        ukko.Walk(liiku);
279    }
280
281    void Hyppy()
282    {
283        double asd = KorkeaHyppyAika.CurrentTime;
284        TimeSpan nykyhetki = DateTime.Now.TimeOfDay;
285        TimeSpan erotus = nykyhetki- KorkeaHyppyAika.StartTime;
286        if (asd < 0.3)
287        {
288            ukko.Jump(800.0);
289            return;   
290        }
291        ukko.Jump(500.0);
292    }
293}
Note: See TracBrowser for help on using the repository browser.