source: 2012/23/HannesM/The Game of Rooms/The Game of Rooms/The Game of Rooms/The_Game_of_Rooms.cs @ 2842

Revision 2842, 11.4 KB checked in by hasamati, 8 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 The_Game_of_Rooms : PhysicsGame
10{
11    DoubleMeter elamaMittari;
12    PlatformCharacter pelaaja;
13    bool onTikkaat = false;
14   
15    public override void Begin()
16    {
17        luoKentta();
18
19        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
20        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
21
22    }
23    void luoKentta()
24    {
25        TileMap ruudut = TileMap.FromLevelAsset("The Game Of Rooms (map1)");
26
27        Elama();
28
29        ruudut.SetTileMethod('=', luoseina);
30        ruudut.SetTileMethod('t', luotikkaat);
31        ruudut.SetTileMethod('L', luolopetus);
32        ruudut.SetTileMethod('V', luovihu);
33        ruudut.SetTileMethod('P', luopelaaja);
34        ruudut.SetTileMethod('A', luoammus);
35        ruudut.SetTileMethod('H', luoelama);
36        ruudut.SetTileMethod('D', luoovi);
37        ruudut.SetTileMethod('S', luoseina2);
38        ruudut.SetTileMethod('R', luoseina3);
39        ruudut.SetTileMethod('B', luoseina4);
40        ruudut.SetTileMethod('E', luoseina5);
41        ruudut.SetTileMethod('*', luoseina6);
42        ruudut.SetTileMethod('?', luoseina7);
43        ruudut.SetTileMethod('<', luoseina8);
44        ruudut.SetTileMethod('>', luoseina9);
45        ruudut.SetTileMethod('&', luoseina10);
46        ruudut.Execute();
47
48        Level.BackgroundColor = Color.White;
49
50        Surface vasenReuna = Surface.CreateLeft(Level, 30, 30, 10);
51        vasenReuna.Color = Color.Black;
52        Add(vasenReuna);
53        Surface oikeaReuna = Surface.CreateRight(Level, 30, 30, 10);
54        oikeaReuna.Color = Color.Black;
55        Add(oikeaReuna);
56        Surface yläReuna = Surface.CreateTop(Level, 30, 30, 10);
57        yläReuna.Color = Color.Black;
58        Add(yläReuna);
59        Surface alaReuna = Surface.CreateBottom(Level, 30, 30, 10);
60        alaReuna.Color = Color.Black;
61        Add(alaReuna);
62
63        Gravity = new Vector(0, -800);
64    }
65
66    void luopelaaja(Vector paikka, double leveys, double pituus)
67    {
68        pelaaja = new PlatformCharacter(50, 50);
69        pelaaja.Position = paikka;
70        pelaaja.Shape = Shape.Rectangle;
71        pelaaja.Color = Color.ForestGreen;
72        Image peluri = LoadImage("The Room Fighter");
73        pelaaja.RightIdleAnimation = peluri;
74        pelaaja.LeftIdleAnimation = Image.Mirror(peluri);
75        pelaaja.LeftWalkingAnimation = new Animation(Image.Mirror(peluri));
76        pelaaja.RightWalkingAnimation = new Animation(peluri); 
77        Add(pelaaja);
78
79        Timer Ajastin = new Timer();
80        Ajastin.Interval = 0.1;
81        Ajastin.Timeout += Laitakiipeaan;
82        Ajastin.Start();
83
84        AddCollisionHandler(pelaaja, "pöö", PelaajaAuts);
85        AddCollisionHandler(pelaaja, "Enu", Elamapakki);
86
87        Keyboard.Listen(Key.A, ButtonState.Down,
88           Kavele, null, -100.0);
89        Keyboard.Listen(Key.D, ButtonState.Down,
90           Kavele, null, 100.0);
91        Keyboard.Listen(Key.W, ButtonState.Down,
92           Hyppaa, null, 100.0);
93        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, Ammu, null);
94
95    }
96
97    void luoseina(Vector paikka, double leveys, double korkeus)
98    {
99        PhysicsObject seina = PhysicsObject.CreateStaticObject(20, korkeus);
100        seina.Position = paikka;
101        seina.Shape = Shape.Rectangle;
102        seina.Color = Color.Black;
103        seina.Image = LoadImage("seina1");
104        Add(seina);
105    }
106
107    void luoseina2(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject seina2 = PhysicsObject.CreateStaticObject(leveys, 47.5);
110        seina2.Position = paikka;
111        seina2.Shape = Shape.Rectangle;
112        seina2.Image = LoadImage ("seinaA");
113        seina2.Color = Color.Red;
114        Add(seina2);
115    }
116
117    void luoseina3(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject seina3 = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        seina3.Position = paikka;
121        seina3.Shape = Shape.Rectangle;
122        seina3.Image = LoadImage("seinaB");
123        Add(seina3);
124    }
125
126    void luoseina4(Vector paikka, double leveys, double korkeus)
127    {
128        PhysicsObject seina4 = PhysicsObject.CreateStaticObject(leveys, korkeus);
129        seina4.Position = paikka;
130        seina4.Shape = Shape.Rectangle;
131        seina4.Image = LoadImage("seinaC");
132        Add(seina4);
133    }
134
135    void luoseina5(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject seina5 = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        seina5.Position = paikka;
139        seina5.Shape = Shape.Rectangle;
140        seina5.Image = LoadImage("seinaD");
141        Add(seina5);
142    }
143
144    void luoseina6(Vector paikka, double leveys, double korkeus)
145    {
146        PhysicsObject seina6 = PhysicsObject.CreateStaticObject(leveys, korkeus);
147        seina6.Position = paikka;
148        seina6.Shape = Shape.Rectangle;
149        seina6.Image = LoadImage("seinaE");
150        Add(seina6);
151    }
152
153    void luoseina7(Vector paikka, double leveys, double korkeus)
154    {
155        PhysicsObject seina7 = PhysicsObject.CreateStaticObject(leveys, korkeus);
156        seina7.Position = paikka;
157        seina7.Shape = Shape.Rectangle;
158        seina7.Image = LoadImage("seinaF");
159        Add(seina7);
160    }
161
162    void luoseina8(Vector paikka, double leveys, double korkeus)
163    {
164        PhysicsObject seina8 = PhysicsObject.CreateStaticObject(leveys, korkeus);
165        seina8.Position = paikka;
166        seina8.Shape = Shape.Rectangle;
167        seina8.Image = LoadImage("seinaH");
168        Add(seina8);
169    }
170
171    void luoseina9(Vector paikka, double leveys, double korkeus)
172    {
173        PhysicsObject seina9 = PhysicsObject.CreateStaticObject(leveys, korkeus);
174        seina9.Position = paikka;
175        seina9.Shape = Shape.Rectangle;
176        seina9.Image = LoadImage("seinaI");
177        Add(seina9);
178    }
179
180    void luoseina10(Vector paikka, double leveys, double korkeus)
181    {
182        PhysicsObject seina10 = PhysicsObject.CreateStaticObject(leveys, korkeus);
183        seina10.Position = paikka;
184        seina10.Shape = Shape.Rectangle;
185        seina10.Image = LoadImage("seinaJ");
186        Add(seina10);
187    }
188
189    void luotikkaat(Vector paikka, double leveys, double korkeus)
190    {
191        PhysicsObject tikkaat = PhysicsObject.CreateStaticObject(20, 49);
192        tikkaat.Position = paikka;
193        tikkaat.Shape = Shape.Heart;
194        tikkaat.Color = Color.Blue;
195        tikkaat.Tag = "kello";
196        tikkaat.Image = LoadImage("Tikkaat");
197        tikkaat.IgnoresCollisionResponse = true;
198        Add(tikkaat);
199    }
200
201    void luolopetus(Vector paikka, double leveys, double korkeus)
202    {
203        PhysicsObject lopetus = PhysicsObject.CreateStaticObject(60, 50);
204        lopetus.Position = paikka;
205        lopetus.Color = Color.DarkBrown;
206        lopetus.Shape = Shape.Rectangle;
207        lopetus.IgnoresCollisionResponse = true;
208        Add(lopetus);
209
210    }
211
212    void luovihu(Vector paikka, double leveys, double korkeus)
213    {
214        PlatformCharacter vihu = new PlatformCharacter(50, 50);
215        vihu.Position = paikka;
216        vihu.Color = Color.Crimson;
217        vihu.Shape = Shape.Octagon;
218        vihu.Image = LoadImage("The Room Enemy");
219        vihu.Tag = "pöö";
220
221        FollowerBrain seuraajanAivot = new FollowerBrain();
222        vihu.Brain = seuraajanAivot;
223        seuraajanAivot.Target = pelaaja;
224        seuraajanAivot.Active = true;
225        seuraajanAivot.Speed = 100;
226        seuraajanAivot.TargetFollowDistance = 200;
227        seuraajanAivot.FollowAlways = false;
228        seuraajanAivot.TargetCloseDistance = 0;
229        seuraajanAivot.StopWhenTargetClose = true;
230
231        Add(vihu);
232    }
233
234    void luoammus(Vector paikka, double leveys, double korkeus)
235    {
236        PhysicsObject ammuspaketti = PhysicsObject.CreateStaticObject(20, 20);
237        ammuspaketti.Position = paikka;
238        ammuspaketti.Color = Color.Black;
239        ammuspaketti.Shape = Shape.Diamond;
240        ammuspaketti.Image = LoadImage("Ammuksia");
241        Add(ammuspaketti);
242    }
243
244    void luoelama(Vector paikka, double leveys, double korkeus)
245    {
246        PhysicsObject elama = PhysicsObject.CreateStaticObject(20, 20);
247        elama.Position = paikka;
248        elama.Color = Color.Emerald;
249        elama.Shape = Shape.Diamond;
250        elama.Image = LoadImage("Elma");
251        elama.Tag = "Enu";
252        Add(elama);
253    }
254
255    void luoovi(Vector paikka, double leveys, double korkeus)
256    {
257        PhysicsObject ovi = PhysicsObject.CreateStaticObject(40, 50);
258        ovi.Position = paikka;
259        ovi.Shape = Shape.Rectangle;
260        ovi.Image = LoadImage("Yks Ovi");
261        ovi.Tag = "ovin";
262        ovi.IgnoresCollisionResponse = true;
263        ovi.Color = Color.DarkBrown;
264        Add(ovi);
265    }
266
267    void Kavele( double nopeus )
268    {
269        pelaaja.Walk(nopeus);
270    }
271
272    void Hyppaa(double voima)
273    {
274        if (onTikkaat == false)
275        {
276            pelaaja.Jump(voima);
277        }
278        else
279        {
280            pelaaja.Push(new Vector(0, 1500));
281
282        }
283    }
284
285    void Ammu()
286    {
287        Projectile ammus = new Projectile(4.0, 4.0, Color.Black);
288        ammus.Y = pelaaja.Y + 9;
289        ammus.X = pelaaja.X + 26 * pelaaja.FacingDirection.Vector.X;
290        ammus.Shape = Shape.Rectangle;
291        ammus.Image = LoadImage("Ammus");
292        ammus.IgnoresGravity = true;
293        AddCollisionHandler(ammus, ammuksentormays);
294        Add(ammus);
295        Vector ase = new Vector(pelaaja.FacingDirection.Vector.X * 10000.0, 0.0);
296        ammus.Hit(ase);
297    }
298
299    void PelaajaAuts(PhysicsObject pelaaja, PhysicsObject pöö)
300    {
301        MessageDisplay.Add("ARGH!");
302        elamaMittari.Value--;
303
304        if (elamaMittari.Value < 1)
305        {
306            pelaaja.Destroy();
307        }
308    }
309
310    void Elama()
311    {
312        elamaMittari = new DoubleMeter(5);
313        elamaMittari.MaxValue = 5;
314        ProgressBar elamaPalkki = new ProgressBar(100, 10);
315        elamaPalkki.BindTo(elamaMittari);
316        Add(elamaPalkki);
317
318        elamaPalkki.X = Screen.Right - 100;
319        elamaPalkki.Y = Screen.Top + -100;
320        elamaPalkki.Angle = Angle.RightAngle;
321        elamaPalkki.BarColor = Color.Red;
322        elamaPalkki.BorderColor = Color.Black;
323        elamaPalkki.Angle = Angle.FromDegrees(90);
324        elamaMittari.LowerLimit += ElamaLoppui;
325
326    }
327
328    void ammusmittari()
329    {
330
331    }
332
333    void ElamaLoppui(double mittarinarvo)
334    {
335        MessageDisplay.Add("You are dead! MUAHAHAHAA!");
336    }
337
338    void Elamapakki(PhysicsObject pelaaja, PhysicsObject enu)
339    {
340        if (elamaMittari.Value > 4) 
341        {
342            return;
343        }
344
345
346
347        elamaMittari.Value++;
348        enu.Destroy();
349    }
350
351    void ammuksentormays(PhysicsObject ammus, PhysicsObject vihu)
352    {
353        if (vihu.Tag.ToString() == "pöö")
354        vihu.Destroy();
355        if (vihu != pelaaja && vihu.Tag.ToString() != "ovin")
356        ammus.Destroy();
357    }
358
359    void Laitakiipeaan()
360    {
361       
362        if (this.GetObjectAt(pelaaja.Position, "kello", 0.0) == null)
363        {
364            pelaaja.IgnoresGravity = false;
365            onTikkaat = false;
366        }
367        else
368        {
369            pelaaja.IgnoresGravity = true;
370            onTikkaat = true;
371        }
372
373    }
374}
375
Note: See TracBrowser for help on using the repository browser.