source: 2017/24/EljaL/TheMetsäsurvivor/TheMetsäsurvivor/TheMetsäsurvivor/TheMetsäsurvivor.cs @ 9482

Revision 9482, 14.8 KB checked in by rikavila, 22 months 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 TheMetsäsurvivor : PhysicsGame
10{
11
12    PhysicsObject ihminen;
13    PhysicsObject karhuansa;
14    PhysicsObject Generaattori;
15    PhysicsObject karhu;
16    Image ihminenkuva = LoadImage("ihminen");
17    Image TNT = LoadImage("TNT");
18    Image karhukuva = LoadImage("karhu2");
19    Image puukuva = LoadImage("Puu");
20    Image kivikuva = LoadImage("kivi");
21    Image Gene = LoadImage("Generaattori");
22    Timer aikaLaskuri;
23    SoundEffect karhuaani = LoadSoundEffect("karhuaani");
24    SoundEffect musiikki = LoadSoundEffect("musiikki");
25    SoundEffect loppumusa = LoadSoundEffect("loppumusa");
26
27    public override void Begin()
28    {
29        Keyboard.Listen(Key.O, ButtonState.Pressed, Pause, "pysäyttää pelin");
30
31        Keyboard.Listen(Key.L, ButtonState.Down, luokansa, null);
32
33        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
34
35        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
36
37        ControllerOne.Listen(Button.Start, ButtonState.Pressed, Pause, "pysäyttää pelin");
38
39        ControllerOne.Listen(Button.A, ButtonState.Down, luokansa, null);
40
41        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "lopeta peli");
42
43        Keyboard.Listen(Key.M, ButtonState.Pressed, zoom, null);
44        Keyboard.Listen(Key.N, ButtonState.Pressed, zoomi, null);
45
46        IsFullScreen = false;
47
48        ihminen = new PhysicsObject(40, 40);
49        ihminen.CanRotate = true;
50        ihminen.Restitution = 0.1;
51        ihminen.Image = ihminenkuva;
52        ihminen.Shape = Shape.Circle;
53        Add(ihminen);
54
55        luokarhu(700, 700);
56
57        Mouse.IsCursorVisible = true;
58
59
60        Reuna(10, 4000, -2000, 0);
61        Reuna(10, 4000, 2000, 0);
62        Reuna(4000, 10, 0, 2000);
63        Reuna(4000, 10, 0, -2000);
64
65        Generaattori = new PhysicsObject(60, 60);
66        Generaattori.CanRotate = true;
67        Generaattori.Shape = Shape.Circle;
68        Generaattori.Color = Color.Brown;
69        Generaattori.Restitution = 0.5;
70
71        for (int i = 0; i < RandomGen.NextInt(10, 30); i++)
72        {
73            teekivi();
74        }
75
76        for (int i = 0; i < RandomGen.NextInt(100, 200); i++)
77        {
78            teepuu();
79        }
80
81        LuoPuulaskuri();
82        LuoKivilaskuri();
83        luopojolaskuri();
84        luohplaskuri();
85        luopistegen();
86        LuoAikaLaskuri();
87        luopuugen();
88        luokivigen();
89
90        luokentta();
91
92        Keyboard.Listen(Key.A, ButtonState.Down, käännäpelaajaav, null);
93        Keyboard.Listen(Key.D, ButtonState.Down, käännäpelaajaao, null);
94        Keyboard.Listen(Key.W, ButtonState.Down, käännäpelaajaay, null);
95        Keyboard.Listen(Key.S, ButtonState.Down, käännäpelaajaaa, null);
96
97        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-50, 0));
98        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, new Vector(50, 0));
99        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 50));
100        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -50));
101
102        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, LiikutaPelaajaa, null, new Vector(-50, 0));
103        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, LiikutaPelaajaa, null, new Vector(50, 0));
104        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, 50));
105        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, LiikutaPelaajaa, null, new Vector(0, -50));
106
107        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, käännäpelaajaav, null);
108        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, käännäpelaajaao, null);
109        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, käännäpelaajaay, null);
110        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, käännäpelaajaaa, null);
111
112        Camera.Follow(ihminen);
113    }
114
115    void LiikutaPelaajaa(Vector vektori)
116    {
117        ihminen.Push(vektori);
118    }
119    void luokentta()
120    {
121
122
123        Level.Background.Color = Color.Wheat;
124
125        AddCollisionHandler(ihminen, "puu", puutormays);
126    }
127    void käännäpelaajaav()
128    {
129        ihminen.Angle = Angle.FromDegrees(90);
130    }
131    void käännäpelaajaao()
132    {
133        ihminen.Angle = Angle.FromDegrees(-90);
134    }
135    void käännäpelaajaay()
136    {
137        ihminen.Angle = Angle.FromDegrees(-0);
138    }
139    void käännäpelaajaaa()
140    {
141        ihminen.Angle = Angle.FromDegrees(180);
142    }
143    void teekivi()
144    {
145        PhysicsObject kivi = PhysicsObject.CreateStaticObject(100.0, 100.0);
146        kivi.Color = Color.Gray;
147        kivi.X = RandomGen.NextDouble(-2000, 2000);
148        kivi.Y = RandomGen.NextDouble(-2000, 2000);
149        kivi.Tag = "kivi";
150        kivi.Tag = "tolppa";
151        kivi.Image = kivikuva;
152        kivi.Shape = Shape.Circle;
153        Add(kivi);
154
155
156
157
158
159        AddCollisionHandler(ihminen, kivi, kivitormays);
160
161    }
162    IntMeter puuLaskuri;
163
164    void LuoPuulaskuri()
165    {
166        puuLaskuri = new IntMeter(0);
167
168        Label puuNaytto = new Label();
169        puuNaytto.X = Screen.Left + 100;
170        puuNaytto.Y = Screen.Top - 100;
171        puuNaytto.TextColor = Color.Brown;
172        puuNaytto.Color = Color.Wheat;
173        puuNaytto.Title = "puu";
174
175        puuNaytto.BindTo(puuLaskuri);
176        Add(puuNaytto);
177    }
178    IntMeter kivilaskuri;
179
180    void LuoKivilaskuri()
181    {
182        kivilaskuri = new IntMeter(0);
183
184        Label kiviNaytto = new Label();
185        kiviNaytto.X = Screen.Left + 100;
186        kiviNaytto.Y = Screen.Top - 75;
187        kiviNaytto.TextColor = Color.Gray;
188        kiviNaytto.Color = Color.Wheat;
189        kiviNaytto.Title = "kivi";
190
191        kiviNaytto.BindTo(kivilaskuri);
192        Add(kiviNaytto);
193    }
194    void puutormays(PhysicsObject tormaaja, PhysicsObject puu)
195    {
196        puuLaskuri.Value += 1;
197
198    }
199    void kivitormays(PhysicsObject tormaaja, PhysicsObject kivi)
200    {
201        kivilaskuri.Value += 1;
202    }
203    IntMeter pojolaskuri;
204
205    void luopojolaskuri()
206    {
207        pojolaskuri = new IntMeter(0);
208
209        Label pojonaytto = new Label();
210        pojonaytto.X = Screen.Left + 100;
211        pojonaytto.Y = Screen.Top - 50;
212        pojonaytto.TextColor = Color.Black;
213        pojonaytto.Color = Color.Wheat;
214        pojonaytto.Title = "pojot";
215        if (pojolaskuri > 999)
216        {
217            MessageDisplay.Add("Voitit pelin!");
218        }
219
220
221        pojonaytto.BindTo(pojolaskuri);
222        Add(pojonaytto);
223    }
224    IntMeter hplaskuri;
225
226    void luohplaskuri()
227    {
228        hplaskuri = new IntMeter(5);
229        hplaskuri.MinValue = 0;
230        hplaskuri.LowerLimit += ripped;
231        hplaskuri.MaxValue = 10;
232
233        Label hpnaytto = new Label();
234        hpnaytto.X = Screen.Left + 100;
235        hpnaytto.Y = Screen.Top - 125;
236        hpnaytto.TextColor = Color.Red;
237        hpnaytto.Color = Color.Wheat;
238        hpnaytto.Title = "hp";
239
240        hpnaytto.BindTo(hplaskuri);
241        Add(hpnaytto);
242    }
243    void karhutormays(PhysicsObject ihminen, PhysicsObject karhu)
244    {
245        hplaskuri.Value -= 1;
246        karhuaani.Play();
247    }
248
249    void karhukuolema(PhysicsObject karhu, PhysicsObject karhuansa)
250    {
251        karhu.Destroy();
252        Explosion rajahdys = new Explosion(10);
253        rajahdys.Position = karhuansa.Position;
254        Add(rajahdys);
255        luokarhu(300, 300);
256    }
257   
258    void ripped()
259    {
260        MessageDisplay.Add("kuolit");
261        ihminen.Destroy();
262        Explosion rajahdys = new Explosion(100);
263        rajahdys.Position = ihminen.Position;
264        Add(rajahdys);
265    }
266
267    void teepuu()
268    {
269        PhysicsObject puu = PhysicsObject.CreateStaticObject(100.0, 100.0);
270        puu.X = RandomGen.NextDouble(-2000, 2000);
271        puu.Y = RandomGen.NextDouble(-2000, 2000);
272        puu.Color = Color.Green;
273        puu.Tag = "tolppa";
274        puu.Tag = "puu";
275        puu.Image = puukuva;
276        puu.Shape = Shape.Circle;
277        Add(puu);
278    }
279    void Reuna(double leveys, double korkeus, double x, double y)
280    {
281        PhysicsObject reunapalikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
282        reunapalikka.X = x;
283        reunapalikka.Y = y;
284        reunapalikka.Color = Color.Wheat;
285        Add(reunapalikka);
286
287
288    }
289    IntMeter pistegen;
290
291    void luopistegen()
292    {
293        pistegen = new IntMeter(0);
294        pistegen.MinValue = 0;
295
296
297        Label pistegennaytto = new Label();
298        pistegennaytto.X = Screen.Right + -150;
299        pistegennaytto.Y = Screen.Top - 100;
300        pistegennaytto.TextColor = Color.Blue;
301        pistegennaytto.Color = Color.Wheat;
302        pistegennaytto.Title = "pistegeneraattorit";
303        Keyboard.Listen(Key.I, ButtonState.Pressed, pistegeneraattori, null);
304        ControllerOne.Listen(Button.Y, ButtonState.Pressed, pistegeneraattori, null);
305
306        pistegennaytto.BindTo(pistegen);
307        Add(pistegennaytto);
308    }
309    void LuoAikaLaskuri()
310    {
311        aikaLaskuri = new Timer();
312        aikaLaskuri.Timeout += TestaaAika;
313        aikaLaskuri.Start();
314
315        Label aikaNaytto = new Label();
316        aikaNaytto.TextColor = Color.Black;
317        aikaNaytto.X = Screen.Left + 100;
318        aikaNaytto.Y = Screen.Top + -25;
319        aikaNaytto.Color = Color.Wheat;
320        aikaNaytto.DecimalPlaces = 0;
321
322
323        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
324        Add(aikaNaytto);
325    }
326    IntMeter puugen;
327
328    void TestaaAika()
329    {
330        if (pojolaskuri > 999)
331        {
332            aikaLaskuri.Pause();
333            loppumusa.Play();
334        }
335    }
336
337    void luopuugen()
338    {
339        puugen = new IntMeter(0);
340        puugen.MaxValue = (5);
341
342        Label puugennaytto = new Label();
343        puugennaytto.X = Screen.Right + -150;
344        puugennaytto.Y = Screen.Top - 75;
345        puugennaytto.TextColor = Color.Brown;
346        puugennaytto.Color = Color.Wheat;
347        puugennaytto.Title = "puugeneraattorit";
348        Keyboard.Listen(Key.P, ButtonState.Pressed, puugeneraattori, null);
349        ControllerOne.Listen(Button.B, ButtonState.Pressed, puugeneraattori, null);
350
351        puugennaytto.BindTo(puugen);
352        Add(puugennaytto);
353    }
354    IntMeter kivigen;
355
356
357    void luokivigen()
358    {
359        kivigen = new IntMeter(0);
360        kivigen.MaxValue = (5);
361
362        Label kivigennaytto = new Label();
363        kivigennaytto.X = Screen.Right + -150;
364        kivigennaytto.Y = Screen.Top - 50;
365        kivigennaytto.TextColor = Color.Gray;
366        kivigennaytto.Color = Color.Wheat;
367        kivigennaytto.Title = "kivigeneraattorit";
368        Keyboard.Listen(Key.K, ButtonState.Pressed, kivigenraattori, null);
369        ControllerOne.Listen(Button.X, ButtonState.Pressed, kivigenraattori, null);
370
371        kivigennaytto.BindTo(kivigen);
372        Add(kivigennaytto);
373    }
374    void kivigenraattori()
375    {
376        musiikki.Play();
377        if (kivilaskuri > 9)
378        {
379            if (puuLaskuri > 29)
380            {
381                if (kivigen < 5)
382                {
383
384
385                    kivigen.Value += 1;
386                    kivilaskuri.AddOverTime(1000000, 10000000);
387                    kivilaskuri.Value -= 10;
388                    puuLaskuri.Value -= 30;
389                    luogeneraattori(ihminen.X, ihminen.Y);
390                    kivilaskuri.AddOverTime(1000000 * kivigen, 10000000);
391
392                }
393               
394
395                   
396               
397                }
398
399        }
400
401    }
402    void puugeneraattori()
403    {
404        musiikki.Play();
405        if (puuLaskuri > 9)
406        {
407            if (kivilaskuri > 29)
408            {
409                if (puugen < 5)
410                {
411                    puugen.Value += 1;
412                    puuLaskuri.AddOverTime(1000000, 10000000);
413                    puuLaskuri.Value -= 10;
414                    kivilaskuri.Value -= 30;
415                    puuLaskuri.AddOverTime(1000000 * puugen, 10000000);
416                    luogeneraattori(ihminen.X, ihminen.Y);
417                }
418               
419
420                   
421               
422            }
423        }
424    }
425    void pistegeneraattori()
426    {
427        musiikki.Play();
428        if (puuLaskuri > 99)
429        {
430            if (kivilaskuri > 99)
431            {
432                pistegen.Value += 1;
433                pojolaskuri.AddOverTime(1000000, 10000000);
434                puuLaskuri.Value -= 100;
435                kivilaskuri.Value -= 100;
436                luogeneraattori(ihminen.X, ihminen.Y);
437
438                    pojolaskuri.AddOverTime(1000000*pistegen, 10000000);
439
440               
441            }
442        }
443    }
444    void luogeneraattori(double x, double y)
445    {
446        Generaattori = new PhysicsObject(60, 60);
447        Generaattori.CanRotate = true;
448        Generaattori.Shape = Shape.Circle;
449        Generaattori.Color = Color.Brown;
450        Generaattori.X = x;
451        Generaattori.Y = y;
452        Generaattori.Image = Gene;
453        Add(Generaattori);
454    }
455    void luokansa()
456    {
457        if (puuLaskuri > 19)
458        {
459            if(kivilaskuri > 19)
460            {
461                puuLaskuri.Value -= 20;
462                kivilaskuri.Value -= 20;
463                karhuansa = new PhysicsObject(30, 30);
464                karhuansa.Shape = Shape.Circle;
465                karhuansa.Color = Color.Gray;
466                karhuansa.X = ihminen.X;
467                karhuansa.Y = ihminen.Y;
468                karhuansa.Image = TNT;
469                Add(karhuansa);
470                AddCollisionHandler(karhu, karhuansa, karhukuolema);
471
472            }
473        }
474    }
475    void luokarhu(double x, double y)
476    {
477        FollowerBrain seuraajanAivot = new FollowerBrain(ihminen);
478        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
479        satunnaisAivot.ChangeMovementSeconds = 3;
480
481        karhu = new PhysicsObject(70.0, 40.0);
482        karhu.X = x;
483        karhu.Y = y;
484        karhu.Tag = "karhu";
485        karhu.Brain = seuraajanAivot;
486        karhu.Image = karhukuva;
487        karhu.Shape = Shape.Rectangle;
488
489        seuraajanAivot.Speed = 100;
490        seuraajanAivot.DistanceFar = 1000;
491        seuraajanAivot.FarBrain = satunnaisAivot;
492        seuraajanAivot.FarBrain = satunnaisAivot;
493        seuraajanAivot.TurnWhileMoving = true;
494        Add(karhu);
495
496        AddCollisionHandler(ihminen, karhu, karhutormays);
497    }
498    void zoom ()
499    {
500        Camera.Follow(ihminen);
501        Camera.Zoom(1.0);
502    }
503    void zoomi ()
504    {
505        Camera.ZoomToLevel();
506        Camera.ZoomFactor = 0.3;
507    }
508}
Note: See TracBrowser for help on using the repository browser.