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

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