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

Revision 8754, 10.9 KB checked in by npo17_22, 4 years ago (diff)

KAikki on oikeasti ihan kokonaan valmista

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