1 | using System; |
---|
2 | using System.Collections.Generic; |
---|
3 | using Jypeli; |
---|
4 | using Jypeli.Assets; |
---|
5 | using Jypeli.Controls; |
---|
6 | using Jypeli.Effects; |
---|
7 | using Jypeli.Widgets; |
---|
8 | |
---|
9 | class Pelaaja : PhysicsObject |
---|
10 | { |
---|
11 | public IntMeter elamaLaskuri = new IntMeter(3, 0, 3); |
---|
12 | |
---|
13 | public Pelaaja(double leveys, double korkeus) |
---|
14 | : base(leveys, korkeus) |
---|
15 | { |
---|
16 | elamaLaskuri.LowerLimit += delegate |
---|
17 | { |
---|
18 | this.Destroy(); |
---|
19 | }; |
---|
20 | } |
---|
21 | } |
---|
22 | |
---|
23 | public class Water_wey : PhysicsGame |
---|
24 | { |
---|
25 | //------------------------------------------------------------- PhysicsObject |
---|
26 | PhysicsObject vesi; |
---|
27 | PhysicsObject palikka; |
---|
28 | PhysicsObject kulma1; |
---|
29 | PhysicsObject kulma2; |
---|
30 | PhysicsObject kulma3; |
---|
31 | PhysicsObject kulma4; |
---|
32 | int siittiolkm = 0; |
---|
33 | Pelaaja pelaaja; |
---|
34 | Pelaaja pelaaja2; |
---|
35 | Image[] pelaaja1Kuvat = LoadImages("pelaaja1/pelaaja", "pelaaja1/pelaaja0.2", "pelaaja1/pelaaja", "pelaaja1/pelaaja0.3"); |
---|
36 | Image[] pelaaja2Kuvat = LoadImages("pelaaja2/KALA20.1", "pelaaja2/KALA20.2", "pelaaja2/KALA20.1", "pelaaja2/KALA20.3"); |
---|
37 | |
---|
38 | IntMeter pistelaskuri1; |
---|
39 | IntMeter pistelaskuri2; |
---|
40 | bool survival = false; |
---|
41 | bool StoryMode = false; |
---|
42 | |
---|
43 | public override void Begin() |
---|
44 | { |
---|
45 | ClearAll(); |
---|
46 | |
---|
47 | MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", |
---|
48 | "Story Mode", "Survival"); |
---|
49 | alkuValikko.ItemSelected += PainettiinValikonNappia; |
---|
50 | Add(alkuValikko); |
---|
51 | |
---|
52 | } |
---|
53 | |
---|
54 | void AloitaSurvival() |
---|
55 | { |
---|
56 | survival = true; |
---|
57 | StoryMode = false; |
---|
58 | |
---|
59 | MediaPlayer.Play("musat/Mega game aqvashop"); |
---|
60 | MediaPlayer.IsRepeating = true; |
---|
61 | //PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); |
---|
62 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli");//Confirm |
---|
63 | |
---|
64 | Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "aloita alusta"); |
---|
65 | // Keyboard.Listen(Key.Right, ButtonState.Pressed, Gravity, new Vector(-100, 0); |
---|
66 | pelaaja = LuoPelaaja(new Vector(-100, -100), 100, 50, pelaaja1Kuvat); |
---|
67 | pelaaja2 = LuoPelaaja(new Vector(100, -100), 100, 50, pelaaja2Kuvat); |
---|
68 | |
---|
69 | pistelaskuri1 = LuoPistelaskuriJaNaytto(Screen.Left + 100, Screen.Top - 100, new Color(0, 0, 255, 255), Color.White); |
---|
70 | pistelaskuri2 = LuoPistelaskuriJaNaytto(Screen.Right - 100, Screen.Top - 100, new Color(255, 255, 0, 255), Color.Black); |
---|
71 | |
---|
72 | AddCollisionHandler(pelaaja, "siittio", CollisionHandler.AddMeterValue(pistelaskuri1, 1)); |
---|
73 | AddCollisionHandler(pelaaja2, "siittio", CollisionHandler.AddMeterValue(pistelaskuri2, 1)); |
---|
74 | |
---|
75 | |
---|
76 | |
---|
77 | LuoSiittio(Level.GetRandomPosition(), 24, 24); |
---|
78 | lisaaohjaimet(); |
---|
79 | luopelaajalleelämänäytto(pelaaja, Screen.Left +200, Screen.Top -100); |
---|
80 | luopelaajalleelämänäytto(pelaaja2, Screen.Right - 400, Screen.Top - 100); |
---|
81 | // Gravity = new Vector(0, -500); |
---|
82 | Level.CreateBorders(); |
---|
83 | //IsFullScreen = true; |
---|
84 | Level.Background.Image = LoadImage("kentta/underwater"); |
---|
85 | Level.Background.FitToLevel(); |
---|
86 | Camera.ZoomToLevel(); |
---|
87 | |
---|
88 | int Laskuri = 0; |
---|
89 | while (Laskuri < 1000) |
---|
90 | { |
---|
91 | vesi = new PhysicsObject(25, 25); |
---|
92 | vesi.Shape = Shape.Circle; |
---|
93 | |
---|
94 | vesi.Color = new Color(0, 0, 100, 5); |
---|
95 | vesi.Mass = 0.5; |
---|
96 | vesi.X = RandomGen.NextDouble(Level.Left, Level.Right); |
---|
97 | vesi.Y = RandomGen.NextDouble(Level.Bottom, Level.Top); |
---|
98 | Add(vesi); |
---|
99 | Laskuri++; |
---|
100 | } |
---|
101 | LuoKala(pelaaja); |
---|
102 | LuoKala(pelaaja2); |
---|
103 | } |
---|
104 | |
---|
105 | void AloitaStoryMode() |
---|
106 | { |
---|
107 | StoryMode = true; |
---|
108 | survival = false; |
---|
109 | |
---|
110 | LuoKentta(); |
---|
111 | Camera.Follow(pelaaja); |
---|
112 | Camera.ZoomFactor = 20; |
---|
113 | MediaPlayer.Play("musat/Mega game aqvashop"); |
---|
114 | MediaPlayer.IsRepeating = true; |
---|
115 | Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Lopeta peli"); |
---|
116 | Keyboard.Listen(Key.Space, ButtonState.Pressed, Begin, "aloita alusta"); |
---|
117 | pistelaskuri1 = LuoPistelaskuriJaNaytto(Screen.Left + 100, Screen.Top - 100, new Color(0, 0, 255, 255), Color.White); |
---|
118 | pistelaskuri1.MaxValue = siittiolkm; |
---|
119 | AddCollisionHandler(pelaaja, "siittio", CollisionHandler.AddMeterValue(pistelaskuri1, 1)); |
---|
120 | lisaaohjaimet(); |
---|
121 | luopelaajalleelämänäytto(pelaaja, Screen.Left + 200, Screen.Top - 100); |
---|
122 | Level.CreateBorders(); |
---|
123 | Level.Background.Image = LoadImage("kentta/underwater"); |
---|
124 | Level.Background.FitToLevel(); |
---|
125 | Camera.StayInLevel = true; |
---|
126 | pistelaskuri1.UpperLimit += KaikkiKeratty; |
---|
127 | } |
---|
128 | void PainettiinValikonNappia(int valinta) |
---|
129 | { |
---|
130 | switch (valinta) |
---|
131 | { |
---|
132 | case 0: |
---|
133 | AloitaStoryMode(); |
---|
134 | break; |
---|
135 | case 1: |
---|
136 | AloitaSurvival(); |
---|
137 | break; |
---|
138 | |
---|
139 | } |
---|
140 | } |
---|
141 | void KaikkiKeratty() |
---|
142 | { |
---|
143 | |
---|
144 | } |
---|
145 | void LuoKentta() |
---|
146 | { |
---|
147 | ColorTileMap kentta = ColorTileMap.FromLevelAsset("kentta/kentta1"); |
---|
148 | kentta.SetTileMethod("00FF00", delegate(Vector paikka, double l, double k) { pelaaja = LuoPelaaja(paikka, 5, 2.5, pelaaja1Kuvat); pelaaja.Mass = 1000; pelaaja.LinearDamping = 0.96; }); |
---|
149 | kentta.SetTileMethod(Color.Black, LuoPalikka); |
---|
150 | kentta.SetTileMethod("FF006E", Luotausta); |
---|
151 | kentta.SetTileMethod("FF0000", LuoSiittio); |
---|
152 | kentta.SetTileMethod("0094FF", luokulma1); |
---|
153 | kentta.SetTileMethod("00FFFF", luokulma2); |
---|
154 | kentta.SetTileMethod("FF6A00", luokulma3); |
---|
155 | kentta.SetTileMethod("FFD800", luokulma4); |
---|
156 | kentta.Execute(2, 2); |
---|
157 | } |
---|
158 | IntMeter LuoPistelaskuriJaNaytto(double x, double y, Color naytonTausta, Color tekstinVari) |
---|
159 | { |
---|
160 | IntMeter pisteLaskuri = new IntMeter(0); |
---|
161 | Label pisteNaytto = new Label(); |
---|
162 | pisteNaytto.X = x; |
---|
163 | pisteNaytto.Y = y; |
---|
164 | pisteNaytto.TextColor = tekstinVari; |
---|
165 | pisteNaytto.YMargin = 6; |
---|
166 | pisteNaytto.XMargin = 12; |
---|
167 | pisteNaytto.Color = naytonTausta; |
---|
168 | pisteNaytto.BindTo(pisteLaskuri); |
---|
169 | Add(pisteNaytto); |
---|
170 | return pisteLaskuri; |
---|
171 | |
---|
172 | } |
---|
173 | void luokulma1(Vector paikka, double leveys, double korkeus) |
---|
174 | { |
---|
175 | PhysicsObject kulma1 = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
176 | kulma1.Position = paikka; |
---|
177 | kulma1.Shape = Shape.FromImage(LoadImage("kentta/kulma1")); |
---|
178 | kulma1.Image = LoadImage("kentta/kulma1"); |
---|
179 | Add(kulma1); |
---|
180 | } |
---|
181 | void luokulma2(Vector paikka, double leveys, double korkeus) |
---|
182 | { |
---|
183 | PhysicsObject kulma2 = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
184 | kulma2.Position = paikka; |
---|
185 | kulma2.Shape = Shape.FromImage(LoadImage("kentta/kulma2")); |
---|
186 | kulma2.Image = LoadImage("kentta/kulma2"); |
---|
187 | Add(kulma2); |
---|
188 | } |
---|
189 | void luokulma3(Vector paikka, double leveys, double korkeus) |
---|
190 | { |
---|
191 | PhysicsObject kulma3 = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
192 | kulma3.Position = paikka; |
---|
193 | kulma3.Shape = Shape.FromImage(LoadImage("kentta/kulma3")); |
---|
194 | kulma3.Image = LoadImage("kentta/kulma3"); |
---|
195 | Add(kulma3); |
---|
196 | } |
---|
197 | void luokulma4(Vector paikka, double leveys, double korkeus) |
---|
198 | { |
---|
199 | PhysicsObject kulma4 = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
200 | kulma4.Position = paikka; |
---|
201 | kulma4.Shape = Shape.FromImage(LoadImage("kentta/kulma4")); |
---|
202 | kulma4.Image = LoadImage("kentta/kulma4"); |
---|
203 | Add(kulma4); |
---|
204 | } |
---|
205 | void Luotausta(Vector paikka, double leveys, double korkeus) |
---|
206 | { |
---|
207 | GameObject tausta = new GameObject(leveys, korkeus); |
---|
208 | tausta.Position = paikka; |
---|
209 | tausta.Color = Color.Black; |
---|
210 | Add(tausta); |
---|
211 | } |
---|
212 | void LuoPalikka(Vector paikka, double leveys, double korkeus) |
---|
213 | { |
---|
214 | PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus); |
---|
215 | palikka.Position = paikka; |
---|
216 | palikka.Color = Color.Black; |
---|
217 | palikka.Tag = "palikka"; |
---|
218 | Add(palikka); |
---|
219 | } |
---|
220 | void LuoSiittio(Vector paikka, double leveys, double korkeus) |
---|
221 | { |
---|
222 | PhysicsObject siittio = new PhysicsObject(leveys, korkeus); |
---|
223 | siittio.Shape = Shape.Circle; |
---|
224 | siittio.Angle = RandomGen.NextAngle(); |
---|
225 | siittio.Animation = new Animation(LoadImages("pisteet,enut/siiittio", "pisteet,enut/siiittio2", "pisteet,enut/siiittio3", "pisteet,enut/siiittio4", "pisteet,enut/siiittio5", "pisteet,enut/siiittio6")); |
---|
226 | siittio.Animation.FPS = 10; |
---|
227 | siittio.Animation.Start(); |
---|
228 | siittio.Mass = 0.5; |
---|
229 | siittio.Tag = "siittio"; |
---|
230 | siittio.Position = paikka; |
---|
231 | siittiolkm = siittiolkm + 1; |
---|
232 | Add(siittio); |
---|
233 | } |
---|
234 | Pelaaja LuoPelaaja(Vector paikka, double pit, double lev, Image[] animaatioKuvat) |
---|
235 | { |
---|
236 | Pelaaja pelaaja = new Pelaaja(pit, lev); |
---|
237 | pelaaja.Shape = Shape.FromImage(LoadImage("pelaaja1/pelaaja")); |
---|
238 | pelaaja.Position = paikka; |
---|
239 | pelaaja.Mass = 100; |
---|
240 | pelaaja.Animation = new Animation(animaatioKuvat); |
---|
241 | pelaaja.Animation.FPS = 10; |
---|
242 | pelaaja.Animation.Start(); |
---|
243 | Add(pelaaja); |
---|
244 | AddCollisionHandler(pelaaja, "siittio", CollisionHandler.DestroyTarget); |
---|
245 | AddCollisionHandler<Pelaaja, PhysicsObject>(pelaaja, "kala", kalaOsuu); |
---|
246 | if (StoryMode) |
---|
247 | { |
---|
248 | /*AddCollisionHandler<PhysicsObject, PhysicsObject>(pelaaja, "siittio", delegate |
---|
249 | { |
---|
250 | |
---|
251 | });*/ |
---|
252 | } |
---|
253 | if (survival) |
---|
254 | { |
---|
255 | AddCollisionHandler<PhysicsObject, PhysicsObject>(pelaaja, "siittio", delegate |
---|
256 | { |
---|
257 | LuoSiittio(Level.GetRandomPosition(), 24, 24); |
---|
258 | LuoSiittio(Level.GetRandomPosition(), 24, 24); |
---|
259 | }); |
---|
260 | } |
---|
261 | |
---|
262 | return pelaaja; |
---|
263 | } |
---|
264 | void luopelaajalleelämänäytto(Pelaaja pelaaja, double x, double y) |
---|
265 | { |
---|
266 | CountDisplay pisteNaytto = new CountDisplay(); |
---|
267 | |
---|
268 | pisteNaytto.Full = LoadImage("pisteet,enut/enu"); |
---|
269 | pisteNaytto.X = x; |
---|
270 | pisteNaytto.Y = y; |
---|
271 | //pisteNaytto.TextColor = Color.Black; |
---|
272 | //pisteNaytto.Color = Color.White; |
---|
273 | pisteNaytto.BindTo(pelaaja.elamaLaskuri); |
---|
274 | Add(pisteNaytto); |
---|
275 | |
---|
276 | } |
---|
277 | void LuoKala(PhysicsObject seurattava) |
---|
278 | { |
---|
279 | double x = RandomGen.NextDouble(0.0, 500.0); |
---|
280 | double y = RandomGen.NextDouble(0.0, 300.0); |
---|
281 | |
---|
282 | PhysicsObject kala = new PhysicsObject(100, 50); |
---|
283 | FollowerBrain seuraajanAivot = new FollowerBrain(seurattava); |
---|
284 | seuraajanAivot.TurnWhileMoving = true; |
---|
285 | kala.Brain = seuraajanAivot; |
---|
286 | seuraajanAivot.Speed = 200; |
---|
287 | kala.Mass = 50; |
---|
288 | kala.X = x; |
---|
289 | kala.Y = y; |
---|
290 | kala.Shape = Shape.FromImage(LoadImage("vihu/kala")); |
---|
291 | kala.Animation = new Animation(LoadImages("vihu/kala0.1", "vihu/kala0.2", "vihu/kala0.1", "vihu/kala0.3")); |
---|
292 | kala.Animation.FPS = 10; |
---|
293 | kala.Animation.Start(); |
---|
294 | kala.Tag = "kala"; |
---|
295 | Add(kala); |
---|
296 | |
---|
297 | Timer nopeuttaja = new Timer(); |
---|
298 | nopeuttaja.Interval = 3; |
---|
299 | nopeuttaja.Timeout += delegate |
---|
300 | { |
---|
301 | seuraajanAivot.Speed += 50; |
---|
302 | }; |
---|
303 | nopeuttaja.Start(); |
---|
304 | } |
---|
305 | void kalaOsuu(Pelaaja player, PhysicsObject kala) |
---|
306 | { |
---|
307 | string vingahdus = RandomGen.SelectOne<string>("musat/ahi", "musat/thaaa"); |
---|
308 | PlaySound(vingahdus); |
---|
309 | player.elamaLaskuri.Value--; |
---|
310 | if (pelaaja.elamaLaskuri.Value == 0 && pelaaja2.elamaLaskuri.Value == 0) |
---|
311 | { |
---|
312 | ClearAll(); |
---|
313 | Begin(); |
---|
314 | MessageDisplay.Add("Hävisitte."); |
---|
315 | } |
---|
316 | } |
---|
317 | void lisaaohjaimet() |
---|
318 | { |
---|
319 | //-------------------------------------------------------------------------------------1 |
---|
320 | Keyboard.Listen(Key.Left, ButtonState.Down, kaannaPelaajaa, null, pelaaja, 4.0); |
---|
321 | Keyboard.Listen(Key.Left, ButtonState.Released, kaannaPelaajaa, null, pelaaja, 0.0); |
---|
322 | Keyboard.Listen(Key.Right, ButtonState.Down, kaannaPelaajaa, null, pelaaja, -4.0); |
---|
323 | Keyboard.Listen(Key.Right, ButtonState.Released, kaannaPelaajaa, null, pelaaja, -0.0); |
---|
324 | Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja); |
---|
325 | //---------------------------------------------------------------------------------2 |
---|
326 | Keyboard.Listen(Key.A, ButtonState.Down, kaannaPelaajaa, null, pelaaja2, 4.0); |
---|
327 | Keyboard.Listen(Key.A, ButtonState.Released, kaannaPelaajaa, null, pelaaja2, 0.0); |
---|
328 | Keyboard.Listen(Key.D, ButtonState.Down, kaannaPelaajaa, null, pelaaja2, -4.0); |
---|
329 | Keyboard.Listen(Key.D, ButtonState.Released, kaannaPelaajaa, null, pelaaja2, -0.0); |
---|
330 | Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2); |
---|
331 | |
---|
332 | //Keyboard.Listen(Key.Down, ButtonState.Pressed, LiikutaPelaajaa, null, new Vector(0, -voima)); |
---|
333 | |
---|
334 | //Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaPelaajaX, null); |
---|
335 | //Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaPelaajaX, null); |
---|
336 | //Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaPelaajaY, null); |
---|
337 | //Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaPelaajaY, null); |
---|
338 | } |
---|
339 | void kaannaPelaajaa(Pelaaja pelaaja, double nopeus) |
---|
340 | { |
---|
341 | if (pelaaja == null) return; |
---|
342 | if (pelaaja.Angle.Cos < 0) |
---|
343 | { |
---|
344 | pelaaja.TextureWrapSize = new Vector(1, -1); |
---|
345 | } |
---|
346 | else |
---|
347 | { |
---|
348 | pelaaja.TextureWrapSize = new Vector(1, 1); |
---|
349 | } |
---|
350 | pelaaja.AngularVelocity = nopeus; |
---|
351 | } |
---|
352 | void LiikutaPelaajaa(Pelaaja pelaaja) |
---|
353 | { |
---|
354 | if (pelaaja == null) return; |
---|
355 | Vector pelaajanSuunta = Vector.FromLengthAndAngle(100000.0, pelaaja.Angle); |
---|
356 | pelaaja.Push(pelaajanSuunta); |
---|
357 | } |
---|
358 | } |
---|