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

Revision 8722, 10.4 KB checked in by npo17_22, 2 years ago (diff)

peli on kokonaan valmis mutta ei ole testattu

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