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

Revision 4645, 11.2 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 = Vaaleansiniblock
37    //S = Vaaleasiniswitch
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       
85
86        ruudunLeveys = (int)(Screen.Height / rivit[0].Length);
87        ruudunKorkeus = (int)(Screen.Height / rivit.Length);
88
89        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
90        Level.BackgroundColor = Color.Black;
91
92        LuoKolikkoLaskuri();
93        LuoMaailma();
94        Ohjaus();
95    }
96
97    public void Ohjaus()
98    {
99        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusYlos);
100        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
101        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusAlas);
102        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
103
104        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusOikea);
105        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
106        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus, null, pelaaja, nopeusVasen);
107        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus, null, pelaaja, Vector.Zero);
108    }
109
110    public void LuoMaailma()
111    {
112        TileMap tiles = TileMap.FromStringArray(rivit);
113        tiles.SetTileMethod('X', LuoStandardiPala);
114        tiles.SetTileMethod('P', LuoPelaaja);
115        tiles.SetTileMethod('C', LuoKolikko);
116        tiles.SetTileMethod('B', LuoKolikkoBlock);
117        tiles.SetTileMethod('M', LuoMaali);
118        tiles.SetTileMethod('A', LuoVaaSinBlock);
119        tiles.SetTileMethod('S', LuoVaaSinSwitch);
120        tiles.SetTileMethod('N', LuoTyonBlock);
121        tiles.SetTileMethod('V', LuoTyonTuho);
122        tiles.SetTileMethod('Z', LuoTuhonTuho);
123        tiles.SetTileMethod('1', LuoVihu, 72.0, 0.0);
124        tiles.SetTileMethod('2', LuoVihu, 104.0, 0.0);
125        tiles.SetTileMethod('3', LuoVihu, 136.0, 0.0);
126        tiles.SetTileMethod('4', LuoVihu, 168.0, 0.0);
127        tiles.SetTileMethod('5', LuoVihu, 200.0, 0.0);
128        tiles.SetTileMethod('6', LuoVihu, 232.0, 0.0);
129        tiles.SetTileMethod('7', LuoVihu, 264.0, 0.0);
130        tiles.SetTileMethod('8', LuoVihu, 296.0, 0.0);
131        tiles.SetTileMethod('9', LuoVihu, 338.0, 0.0);
132        tiles.SetTileMethod('Q', LuoVihu, 0.0, 72.0);
133        tiles.SetTileMethod('W', LuoVihu, 0.0, 104.0);
134        tiles.SetTileMethod('E', LuoVihu, 0.0, 136.0);
135        tiles.SetTileMethod('R', LuoVihu, 0.0, 168.0);
136        tiles.SetTileMethod('T', LuoVihu, 0.0, 200.0);
137        tiles.SetTileMethod('Y', LuoVihu, 0.0, 232.0);
138        tiles.SetTileMethod('U', LuoVihu, 0.0, 264.0);
139        tiles.SetTileMethod('I', LuoVihu, 0.0, 296.0);
140        tiles.SetTileMethod('O', LuoVihu, 0.0, 338.0);
141        tiles.Execute(ruudunLeveys, ruudunKorkeus);
142    }
143
144    public void LuoKolikkoLaskuri()
145    {
146        kolikkoLaskuri = new IntMeter(0);
147        kolikkoLaskuri.MaxValue = 100;
148    }
149
150    public void LuoStandardiPala(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
151    {
152        PhysicsObject standardiPala = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
153        standardiPala.Color = Color.DarkBlue;
154        standardiPala.Position = paikka;
155        standardiPala.Restitution = 0.0;
156        Add(standardiPala);
157    }
158
159    public void LuoPelaaja(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
160    {
161        pelaaja = new PhysicsObject(ruudunLeveys / 1.6, ruudunKorkeus / 1.6);
162        pelaaja.Color = Color.White;
163        pelaaja.Shape = Shape.Circle;
164        pelaaja.Position = paikka;
165        pelaaja.Tag = "pelaaja";
166        pelaaja.Restitution = 0.0;
167        Add(pelaaja);
168    }
169
170    public void LuoKolikko(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
171    {
172        kolikko = PhysicsObject.CreateStaticObject(ruudunLeveys / 3, ruudunKorkeus / 3);
173        kolikko.Color = Color.Yellow;
174        kolikko.Shape = Shape.Circle;
175        kolikko.Position = paikka;
176        kolikko.Restitution = 0.0;
177        Add(kolikko);
178        AddCollisionHandler(kolikko, "pelaaja", KerasitKolikon);
179    }
180
181    public void LuoKolikkoBlock(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
182    {
183        kolikkoBlock = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
184        kolikkoBlock.Color = Color.Yellow;
185        kolikkoBlock.Position = paikka;
186        kolikkoBlock.Restitution = 0.0;
187        Add(kolikkoBlock);
188    }
189
190    public void LuoMaali(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
191    {
192        maali = PhysicsObject.CreateStaticObject(34, 34);
193        maali.Color = Color.AshGray;
194        maali.Position = paikka;
195        maali.Restitution = 0.0;
196        Add(maali);
197        AddCollisionHandler(maali, "pelaaja", TulitMaaliin);
198    }
199
200    public void LuoTyonBlock(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
201    {
202        tyonBlock = new PhysicsObject(ruudunLeveys, ruudunKorkeus, Shape.Circle);
203        tyonBlock.Color = Color.Brown;
204        tyonBlock.Position = paikka;
205        tyonBlock.Restitution = 0.0;
206        tyonBlock.Tag = "tyonBlock";
207        Add(tyonBlock);
208    }
209
210    public void LuoTyonTuho(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
211    {
212        tyonTuho = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
213        tyonTuho.Color = Color.LightPink;
214        tyonTuho.Position = paikka;
215        tyonTuho.Restitution = 0.0;
216        Add(tyonTuho);
217        AddCollisionHandler(tyonTuho, "tyonBlock", TyoTormasi);
218    }
219
220    public void LuoTuhonTuho(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
221    {
222        tuhonTuho = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
223        tuhonTuho.Color = Color.Magenta;
224        tuhonTuho.Position = paikka;
225        tuhonTuho.Restitution = 0.0;
226        Add(tuhonTuho);
227    }
228
229    public void LuoVaaSinBlock(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
230    {
231        vaaSinBlock = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
232        vaaSinBlock.Color = Color.LightBlue;
233        vaaSinBlock.Shape = Shape.Pentagon;
234        vaaSinBlock.Position = paikka;
235        vaaSinBlock.Restitution = 0.0;
236        Add(vaaSinBlock);
237    }
238
239    public void LuoVaaSinSwitch(Vector paikka, double ruudunLeveys, double ruudunKorkeus)
240    {
241        vaaSinSwitch = PhysicsObject.CreateStaticObject(ruudunLeveys, ruudunKorkeus);
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.