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

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