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

Revision 977, 14.0 KB checked in by anlakane, 11 years ago (diff)

Vielä pari muutosta kenttiin ja äänet.

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