source: 2013/30/AleksiK/Hazy Maze Game/Hazy Maze Game/Hazy Maze Game/Hazy_Maze_Game.cs @ 4644

Revision 4644, 11.1 KB checked in by alraniko, 7 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Hazy_Maze_Game : PhysicsGame
10{
11    PhysicsObject pelaaja;
12    PhysicsObject kolikko;
13    PhysicsObject Vihu;
14    PhysicsObject kolikkoBlock;
15    PhysicsObject maali;
16    PhysicsObject vaaSinBlock;
17    PhysicsObject vaaSinSwitch;
18    PhysicsObject tyonBlock;
19    PhysicsObject tyonTuho;
20    PhysicsObject tuhonTuho;
21
22    IntMeter kolikkoLaskuri;
23
24    Vector nopeusYlos = new Vector(0, 100);
25    Vector nopeusAlas = new Vector(0, -100);
26    Vector nopeusOikea = new Vector(100, 0);
27    Vector nopeusVasen = new Vector(-100, 0);
28
29    //X = StandardiPala
30    //P = Pelaaja
31    //C = Kolikko
32    //Luku = Luku + 2 oikealle liikkuva vihollinen
33    //Nappaimistön ylarivi (ei P) = Kirjaimen ylapuolella oleva luku + 2 alas liikkuva vihollinen
34    //B = Kolikkoblock
35    //M = Maali
36    //A = Vaaleansininen tuhottava block
37    //S = Vaaleasiniblockin tuhoaja
38    //N = Tyonnettava block
39    //V = Tyonblockin tuhokohde
40    //Z = Tyontuhon tuhokohde
41
42    static String[] rivit = {
43                "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
44                "X                            X",
45                "X                            X",
46                "X                            X",
47                "X                            X",
48                "X                            X",
49                "X                            X",
50                "X                            X",
51                "X                            X",
52                "X                            X",
53                "X                            X",
54                "X                            X",
55                "X                            X",
56                "X                            X",
57                "X                            X",
58                "X                            X",
59                "X                            X",
60                "X                            X",
61                "X                            X",
62                "X                            X",
63                "X                            X",
64                "X                            X",
65                "X                            X",
66                "X                            X",
67                "X                            X",
68                "X                            X",
69                "X                            X",
70                "X                            X",
71                "X                            X",
72                "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
73                };
74
75   
76    static int ruudunLeveys = 1000 / rivit[0].Length;
77    static int ruudunKorkeus = 1000 / rivit.Length;
78
79    public override void Begin()
80    {
81        // TODO: Kirjoita ohjelmakoodisi tähän
82        //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
83
84        ruudunLeveys = (int)(Screen.Height / rivit[0].Length);
85        ruudunKorkeus = (int)(Screen.Height / rivit.Length);
86
87        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
88        Level.BackgroundColor = Color.Black;
89
90        LuoKolikkoLaskuri();
91        LuoMaailma();
92        Ohjaus();
93    }
94
95    public void Ohjaus()
96    {
97        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusYlos);
98        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
99        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusAlas);
100        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
101
102        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusOikea);
103        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
104        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusVasen);
105        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
106    }
107
108    public void LuoMaailma()
109    {
110        TileMap tiles = TileMap.FromStringArray(rivit);
111        tiles.SetTileMethod('X', LuoStandardiPala);
112        tiles.SetTileMethod('P', LuoPelaaja);
113        tiles.SetTileMethod('C', LuoKolikko);
114        tiles.SetTileMethod('B', LuoKolikkoBlock);
115        tiles.SetTileMethod('M', LuoMaali);
116        tiles.SetTileMethod('A', LuoVaaSinBlock);
117        tiles.SetTileMethod('S', LuoVaaSinSwitch);
118        tiles.SetTileMethod('N', LuoTyonBlock);
119        tiles.SetTileMethod('V', LuoTyonTuho);
120        tiles.SetTileMethod('Z', LuoTuhonTuho);
121        tiles.SetTileMethod('1', LuoVihu, 72.0, 0.0);
122        tiles.SetTileMethod('2', LuoVihu, 104.0, 0.0);
123        tiles.SetTileMethod('3', LuoVihu, 136.0, 0.0);
124        tiles.SetTileMethod('4', LuoVihu, 168.0, 0.0);
125        tiles.SetTileMethod('5', LuoVihu, 200.0, 0.0);
126        tiles.SetTileMethod('6', LuoVihu, 232.0, 0.0);
127        tiles.SetTileMethod('7', LuoVihu, 264.0, 0.0);
128        tiles.SetTileMethod('8', LuoVihu, 296.0, 0.0);
129        tiles.SetTileMethod('9', LuoVihu, 338.0, 0.0);
130        tiles.SetTileMethod('Q', LuoVihu, 0.0, 72.0);
131        tiles.SetTileMethod('W', LuoVihu, 0.0, 104.0);
132        tiles.SetTileMethod('E', LuoVihu, 0.0, 136.0);
133        tiles.SetTileMethod('R', LuoVihu, 0.0, 168.0);
134        tiles.SetTileMethod('T', LuoVihu, 0.0, 200.0);
135        tiles.SetTileMethod('Y', LuoVihu, 0.0, 232.0);
136        tiles.SetTileMethod('U', LuoVihu, 0.0, 264.0);
137        tiles.SetTileMethod('I', LuoVihu, 0.0, 296.0);
138        tiles.SetTileMethod('O', LuoVihu, 0.0, 338.0);
139        tiles.Execute(ruudunLeveys, ruudunKorkeus);
140    }
141
142    public void LuoKolikkoLaskuri()
143    {
144        kolikkoLaskuri = new IntMeter(0);
145        kolikkoLaskuri.MaxValue = 100;
146    }
147
148    public void LuoStandardiPala(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
149    {
150        PhysicsObject standardiPala = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
151        standardiPala.Color = Color.DarkBlue;
152        standardiPala.Position = paikka;
153        standardiPala.Restitution = 0.0;
154        Add(standardiPala);
155    }
156
157    public void LuoPelaaja(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
158    {
159        pelaaja = new PhysicsObject(19, 19);
160        pelaaja.Color = Color.White;
161        pelaaja.Shape = Shape.Circle;
162        pelaaja.Position = paikka;
163        pelaaja.Tag = "pelaaja";
164        pelaaja.Restitution = 0.0;
165        Add(pelaaja);
166    }
167
168    public void LuoKolikko(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
169    {
170        kolikko = PhysicsObject.CreateStaticObject(10, 10);
171        kolikko.Color = Color.Yellow;
172        kolikko.Shape = Shape.Circle;
173        kolikko.Position = paikka;
174        kolikko.Restitution = 0.0;
175        Add(kolikko);
176        AddCollisionHandler(kolikko, "pelaaja", KerasitKolikon);
177    }
178
179    public void LuoKolikkoBlock(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
180    {
181        kolikkoBlock = PhysicsObject.CreateStaticObject(34, 34);
182        kolikkoBlock.Color = Color.Yellow;
183        kolikkoBlock.Position = paikka;
184        kolikkoBlock.Restitution = 0.0;
185        Add(kolikkoBlock);
186    }
187
188    public void LuoMaali(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
189    {
190        maali = PhysicsObject.CreateStaticObject(34, 34);
191        maali.Color = Color.AshGray;
192        maali.Position = paikka;
193        maali.Restitution = 0.0;
194        Add(maali);
195        AddCollisionHandler(maali, "pelaaja", TulitMaaliin);
196    }
197
198    public void LuoTyonBlock(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
199    {
200        tyonBlock = new PhysicsObject(34, 34, Shape.Circle);
201        tyonBlock.Color = Color.Brown;
202        tyonBlock.Position = paikka;
203        tyonBlock.Restitution = 0.0;
204        tyonBlock.Tag = "tyonBlock";
205        Add(tyonBlock);
206    }
207
208    public void LuoTyonTuho(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
209    {
210        tyonTuho = PhysicsObject.CreateStaticObject(34, 34);
211        tyonTuho.Color = Color.LightPink;
212        tyonTuho.Position = paikka;
213        tyonTuho.Restitution = 0.0;
214        Add(tyonTuho);
215        AddCollisionHandler(tyonTuho, "tyonBlock", TyoTormasi);
216    }
217
218    public void LuoTuhonTuho(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
219    {
220        tuhonTuho = PhysicsObject.CreateStaticObject(34, 34);
221        tuhonTuho.Color = Color.Magenta;
222        tuhonTuho.Position = paikka;
223        tuhonTuho.Restitution = 0.0;
224        Add(tuhonTuho);
225    }
226
227    public void LuoVaaSinBlock(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
228    {
229        vaaSinBlock = PhysicsObject.CreateStaticObject(34, 34);
230        vaaSinBlock.Color = Color.LightBlue;
231        vaaSinBlock.Shape = Shape.Pentagon;
232        vaaSinBlock.Position = paikka;
233        vaaSinBlock.Restitution = 0.0;
234        Add(vaaSinBlock);
235    }
236
237    public void LuoVaaSinSwitch(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
238    {
239        vaaSinSwitch = PhysicsObject.CreateStaticObject(34, 34);
240        vaaSinSwitch.Color = Color.LightBlue;
241        vaaSinSwitch.Shape = Shape.Diamond;
242        vaaSinSwitch.Position = paikka;
243        vaaSinSwitch.Restitution = 0.0;
244        Add(vaaSinSwitch);
245        AddCollisionHandler(vaaSinSwitch, "pelaaja", OsuitVaaSinSwitch);
246    }
247
248    void TyoTormasi(PhysicsObject tormaaja, PhysicsObject kohde)
249    {
250        tormaaja.Destroy();
251        kohde.Destroy();
252        tuhonTuho.Destroy();
253    }
254
255    void OsuitVaaSinSwitch(PhysicsObject tormaaja, PhysicsObject pelaaja)
256    {
257        vaaSinSwitch.Destroy();
258        vaaSinBlock.Destroy();
259    }
260 
261    void KerasitKolikon(PhysicsObject kolikko, PhysicsObject pelaaja)
262    {
263        kolikko.Destroy();
264        kolikkoLaskuri.Value += 1;
265
266        if (kolikkoLaskuri.Value == 20)
267        {
268            kolikkoBlock.Destroy();
269            kolikkoLaskuri.Reset();
270        }
271
272    }
273
274    void Kuolit(PhysicsObject tormaaja, PhysicsObject pelaaja)
275    {
276        pelaaja.Destroy();
277    }
278
279    void TulitMaaliin(PhysicsObject tormaaja, PhysicsObject pelaaja)
280    {
281        pelaaja.Destroy();
282    }
283
284    public void AsetaNopeus(PhysicsObject pelaaja, Vector nopeus)
285    {
286        pelaaja.Velocity = nopeus;
287    }
288
289    public void LuoVihu(Vector paikka, double ruudunLeveys, double ruudunKorkeus, double r, double d)
290    {
291        Vihu = new PhysicsObject(30, 30);
292        Vihu.Color = Color.Red;
293        Vihu.Shape = Shape.Circle;
294        Vihu.Position = paikka;
295        Add(Vihu);
296        AddCollisionHandler(Vihu, "pelaaja", Kuolit);
297        LuoVihuAivot(paikka, r, d);
298    }
299
300    public void LuoVihuAivot(Vector paikka, double r, double d)
301    {
302        List<Vector> vihuPolku = new List<Vector>();
303        vihuPolku.Add(new Vector(paikka.X + r, paikka.Y));
304        vihuPolku.Add(new Vector(paikka.X, paikka.Y - d));
305
306        PathFollowerBrain pfb = new PathFollowerBrain();
307        pfb.Path = vihuPolku;
308        Vihu.Brain = pfb;
309        pfb.Active = true;
310        pfb.Loop = true;
311        pfb.Speed = 125;
312    }
313}
Note: See TracBrowser for help on using the repository browser.