source: 2010/24/olpesasa/Linnapako/Peli.cs @ 958

Revision 958, 12.5 KB checked in by anlakane, 11 years ago (diff)

Lisää kenttiä.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6
7public class Peli : PhysicsGame
8{
9    PhysicsObject seina;
10    PhysicsObject pelaaja;
11    PhysicsObject piikki1;
12    PhysicsObject maali;
13    PhysicsObject piikkipallo;
14    PhysicsObject avain;
15    PhysicsObject bonus;
16    PhysicsObject kolikko;
17    List<PhysicsObject> oviLista;
18    int kentanNro;
19    IntMeter pisteet;
20    IntMeter kentanPisteet;
21    const int ruudunLeveys = 50;
22    const int ruudunKorkeus = 50;
23
24    protected override void Begin()
25    {
26        //TODO: Alusta peli tässä
27        Ohjaimet ();
28        Pistelaskuri();
29        SeuraavaKentta(1);
30    }
31    void Ohjaimet()
32    {
33        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-200, 0));
34        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(200, 0));
35        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 200));
36        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -200));
37        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
38        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
39        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
40        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
41        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
42        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
43    }
44
45    void LiikutaPelaajaa(Vector vektori)
46    {
47        pelaaja.Velocity = vektori;
48    }
49    void PysaytaPelaaja(Vector vektori)
50    {
51        pelaaja.Stop(); 
52    }
53
54    PhysicsObject LuoPelaaja()
55    {
56        pelaaja = new PhysicsObject(40.0, 40.0);
57        pelaaja.Shape = Shapes.Circle;
58        pelaaja.Image = LoadImage("pelihahmo1");
59        AddCollisionHandler(pelaaja, PelaajanTormays);
60        pelaaja.Restitution = 0;
61        pelaaja.StaticFriction = 0;
62        pelaaja.KineticFriction = 0;
63        return pelaaja;
64    }
65    PhysicsObject LuoPiikkipallo()
66    {
67        piikkipallo = new PhysicsObject(40.0, 40.0);
68        piikkipallo.Shape = Shapes.Circle;
69        piikkipallo.Image = LoadImage("piikkipallo");
70        Vector impulssi = new Vector(500.0, 0.0);
71        piikkipallo.Hit(impulssi);
72        piikkipallo.KineticFriction = 0;
73        piikkipallo.CanRotate = false;
74        piikkipallo.Restitution = 1;
75        piikkipallo.IgnoresCollisionResponse = true;
76        AddCollisionHandler(piikkipallo, PallonTormays);
77        piikkipallo.Tag = "p";
78        return piikkipallo;
79    }
80    PhysicsObject LuoSeina()
81    {
82        seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
83        seina.Shape = Shapes.Rectangle;
84        seina.Image = LoadImage("seina1");
85        seina.Tag = "seina";
86        return seina;
87    }
88    PhysicsObject LuoOviLukossa()
89    {
90        PhysicsObject oviLukossa = PhysicsObject.CreateStaticObject(50.0, 50.0);
91        oviLukossa.Shape = Shapes.Rectangle;
92        oviLukossa.Image = LoadImage("oviLukossa");
93        oviLukossa.Tag = "ovi";
94
95        oviLista.Add(oviLukossa);
96        return oviLukossa;
97    }
98    PhysicsObject LuoPiikki1()
99    {
100        piikki1 = PhysicsObject.CreateStaticObject(50.0, 50.0);
101        piikki1.Shape = Shapes.Rectangle;
102        piikki1.Image = LoadImage("piikkiseina1");
103        piikki1.Tag = "piikki1";
104        return piikki1;
105    }
106    PhysicsObject LuoMaali()
107    {
108        maali = PhysicsObject.CreateStaticObject(50.0, 50.0);
109        maali.Shape = Shapes.Rectangle;
110        maali.Image = LoadImage("maali");
111        maali.Tag = "maali";
112        return maali;
113    }
114    PhysicsObject LuoAvain()
115    {
116        avain = new PhysicsObject(40.0, 30.0);
117        avain.Shape = Shapes.Circle;
118        avain.Image = LoadImage("avain");
119        AddCollisionHandler(avain, AvaimenTormays);
120        avain.Tag = "a";
121        return avain;
122    }
123    PhysicsObject LuoBonus()
124    {
125        bonus = new PhysicsObject(30.0, 30.0);
126        bonus.Shape = Shapes.Circle;
127        bonus.Image = LoadImage("bonus");
128        bonus.Tag = "bonus";
129        return bonus;
130    }
131    PhysicsObject LuoKolikko()
132    {
133        kolikko = new PhysicsObject(25.0, 25.0);
134        kolikko.Shape = Shapes.Circle;
135        kolikko.Image = LoadImage("kolikko");
136        kolikko.Tag = "coin";
137        return kolikko;
138    }
139
140    void LuoKentta1()
141    {
142        TileMap ruudut = TileMap.FromFile("kentta1.txt");
143        ruudut['v'] = LuoPiikkipallo;
144        ruudut['x'] = LuoSeina;
145        ruudut['1'] = LuoPelaaja;
146        ruudut['p'] = LuoPiikki1;
147        ruudut['m'] = LuoMaali;
148        ruudut['b'] = LuoBonus;
149        ruudut['k'] = LuoKolikko;
150        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
151        Camera.Zoom(1.50);
152        Camera.Follow(pelaaja);
153        Level.BackgroundColor = Color.Gray;
154        kentanNro++;
155    }
156    void LuoKentta2()
157    {
158        oviLista = new List<PhysicsObject>();
159        TileMap ruudut = TileMap.FromFile("kentta2.txt");
160        ruudut['v'] = LuoPiikkipallo;
161        ruudut['x'] = LuoSeina;
162        ruudut['1'] = LuoPelaaja;
163        ruudut['p'] = LuoPiikki1;
164        ruudut['m'] = LuoMaali;
165        ruudut['o'] = LuoOviLukossa;
166        ruudut['a'] = LuoAvain;
167        ruudut['b'] = LuoBonus;
168        ruudut['k'] = LuoKolikko;
169        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
170        Camera.Follow(pelaaja);
171    }
172    void LuoKentta3()
173    {
174        oviLista = new List<PhysicsObject>();
175        TileMap ruudut = TileMap.FromFile("kentta3.txt");
176        ruudut['v'] = LuoPiikkipallo;
177        ruudut['x'] = LuoSeina;
178        ruudut['1'] = LuoPelaaja;
179        ruudut['p'] = LuoPiikki1;
180        ruudut['m'] = LuoMaali;
181        ruudut['o'] = LuoOviLukossa;
182        ruudut['a'] = LuoAvain;
183        ruudut['b'] = LuoBonus;
184        ruudut['k'] = LuoKolikko;
185        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
186        Camera.Follow(pelaaja);
187    }
188    void LuoKentta4()
189    {
190        oviLista = new List<PhysicsObject>();
191        TileMap ruudut = TileMap.FromFile("kentta4.txt");
192        ruudut['v'] = LuoPiikkipallo;
193        ruudut['x'] = LuoSeina;
194        ruudut['1'] = LuoPelaaja;
195        ruudut['p'] = LuoPiikki1;
196        ruudut['m'] = LuoMaali;
197        ruudut['o'] = LuoOviLukossa;
198        ruudut['a'] = LuoAvain;
199        ruudut['b'] = LuoBonus;
200        ruudut['k'] = LuoKolikko;
201        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
202        Camera.Follow(pelaaja);
203    }
204    void LuoKentta5()
205    {
206        oviLista = new List<PhysicsObject>();
207        TileMap ruudut = TileMap.FromFile("kentta5.txt");
208        ruudut['v'] = LuoPiikkipallo;
209        ruudut['x'] = LuoSeina;
210        ruudut['1'] = LuoPelaaja;
211        ruudut['p'] = LuoPiikki1;
212        ruudut['m'] = LuoMaali;
213        ruudut['o'] = LuoOviLukossa;
214        ruudut['a'] = LuoAvain;
215        ruudut['b'] = LuoBonus;
216        ruudut['k'] = LuoKolikko;
217        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
218        Camera.Follow(pelaaja);
219    }
220    void LuoKentta6()
221    {
222        oviLista = new List<PhysicsObject>();
223        TileMap ruudut = TileMap.FromFile("kentta6.txt");
224        ruudut['v'] = LuoPiikkipallo;
225        ruudut['x'] = LuoSeina;
226        ruudut['1'] = LuoPelaaja;
227        ruudut['p'] = LuoPiikki1;
228        ruudut['m'] = LuoMaali;
229        ruudut['o'] = LuoOviLukossa;
230        ruudut['a'] = LuoAvain;
231        ruudut['b'] = LuoBonus;
232        ruudut['k'] = LuoKolikko;
233        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
234        Camera.Follow(pelaaja);
235    }
236    void LuoKentta7()
237    {
238        oviLista = new List<PhysicsObject>();
239        TileMap ruudut = TileMap.FromFile("kentta7.txt");
240        ruudut['v'] = LuoPiikkipallo;
241        ruudut['x'] = LuoSeina;
242        ruudut['1'] = LuoPelaaja;
243        ruudut['p'] = LuoPiikki1;
244        ruudut['m'] = LuoMaali;
245        ruudut['o'] = LuoOviLukossa;
246        ruudut['a'] = LuoAvain;
247        ruudut['b'] = LuoBonus;
248        ruudut['k'] = LuoKolikko;
249        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
250        Camera.Follow(pelaaja);
251    }
252    void LuoKentta8()
253    {
254        oviLista = new List<PhysicsObject>();
255        TileMap ruudut = TileMap.FromFile("kentta8.txt");
256        ruudut['v'] = LuoPiikkipallo;
257        ruudut['x'] = LuoSeina;
258        ruudut['1'] = LuoPelaaja;
259        ruudut['p'] = LuoPiikki1;
260        ruudut['m'] = LuoMaali;
261        ruudut['o'] = LuoOviLukossa;
262        ruudut['a'] = LuoAvain;
263        ruudut['b'] = LuoBonus;
264        ruudut['k'] = LuoKolikko;
265        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
266        Camera.Follow(pelaaja);
267    }
268    void LuoKentta9()
269    {
270        oviLista = new List<PhysicsObject>();
271        TileMap ruudut = TileMap.FromFile("kentta9.txt");
272        ruudut['v'] = LuoPiikkipallo;
273        ruudut['x'] = LuoSeina;
274        ruudut['1'] = LuoPelaaja;
275        ruudut['p'] = LuoPiikki1;
276        ruudut['m'] = LuoMaali;
277        ruudut['o'] = LuoOviLukossa;
278        ruudut['a'] = LuoAvain;
279        ruudut['b'] = LuoBonus;
280        ruudut['k'] = LuoKolikko;
281        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
282        Camera.Follow(pelaaja);
283    }
284    void LuoKentta10()
285    {
286        oviLista = new List<PhysicsObject>();
287        TileMap ruudut = TileMap.FromFile("kentta10.txt");
288        ruudut['v'] = LuoPiikkipallo;
289        ruudut['x'] = LuoSeina;
290        ruudut['1'] = LuoPelaaja;
291        ruudut['p'] = LuoPiikki1;
292        ruudut['m'] = LuoMaali;
293        ruudut['o'] = LuoOviLukossa;
294        ruudut['a'] = LuoAvain;
295        ruudut['b'] = LuoBonus;
296        ruudut['k'] = LuoKolikko;
297        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
298        Camera.Follow(pelaaja);
299    }
300    void PelaajanTormays(PhysicsObject pelaaja, PhysicsObject kohde)
301    {
302        if (kohde.Tag.ToString() == "piikki1")
303        {
304            AloitaAlusta();
305        }
306        else if (kohde.Tag.ToString() == "p")
307        {
308            AloitaAlusta();
309        }
310        else if (kohde.Tag.ToString() == "maali")
311        {
312            kentanNro++;
313            pisteet.Value = kentanPisteet.Value;
314            SeuraavaKentta(kentanNro);
315        }
316        else if (kohde.Tag.ToString() == "bonus")
317        {
318            kentanPisteet.Value+=10;
319            kohde.Destroy();
320        }
321        else if (kohde.Tag.ToString() == "coin")
322        {
323            kentanPisteet.Value += 1;
324            kohde.Destroy();
325        }
326        else if (kohde.Tag.ToString() == "seina")
327        {
328            pelaaja.Stop();
329        }
330    }
331    void PallonTormays(PhysicsObject piikkipallo, PhysicsObject kohde)
332    {
333        if (kohde.Tag.ToString() == "seina")
334        {
335            piikkipallo.Velocity = new Vector(-piikkipallo.Velocity.X, piikkipallo.Velocity.Y);
336        }
337    }
338    void AvaimenTormays(PhysicsObject avain, PhysicsObject kohde)
339    {
340        if (kohde == pelaaja)
341        {
342            avain.Destroy();
343            for (int i = 0; i < oviLista.Count; i++)
344            {
345                oviLista[i].Destroy();
346            }
347        }
348    }
349    void AloitaAlusta()
350    {
351        kentanPisteet.Value = pisteet.Value;
352        ClearGameObjects();
353        ClearControls();
354        Ohjaimet();
355        SeuraavaKentta(kentanNro);
356    }
357    void SeuraavaKentta(int kentta)
358    {
359        //kentanPisteet.Value = pisteet.Value;
360        ClearGameObjects();
361        ClearControls();
362        if (kentta == 1) LuoKentta1();
363        else if (kentta == 2) LuoKentta2();
364        else if (kentta == 3) LuoKentta3();
365        else if (kentta == 4) LuoKentta4();
366        else if (kentta == 5) LuoKentta5();
367        else if (kentta == 6) LuoKentta6();
368        else if (kentta == 7) LuoKentta7();
369        else if (kentta == 8) LuoKentta8();
370        else if (kentta == 9) LuoKentta9();
371        else if (kentta > 9) LuoKentta10();
372
373        Ohjaimet();
374
375    }
376    void Pistelaskuri()
377    {
378        pisteet = new IntMeter(0);
379        ValueDisplay pisteNaytto = new ValueDisplay();
380
381        kentanPisteet = new IntMeter(0);
382
383        pisteNaytto.Text = "Pisteitä: ";
384
385        pisteNaytto.X = Screen.Left + 100;
386        pisteNaytto.Y = Screen.Top - 100;
387
388        pisteNaytto.ValueColor = Color.White;
389        pisteNaytto.TextColor = Color.LightGray;
390
391        pisteNaytto.BindTo(kentanPisteet);
392
393        Add(pisteNaytto);
394
395    }
396}
Note: See TracBrowser for help on using the repository browser.