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

Revision 939, 9.6 KB checked in by anlakane, 11 years ago (diff)

Tein ovet ja avaimet. Tein myös bonuksen ja pistelaskurin.

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    List<PhysicsObject> oviLista;
17    int kentanNro;
18    IntMeter pisteet;
19    const int ruudunLeveys = 50;
20    const int ruudunKorkeus = 50;
21
22    protected override void Begin()
23    {
24        //TODO: Alusta peli tässä
25        Ohjaimet ();
26        SeuraavaKentta(1);
27        Pistelaskuri();
28    }
29    void Ohjaimet()
30    {
31        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-200, 0));
32        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, new Vector(200, 0));
33        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 200));
34        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -200));
35        Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
36        Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
37        Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
38        Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaaja, null, new Vector(0, 0));
39        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
40        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
41    }
42
43    void LiikutaPelaajaa(Vector vektori)
44    {
45        pelaaja.Velocity = vektori;
46    }
47    void PysaytaPelaaja(Vector vektori)
48    {
49        pelaaja.Stop(); 
50    }
51
52    PhysicsObject LuoPelaaja()
53    {
54        pelaaja = new PhysicsObject(40.0, 40.0);
55        pelaaja.Shape = Shapes.Circle;
56        pelaaja.Image = LoadImage("pelihahmo1");
57        AddCollisionHandler(pelaaja, PelaajanTormays);
58        pelaaja.Restitution = 0;
59        pelaaja.StaticFriction = 0;
60        pelaaja.KineticFriction = 0;
61        return pelaaja;
62    }
63    PhysicsObject LuoPiikkipallo()
64    {
65        piikkipallo = new PhysicsObject(40.0, 40.0);
66        piikkipallo.Shape = Shapes.Circle;
67        piikkipallo.Image = LoadImage("piikkipallo");
68        Vector impulssi = new Vector(500.0, 0.0);
69        piikkipallo.Hit(impulssi);
70        piikkipallo.KineticFriction = 0;
71        piikkipallo.CanRotate = false;
72        piikkipallo.Restitution = 1;
73        piikkipallo.IgnoresCollisionResponse = true;
74        AddCollisionHandler(piikkipallo, PallonTormays);
75        piikkipallo.Tag = "p";
76        return piikkipallo;
77    }
78    PhysicsObject LuoSeina()
79    {
80        seina = PhysicsObject.CreateStaticObject(50.0, 50.0);
81        seina.Shape = Shapes.Rectangle;
82        seina.Image = LoadImage("seina1");
83        seina.Tag = "seina";
84        return seina;
85    }
86    PhysicsObject LuoOviLukossa()
87    {
88        PhysicsObject oviLukossa = PhysicsObject.CreateStaticObject(50.0, 50.0);
89        oviLukossa.Shape = Shapes.Rectangle;
90        oviLukossa.Image = LoadImage("oviLukossa");
91        oviLukossa.Tag = "ovi";
92
93        oviLista.Add(oviLukossa);
94        return oviLukossa;
95    }
96    PhysicsObject LuoPiikki1()
97    {
98        piikki1 = PhysicsObject.CreateStaticObject(50.0, 50.0);
99        piikki1.Shape = Shapes.Rectangle;
100        piikki1.Image = LoadImage("piikkiseina1");
101        piikki1.Tag = "piikki1";
102        return piikki1;
103    }
104    PhysicsObject LuoMaali()
105    {
106        maali = PhysicsObject.CreateStaticObject(50.0, 50.0);
107        maali.Shape = Shapes.Rectangle;
108        maali.Image = LoadImage("maali");
109        maali.Tag = "maali";
110        return maali;
111    }
112    PhysicsObject LuoAvain()
113    {
114        avain = new PhysicsObject(40.0, 30.0);
115        avain.Shape = Shapes.Circle;
116        avain.Image = LoadImage("avain");
117        AddCollisionHandler(avain, AvaimenTormays);
118        avain.Tag = "a";
119        return avain;
120    }
121    PhysicsObject LuoBonus()
122    {
123        bonus = new PhysicsObject(30.0, 30.0);
124        bonus.Shape = Shapes.Circle;
125        bonus.Image = LoadImage("bonus");
126        bonus.Tag = "bonus";
127        return bonus;
128    }
129
130    void LuoKentta1()
131    {
132        TileMap ruudut = TileMap.FromFile("kentta1.txt");
133        ruudut['v'] = LuoPiikkipallo;
134        ruudut['x'] = LuoSeina;
135        ruudut['1'] = LuoPelaaja;
136        ruudut['p'] = LuoPiikki1;
137        ruudut['m'] = LuoMaali;
138        ruudut['b'] = LuoBonus;
139        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
140        Camera.Zoom(1.25);
141        Camera.Follow(pelaaja);
142        Level.BackgroundColor = Color.Gray;
143    }
144    void LuoKentta2()
145    {
146        oviLista = new List<PhysicsObject>();
147        TileMap ruudut = TileMap.FromFile("kentta2.txt");
148        ruudut['v'] = LuoPiikkipallo;
149        ruudut['x'] = LuoSeina;
150        ruudut['1'] = LuoPelaaja;
151        ruudut['p'] = LuoPiikki1;
152        ruudut['m'] = LuoMaali;
153        ruudut['o'] = LuoOviLukossa;
154        ruudut['a'] = LuoAvain;
155        ruudut['b'] = LuoBonus;
156        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
157        Camera.Follow(pelaaja);
158    }
159    void LuoKentta3()
160    {
161        oviLista = new List<PhysicsObject>();
162        TileMap ruudut = TileMap.FromFile("kentta3.txt");
163        ruudut['v'] = LuoPiikkipallo;
164        ruudut['x'] = LuoSeina;
165        ruudut['1'] = LuoPelaaja;
166        ruudut['p'] = LuoPiikki1;
167        ruudut['m'] = LuoMaali;
168        ruudut['o'] = LuoOviLukossa;
169        ruudut['a'] = LuoAvain;
170        ruudut['b'] = LuoBonus;
171        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
172        Camera.Follow(pelaaja);
173    }
174    void LuoKentta4()
175    {
176        oviLista = new List<PhysicsObject>();
177        TileMap ruudut = TileMap.FromFile("kentta4.txt");
178        ruudut['v'] = LuoPiikkipallo;
179        ruudut['x'] = LuoSeina;
180        ruudut['1'] = LuoPelaaja;
181        ruudut['p'] = LuoPiikki1;
182        ruudut['m'] = LuoMaali;
183        ruudut['o'] = LuoOviLukossa;
184        ruudut['a'] = LuoAvain;
185        ruudut['b'] = LuoBonus;
186        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
187        Camera.Follow(pelaaja);
188    }
189    void LuoKentta5()
190    {
191        oviLista = new List<PhysicsObject>();
192        TileMap ruudut = TileMap.FromFile("kentta5.txt");
193        ruudut['v'] = LuoPiikkipallo;
194        ruudut['x'] = LuoSeina;
195        ruudut['1'] = LuoPelaaja;
196        ruudut['p'] = LuoPiikki1;
197        ruudut['m'] = LuoMaali;
198        ruudut['o'] = LuoOviLukossa;
199        ruudut['a'] = LuoAvain;
200        ruudut['b'] = LuoBonus;
201        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
202        Camera.Follow(pelaaja);
203    }
204    void LuoKentta6()
205    {
206        oviLista = new List<PhysicsObject>();
207        TileMap ruudut = TileMap.FromFile("kentta6.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.Insert(ruudunLeveys, ruudunKorkeus);
217        Camera.Follow(pelaaja);
218    }
219    void LuoKentta7()
220    {
221        TileMap ruudut = TileMap.FromFile("kentta7.txt");
222        ruudut['v'] = LuoPiikkipallo;
223        ruudut['x'] = LuoSeina;
224        ruudut['1'] = LuoPelaaja;
225        ruudut['p'] = LuoPiikki1;
226        ruudut['m'] = LuoMaali;
227        ruudut['o'] = LuoOviLukossa;
228        ruudut['a'] = LuoAvain;
229        ruudut.Insert(ruudunLeveys, ruudunKorkeus);
230        Camera.ZoomToLevel();
231    }
232    void PelaajanTormays(PhysicsObject pelaaja, PhysicsObject kohde)
233    {
234        if (kohde.Tag.ToString() == "piikki1")
235        {
236            AloitaAlusta();
237        }
238        else if (kohde.Tag.ToString() == "p")
239        {
240            AloitaAlusta();
241        }
242        else if (kohde.Tag.ToString() == "maali")
243        {
244            kentanNro++;
245            SeuraavaKentta(kentanNro);
246        }
247        else if (kohde.Tag.ToString() == "bonus")
248        {
249            pisteet.Value+=10;
250            bonus.Destroy();
251        }
252    }
253    void PallonTormays(PhysicsObject piikkipallo, PhysicsObject kohde)
254    {
255        if (kohde.Tag.ToString() == "seina")
256        {
257            piikkipallo.Velocity = new Vector(-piikkipallo.Velocity.X, piikkipallo.Velocity.Y);
258        }
259    }
260    void AvaimenTormays(PhysicsObject avain, PhysicsObject kohde)
261    {
262        if (kohde == pelaaja)
263        {
264            avain.Destroy();
265            for (int i = 0; i < oviLista.Count; i++)
266            {
267                oviLista[i].Destroy();
268            }
269        }
270    }
271    void AloitaAlusta()
272    {
273
274        ClearAll();
275        Ohjaimet();
276        SeuraavaKentta(kentanNro);
277    }
278    void SeuraavaKentta(int kentta)
279    {
280        ClearAll();
281        if (kentta == 1) LuoKentta1();
282        else if (kentta == 2) LuoKentta2();
283        else if (kentta == 3) LuoKentta3();
284        else if (kentta == 4) LuoKentta4();
285        else if (kentta == 5) LuoKentta5();
286        else if (kentta == 6) LuoKentta6();
287        else if (kentta > 6) LuoKentta7();
288
289        Ohjaimet();
290
291    }
292    void Pistelaskuri()
293    {
294        pisteet = new IntMeter(0);
295        ValueDisplay pisteNaytto = new ValueDisplay();
296
297        pisteNaytto.Text = "Pisteitä: ";
298
299        pisteNaytto.X = Screen.Left + 100;
300        pisteNaytto.Y = Screen.Top - 100;
301
302        pisteNaytto.ValueColor = Color.Red;
303        pisteNaytto.TextColor = Color.Red;
304
305        pisteNaytto.BindTo(pisteet);
306
307        Add(pisteNaytto);
308
309    }
310}
Note: See TracBrowser for help on using the repository browser.