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

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