source: 2010/27/malirola/Jumpy Jumpie/Peli.cs @ 1189

Revision 1189, 8.6 KB checked in by paaaanro, 11 years ago (diff)

tein aloitusvalikon, ajastimen + muuta sälää

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Widgets;
5using Jypeli.Assets;
6
7
8class Tasohyppely : PhysicsGame
9{
10    const double nopeus = 200;
11    const double hyppyVoima = 4000;
12
13    const int ruudunLeveys = 35;
14    const int ruudunKorkeus = 35;
15
16    PlatformCharacter pelaaja1;
17
18    int kenttaNro; // monesko kenttä on menossa
19
20    List<Label> valikonKohdat;
21
22    PhysicsObject pelaaja;
23
24    HighScoreList topLista;
25
26    protected override void Begin()
27    {
28        topLista = HighScoreList.LoadOrCreate("topten.dat", 10);
29        topLista.Show();
30        topLista.CongratulationText = "Onneksi olkoon! Ansaitsit pisteillä {1} paikan {0} listalta. Syötä nimesi:";
31        topLista.ScreenList.ItemColor = Color.Black;
32        topLista.ScreenList.BackGroundColor = Color.White;
33        topLista.ReverseOrder = true;
34
35
36
37        Valikko();
38        kenttaNro = 0;
39
40
41        // Zoomataan lähemmäksi
42        //Camera.ZoomFactor = 0.0;
43
44        Camera.StayInLevel = true;
45
46     
47            pelaaja = pelaaja1;
48           
49
50            ControllerOne.Listen( Button.DPadLeft,  ButtonState.Down, LiikutaPelaajaa, null, new Vector( -1000, 0 ), pelaaja1 );
51            ControllerOne.Listen( Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, new Vector( 1000, 0 ),  pelaaja1 );
52            ControllerOne.Listen( Button.DPadUp,    ButtonState.Down, LiikutaPelaajaa, null, new Vector( 0, 1000 ),  pelaaja1 );
53            ControllerOne.Listen( Button.DPadDown,  ButtonState.Down, LiikutaPelaajaa, null, new Vector( 0, -1000 ), pelaaja1 );
54           
55    }
56
57    void LiikutaPelaajaa(Vector vektori, PhysicsObject pelaaja)
58    {
59       
60
61    }
62
63
64    void seuraavaKentta()
65    {
66        ClearAll();
67
68        kenttaNro += 1; // lisätään kenttänumeroa yhdellä
69        MessageDisplay.Add("Kenttä " + kenttaNro);
70
71        // Asetetaan painovoima
72         
73    }
74
75 
76    void luoKentta()
77    {
78        Gravity = new Vector(0, -1000);
79
80        LuoAikaLaskuri();
81
82        Level.BackgroundColor = Color.White;
83
84        lisaaPelaajat();
85
86        TileMap ruudut = TileMap.FromFile("kentta.txt");
87        ruudut['='] = LuoPalikka;
88        ruudut['i'] = LuoPiikit;
89        ruudut['t'] = LuoLiikkuva;
90        ruudut['m'] = LuoMaali;
91        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
92
93        Camera.Follow(pelaaja1);
94        Level.CreateBorders();
95
96       
97    }
98
99
100    PhysicsObject LuoPalikka()
101    {
102        PhysicsObject palikka = PhysicsObject.CreateStaticObject(60.0, 10.0);
103        palikka.Color = Color.Black;
104        return palikka;
105    }
106
107    PhysicsObject LuoLiikkuva()
108    {
109        PhysicsObject liikkuva = PhysicsObject.CreateStaticObject(65.0, 10.0);
110        liikkuva.Shape = Shapes.Rectangle;
111        liikkuva.Color = Color.Black;
112        PathFollowerBrain polkuAivot = new PathFollowerBrain();
113        polkuAivot.Active = true;
114       
115       
116        List<Vector> polku = new List<Vector>();
117
118        for (int i = 0; i < 10; i++)
119        {
120            double x = RandomGen.NextDouble(Level.Left, Level.Right);
121            double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
122            polku.Add(new Vector(x, y));
123            polkuAivot.Path = polku;
124            polkuAivot.Speed = 100;
125            liikkuva.Brain = polkuAivot;
126        }
127
128        return liikkuva;
129    }
130
131    PhysicsObject LuoMaali()
132    {
133        PhysicsObject maali = PhysicsObject.CreateStaticObject(40, 40, Shapes.Circle);
134        maali.Tag = "maali";
135        maali.IgnoresCollisionResponse = true;
136        maali.X = 620;
137        maali.Y = 430;
138        maali.Shape = Shapes.Circle;
139        maali.Color = Color.Red;
140        return (maali);
141    }
142
143    PhysicsObject LuoPiikit()
144    {
145        PhysicsObject piikit = PhysicsObject.CreateStaticObject(20.0, 20.0);
146        piikit.Color = Color.Black;
147        piikit.Shape = Shapes.Triangle;
148        piikit.Tag = "piikit";
149        return piikit;
150    }
151
152
153    void lisaaPelaajat()
154    {
155        pelaaja1 = new PlatformCharacter(30, 30);
156        pelaaja1.Shape = Shapes.Circle;
157        pelaaja1.Color = Color.Black;
158        pelaaja1.Restitution = 0.7;
159        pelaaja1.Mass = 4.0;
160        pelaaja1.X = -1100;
161        pelaaja1.Y = Level.Bottom + 125;
162
163        AddCollisionHandler(pelaaja1, PelaajaOsuu);
164
165        Add(pelaaja1);
166    }
167
168
169    void lisaaNappaimet()
170    {
171        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
172        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
173
174        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
175        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
176        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", pelaaja1, hyppyVoima);
177
178        lisaaGamePadNappaimet(ControllerOne);
179    }
180
181    void lisaaGamePadNappaimet(GamePad controller)
182    {
183        controller.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
184
185        controller.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
186        controller.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
187        controller.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyVoima);
188    }
189
190    void liikuta(PlatformCharacter hahmo, double nopeus)
191    {
192        hahmo.Walk(nopeus);
193    }
194
195    void hyppaa(PlatformCharacter hahmo, double voima)
196    {
197        hahmo.Jump(voima);
198    }
199
200    void PelaajaOsuu(PhysicsObject collidingObject, PhysicsObject otherObject)
201    {
202        if (otherObject.Tag.ToString() == "maali")
203        {
204
205            seuraavaKentta();
206            MessageDisplay.Add("Pääsit läpi kentän " + kenttaNro);
207        }
208
209        if (otherObject.Tag.ToString() == "piikit")
210        {
211
212            takaisin();
213        }
214
215
216    }
217
218    void PelaajaTakaisin(PhysicsObject collidingObject, PhysicsObject otherObject)
219    {
220
221    }
222
223    void takaisin()
224    {
225        //ClearAll();
226
227        pelaaja1.X = -1100;
228        pelaaja1.Y = Level.Bottom + 125;
229
230        //Add (pelaaja1);
231    }
232
233    void Valikko()
234    {
235        ClearAll();
236        valikonKohdat = new List<Label>();
237
238        Label otsikko = new Label("Jumpy Jumpie");
239        otsikko.Position = new Vector(0, 180);
240        valikonKohdat.Add(otsikko);
241
242        Label kohta1 = new Label("Aloita uusi peli");
243        kohta1.Position = new Vector(0, 40);
244        valikonKohdat.Add(kohta1);
245
246        Label huippu = new Label("Huippupisteet");
247        huippu.Position = new Vector(0, -40);
248        valikonKohdat.Add(huippu);
249
250        Label kohta2 = new Label("Lopeta");
251        kohta2.Position = new Vector(0, -120);
252        valikonKohdat.Add(kohta2);
253
254        foreach (Label valikonKohta in valikonKohdat)
255        {
256            Add(valikonKohta);
257        }
258
259        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
260        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Huippupisteet, null);
261        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null);
262
263        Mouse.IsCursorVisible = true;
264        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
265        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Lopeta, "");
266        Level.BackgroundColor = Color.White;
267    }
268
269    void ValikossaLiikkuminen(AnalogState hiirenTila)
270    {
271        foreach (Label kohta in valikonKohdat)
272        {
273            if (Mouse.IsCursorOn(kohta))
274            {
275                kohta.TextColor = Color.Red;
276            }
277            else
278            {
279                kohta.TextColor = Color.Black;
280            }
281
282        }
283    }
284
285    void AloitaPeli()
286    {
287        ClearAll();
288        luoKentta();
289        lisaaNappaimet();
290        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
291    }
292
293    void Lopeta()
294    {
295        Exit();
296    }
297
298
299    Timer aikaLaskuri;
300
301    void LuoAikaLaskuri()
302    {
303        aikaLaskuri = new Timer();
304
305        Add(aikaLaskuri);
306        aikaLaskuri.Start();
307       
308        Label aikaNaytto = new Label();
309        aikaNaytto.TextColor = Color.Black;
310        aikaNaytto.X = Level.Left;
311        aikaNaytto.Y = Level.Top;
312        aikaNaytto.DecimalPlaces = 1;
313        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
314
315        Add(aikaNaytto);
316
317        //double aikaaKulunut = aikaLaskuri.SecondCounter.Value;
318    }
319
320
321
322
323
324
325
326
327}
328
329
330
331
Note: See TracBrowser for help on using the repository browser.