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

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