source: 2016/koodauskerho/JereM/MurkkuPeli/MurkkuPeli/MurkkuPeli/MurkkuPeli.cs @ 9394

Revision 9394, 6.4 KB checked in by npo17_80, 23 months ago (diff)

saatiin pikkumurkut spawnaamaan joka 10 sekuntti.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class MurkkuPeli : PhysicsGame
10{
11    PhysicsObject isomurkku;
12    Image taustakuva = LoadImage("taustakuva");
13
14    Image OlionKuva = LoadImage("isomurkku");
15
16    Image OlionKuva2 = LoadImage("pienimurkku");
17
18    DoubleMeter elamalaskuri;
19
20    public override void Begin()
21    {
22        LuoAlkuvalikko();
23
24       
25
26    }
27
28   
29
30    void luoElamaLaskuri ()
31    {
32
33        elamalaskuri = new DoubleMeter(10);
34        elamalaskuri.MaxValue = 20;
35        elamalaskuri.LowerLimit += ElamaLoppui;
36
37        ProgressBar elamaPalkki = new ProgressBar(150, 20);
38        elamaPalkki.X = Screen.Left + 150;
39        elamaPalkki.Y = Screen.Top - 50;
40        elamaPalkki.BindTo(elamalaskuri);
41        Add(elamaPalkki);
42
43       
44
45
46    }
47
48    void ElamaLoppui()
49    {
50    MessageDisplay. Add("Kuolit");
51        isomurkku.Destroy();
52
53        LuoLopetusValikko();
54       
55
56
57
58    }
59    void LuoAlkuvalikko()
60    {
61        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko",
62"Aloita peli", "Lopeta");
63
64        alkuValikko.AddItemHandler(0, AloitaPeli);
65        alkuValikko.AddItemHandler(1, Exit);
66
67        Add(alkuValikko);
68
69       
70
71 
72   
73    }
74
75    void AloitaPeli()
76    {
77
78        ClearAll();
79        Level.Width = 1500;
80        Level.Height = 1500;
81
82        LuoAikaLaskuri();
83
84        Level.Background.Image = taustakuva;
85        Level.Background.FitToLevel();
86
87        Camera.StayInLevel = true;
88        isomurkku = new PhysicsObject(100.0, 100.0);
89        Add(isomurkku);
90        isomurkku.CanRotate = false;
91        isomurkku.Image = OlionKuva;
92        isomurkku.LinearDamping = 0.95;
93        AddCollisionHandler(isomurkku, "marja", SyoMarja);
94        AddCollisionHandler(isomurkku, "pienimurkku", TormaaMurkkuun);
95        isomurkku.Image = OlionKuva;
96        PienetMurkut();
97       
98
99        Marjat
100            ();
101       
102
103        Mouse.ListenMovement(0.1, Tahtaa, "tähtää");
104
105
106        IsMouseVisible = true;
107
108        Camera.Follow(isomurkku);
109
110        Camera.Zoom(2.0);
111        // TODO: Kirjoita ohjelmakoodisi tähän
112
113        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
114
115        //Level.CreateBorders();
116        PhysicsObject ylareuna = Level.CreateTopBorder(0.0, false);
117
118        PhysicsObject alareuna = Level.CreateBottomBorder(0.0, false);
119
120        PhysicsObject oikeareuna = Level.CreateRightBorder(0.0, false);
121
122        PhysicsObject vasenreuna = Level.CreateLeftBorder(0.0, false);
123
124
125        luoElamaLaskuri();
126
127
128
129        Keyboard.Listen(Key.Left, ButtonState.Down,
130          LiikutaPelaajaa, null, new Vector(-500, 0));
131        Keyboard.Listen(Key.Right, ButtonState.Down,
132          LiikutaPelaajaa, null, new Vector(500, 0));
133        Keyboard.Listen(Key.Up, ButtonState.Down,
134          LiikutaPelaajaa, null, new Vector(0, 500));
135        Keyboard.Listen(Key.Down, ButtonState.Down,
136          LiikutaPelaajaa, null, new Vector(0, -500));
137    }
138
139    void Tahtaa(AnalogState hiirenLiike)
140    {
141        Vector suunta = Mouse.PositionOnWorld - isomurkku.Position;
142        isomurkku.Angle = suunta.Angle;
143    }
144    void PienetMurkut()
145    {
146        PieniMurkku(Level.Left, Level.Top);
147        PieniMurkku(Level.Right, Level.Top);
148        PieniMurkku(Level.Right, Level.Bottom);
149        PieniMurkku(Level.Left, Level.Bottom);
150
151       
152
153    }
154
155    void PieniMurkku(double x, double y)
156    {
157        PhysicsObject pienimurkku = new PhysicsObject(40.0, 40.0);
158        Add(pienimurkku);
159        pienimurkku.Image = OlionKuva;
160
161        pienimurkku.X = x;
162        pienimurkku.Y = y;
163        pienimurkku.Tag =  "pienimurkku";
164
165        pienimurkku.Image = OlionKuva2;
166
167        FollowerBrain seuraajanAivot = new FollowerBrain(isomurkku);
168
169        seuraajanAivot.Speed = 150;                 // Millä nopeudella kohdetta seurataan
170        seuraajanAivot.DistanceFar = 6000;           // Etäisyys jolla aletaan seurata kohdetta
171        seuraajanAivot.DistanceClose = 100;         // Etäisyys jolloin ollaan lähellä kohdetta
172        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
173        //seuraajanAivot.FarBrain = satunnaisAivot;   // Käytetään satunnaisaivoja kun ollaan kaukana
174
175        pienimurkku.Brain = seuraajanAivot;
176    }
177
178
179    void LiikutaPelaajaa(Vector vektori)
180    {
181        isomurkku.Push(vektori);
182
183
184    }
185
186
187
188
189    void AsetaOhjaimet()
190    {
191
192    }
193
194    void FollowerBrain()
195    {
196
197       
198    }
199
200    void Marjat()
201    {
202        for (int i = 0; i < 20; i++)
203        {
204
205            Marja();
206           
207        }
208
209    }
210
211    void Marja()
212    {
213        PhysicsObject pallo = new PhysicsObject(15.0, 15.0);
214        Add(pallo);
215        pallo.Color = Color.Red;
216        pallo.Shape = Shape.Circle;
217        pallo.Tag = "marja";
218        pallo.X = RandomGen.NextDouble(Level.Left, Level.Right);
219        pallo.Y = RandomGen.NextDouble(Level.Bottom, Level.Top);
220
221       
222    }
223    void Törmäys()
224    {
225
226    }
227
228    void SyoMarja(PhysicsObject tormaaja, PhysicsObject kohde)
229    {
230        kohde.Destroy();
231        MessageDisplay.Add("Sait elämän!");
232
233        elamalaskuri.Value += 10;
234
235        Marja();
236
237    }
238   
239    void TormaaMurkkuun(PhysicsObject tormaaja, PhysicsObject isomurkku)
240    {
241        MessageDisplay.Add("Sinuun osui!");
242        elamalaskuri.Value -= 1;
243    }
244   
245    void LuoLopetusValikko()
246    {
247        MultiSelectWindow LopetusValikko = new MultiSelectWindow("Pelin Lopetusvalikko",
248"Yritä uudelleen", "Lopeta");
249        Add(LopetusValikko);
250
251        LopetusValikko.AddItemHandler(0, AloitaPeli);
252
253        LopetusValikko.AddItemHandler(1, Exit);
254
255    }
256    void YritaUudelleen()
257    {
258
259    }
260
261    void LuoAikaLaskuri()
262    {
263        Timer aikaLaskuri = new Timer();
264        aikaLaskuri.Interval = 20;
265        aikaLaskuri.Timeout += AikaLoppui;
266        aikaLaskuri.Start();
267
268       
269    }
270
271    void AikaLoppui()
272    {
273       
274
275        PieniMurkku(Level.Left, Level.Top);
276        PieniMurkku(Level.Right, Level.Top);
277        PieniMurkku(Level.Right, Level.Bottom);
278        PieniMurkku(Level.Left, Level.Bottom);
279       
280    }
281
282
283}
284
285
Note: See TracBrowser for help on using the repository browser.