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

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