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

Revision 8712, 9.9 KB checked in by npo17_22, 4 years ago (diff)

koodaus kokonaan valmis

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