source: 2011/26/HenriH/Alien Empire/Alien Empire/Alien Empire/Peli.cs @ 2403

Revision 2403, 12.5 KB checked in by jahebahu, 10 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Peli : PhysicsGame
10{
11
12    Image taustakuva = LoadImage("SpaceJAText_Modified");
13    Image taustakuva2 = LoadImage("Space 1");
14    List<Label> valikonKohdat;
15    PhysicsObject alus1;
16    PhysicsObject alus2;
17    Image olionkuva = LoadImage("alus1");
18    Image olionkuva2 = LoadImage("alus2");
19    Image kiihdytys1 = LoadImage("alus1_kaasuttaa");
20    Image kiihdytys2 = LoadImage("alus2_kaasuttaa");
21    Image plasma_ammus1 = LoadImage("plasma");
22    Image plasma_ammus2 = LoadImage("plasma2");
23
24    AssaultRifle Plasma1;
25    AssaultRifle Plasma2;
26    ExplosionSystem rajahdys;
27    public override void Begin()
28    {
29        // TODO: Kirjoita ohjelmakoodisi tähän
30        Valikko();
31        IsFullScreen = true;
32        Camera.ZoomToLevel();
33        Level.Background.FitToLevel();
34
35    }
36
37    void Valikko()
38    {
39        ClearAll();
40        valikonKohdat = new List<Label>();
41
42        IsFullScreen = true;
43        Level.Background.Image = taustakuva;
44        Level.Background.FitToLevel();
45        Camera.StayInLevel = true;
46        Label kohta1 = new Label("Aloita uusi peli");
47        kohta1.Position = new Vector(0, -80);
48        valikonKohdat.Add(kohta1);
49
50        Label kohta2 = new Label("Lopeta");
51        kohta2.Position = new Vector(0, -160);
52        valikonKohdat.Add(kohta2);
53
54        foreach (Label valikonKohta in valikonKohdat)
55        {
56            Add(valikonKohta);
57        }
58
59        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
60        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
61
62        Mouse.IsCursorVisible = true;
63        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
64        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
65
66    }
67    void ValikossaLiikkuminen(AnalogState Hiirentila)
68    {
69        foreach (Label kohta in valikonKohdat)
70        {
71            if (Mouse.IsCursorOn(kohta))
72            {
73                kohta.TextColor = Color.Red;
74            }
75            else
76            {
77                kohta.TextColor = Color.White;
78                kohta.Font = Font.DefaultLargeBold;
79            }
80        }
81    }
82
83    void AloitaPeli()
84    {
85        ClearAll();
86        // Tähän tulee kaikki kentän luomiset ym. alustukset...
87
88        Camera.ZoomToLevel();
89        Level.Background.FitToLevel();
90        Level.Background.Image = taustakuva2;
91        Level.CreateBorders(0.5, false);
92        alus1 = new PhysicsObject(50.0, 50.0);
93        alus1.Tag = "Alus1";
94        MediaPlayer.Play("5am-tausta");
95
96        alus1.X = 300;
97        alus1.Y = 150;
98
99        alus1.Image = olionkuva;
100
101        alus1.AngularDamping = 0.50;
102
103        alus1.Restitution = 0.2;
104
105        alus1.CollisionIgnoreGroup = 1;
106        laskuri3();
107        laskuri4();
108        LuoLaskuri();
109        LuoLaskuri1();
110        LuoAlus2();
111        LuoAlus1();
112
113        Plasma1 = new AssaultRifle(20, 5);
114        Plasma2 = new AssaultRifle(20, 5);
115        alus1.Add(Plasma1);
116        alus2.Add(Plasma2);
117        Plasma1.ProjectileCollision = AmmusOsui;
118        Plasma2.ProjectileCollision = AmmusOsui2;
119        rajahdys = new ExplosionSystem(LoadImage("special"), 150);
120        Add(rajahdys);
121
122
123
124        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
125        Keyboard.Listen(Key.Up, ButtonState.Down, kiihdytaalus, "Kiihdytä alusta 1", alus1);
126        Keyboard.Listen(Key.Up, ButtonState.Released, ajaalus, null, alus1);
127        Keyboard.Listen(Key.Left, ButtonState.Down, kaannaalus, "Käännä alusta 1 Vasemmalle.", alus1);
128        Keyboard.Listen(Key.Right, ButtonState.Down, kaannaalus2, "Käännä alusta 1 Oikealle.", alus1);
129        Keyboard.Listen(Key.A, ButtonState.Down, kaannaalus3, "Käännä alusta 2 Vasemmalle.", alus2);
130        Keyboard.Listen(Key.W, ButtonState.Down, kiihdytaalus2, "Kiihdytä alusta 2", alus2);
131        Keyboard.Listen(Key.W, ButtonState.Released, ajaalus2, null, alus2);
132        Keyboard.Listen(Key.D, ButtonState.Down, kaannaalus4, "Käännä alusta Oikealle.", alus2);
133        Keyboard.Listen(Key.RightControl, ButtonState.Down, AmmuAseella, "Ammu pelaajan 1 asetta", Plasma1, alus1);
134        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella2, "Ammu Pelaajan 2 asetta", Plasma2, alus2);
135
136
137
138    }
139    void kiihdytaalus(PhysicsObject alus)
140    {
141        alus.Image = kiihdytys1;
142        Vector voima = Vector.FromLengthAndAngle(1000, alus.Angle);
143        alus.Push(voima);
144    }
145
146    void ajaalus(PhysicsObject alus)
147    {
148        alus.Image = olionkuva;
149    }
150    void kaannaalus(PhysicsObject alus)
151    {
152        alus.Angle += Angle.FromDegrees(5);
153
154    }
155    void kaannaalus2(PhysicsObject alus)
156    {
157        alus.Angle -= Angle.FromDegrees(5);
158    }
159    void kaannaalus3(PhysicsObject alus2)
160    {
161        alus2.Angle += Angle.FromDegrees(5);
162    }
163
164    void kaannaalus4(PhysicsObject alus2)
165    {
166        alus2.Angle -= Angle.FromDegrees(5);
167    }
168    void ajaalus2(PhysicsObject alus2)
169    {
170        alus2.Image = olionkuva2;
171    }
172    void kiihdytaalus2(PhysicsObject alus2)
173    {
174        alus2.Image = kiihdytys2;
175        Vector voima = Vector.FromLengthAndAngle(1000, alus2.Angle);
176        alus2.Push(voima);
177    }
178    void AmmuAseella(Weapon Plasma1, PhysicsObject alus)
179    {
180        PhysicsObject ammus = Plasma1.Shoot();
181
182
183
184        if (ammus != null)
185        {
186            ammus.Size *= 2;
187            ammus.Image = plasma_ammus1;
188            Plasma1.Ammo.Value = 3000;
189
190            ammus.CollisionIgnoreGroup = alus.CollisionIgnoreGroup;
191        }
192    }
193
194
195
196    void AmmusOsui(PhysicsObject Ammus, PhysicsObject kohde)
197    {
198        if (kohde.Tag.ToString() == "Alus2")
199        {
200            rajahdys.AddEffect(Ammus.Position, 20);
201            elamalaskuri1.Value -= 10;
202        }
203
204        if (elamalaskuri1.Value <= 0)
205        {
206
207            Remove(alus2);
208            elamalaskuri1.Value = 100;
209            //Add(alus2);
210            Timer.SingleShot(3.0, ajastinlaukesi);
211            kuolemalaskuri1.Value -= 1;
212            if (kuolemalaskuri1.Value <= 0)
213            {
214                Lopputeksti1();
215            }
216        }
217
218        Ammus.Destroy();
219    }
220
221    void AmmuAseella2(Weapon Plasma2, PhysicsObject alus2)
222    {
223        PhysicsObject ammus = Plasma2.Shoot();
224
225
226
227        if (ammus != null)
228        {
229            ammus.Size *= 2;
230            ammus.Image = plasma_ammus1;
231            Plasma2.Ammo.Value = 3000;
232
233            ammus.CollisionIgnoreGroup = alus2.CollisionIgnoreGroup;
234        }
235    }
236
237    void AmmusOsui2(PhysicsObject Ammus, PhysicsObject kohde)
238    {
239        if (kohde.Tag.ToString() == "Alus1")
240        {
241            rajahdys.AddEffect(Ammus.Position, 20);
242            elamalaskuri2.Value -= 10;
243        }
244
245        if (elamalaskuri2.Value <= 0)
246        {
247
248            Remove(alus1);
249            elamalaskuri2.Value = 100;
250            //Add(alus2);
251            Timer.SingleShot(3.0, ajastinlaukesi2);
252            kuolemalaskuri2.Value -= 1;
253            if (kuolemalaskuri2.Value <= 0)
254            {
255                Lopputeksti2();
256            }
257        }
258
259        Ammus.Destroy();
260    }
261
262
263    IntMeter elamalaskuri2;
264
265    void LuoLaskuri()
266    {
267        elamalaskuri2 = new IntMeter(100);
268
269        Label pisteNaytto = new Label();
270        pisteNaytto.X = Screen.Right - 100;
271        pisteNaytto.Y = Screen.Top - 100;
272        pisteNaytto.TextColor = Color.White;
273
274
275        pisteNaytto.BindTo(elamalaskuri2);
276        Add(pisteNaytto);
277    }
278    void LuoAlus2()
279    {
280        alus2 = new PhysicsObject(50.0, 50.0);
281        alus2.Tag = "Alus2";
282        alus2.X = 150;
283        alus2.Y = 300;
284        alus2.Image = olionkuva2;
285        alus2.AngularDamping = 0.50;
286        alus2.Restitution = 0.2;
287        alus2.CollisionIgnoreGroup = 2;
288        Add(alus2);
289    }
290    void ajastinlaukesi()
291    {
292        Add(alus2);
293    }
294
295    IntMeter elamalaskuri1;
296
297    void LuoLaskuri1()
298    {
299        elamalaskuri1 = new IntMeter(100);
300
301        Label pisteNaytto = new Label();
302        pisteNaytto.X = Screen.Left + 100;
303        pisteNaytto.Y = Screen.Top - 100;
304        pisteNaytto.TextColor = Color.White;
305
306
307        pisteNaytto.BindTo(elamalaskuri1);
308        Add(pisteNaytto);
309    }
310    void LuoAlus1()
311    {
312        alus1 = new PhysicsObject(50.0, 50.0);
313        alus1.Tag = "Alus1";
314        alus1.X = 300;
315        alus1.Y = 150;
316        alus1.Image = olionkuva;
317        alus1.AngularDamping = 0.50;
318        alus1.Restitution = 0.2;
319        alus1.CollisionIgnoreGroup = 1;
320        Add(alus1);
321    }
322    void ajastinlaukesi2()
323    {
324        Add(alus1);
325    }
326    IntMeter kuolemalaskuri1;
327
328    void laskuri3()
329    {
330        kuolemalaskuri1 = new IntMeter(5);
331
332        Label pisteNaytto = new Label();
333        pisteNaytto.X = Screen.Left + 50;
334        pisteNaytto.Y = Screen.Top - 100;
335        pisteNaytto.TextColor = Color.White;
336        pisteNaytto.BindTo(kuolemalaskuri1);
337        Add(pisteNaytto);
338    }
339    IntMeter kuolemalaskuri2;
340
341    void laskuri4()
342    {
343        kuolemalaskuri2 = new IntMeter(5);
344
345        Label pisteNaytto = new Label();
346        pisteNaytto.X = Screen.Right - 50;
347        pisteNaytto.Y = Screen.Top - 100;
348        pisteNaytto.TextColor = Color.White;
349        pisteNaytto.BindTo(kuolemalaskuri2);
350        Add(pisteNaytto);
351
352
353
354    }
355    void Lopputeksti1()
356    {
357        ClearAll();
358
359        IsFullScreen = true;
360        Level.Background.Image = taustakuva;
361        Level.Background.FitToLevel();
362        Camera.StayInLevel = true;
363        Camera.ZoomToLevel();
364        Label tekstikentta = new Label("Pelaaja 1, sinä voitit! Pelaaja 2, hävisit, olet surkea.");
365        tekstikentta.Color = Color.Transparent;
366        tekstikentta.TextColor = Color.White;
367        tekstikentta.BorderColor = Color.Transparent;
368        tekstikentta.Font = Font.DefaultLargeBold;
369
370        Label kohta1 = new Label("Aloita uusi peli");
371        kohta1.Position = new Vector(0, -80);
372        Add(kohta1);
373
374        Label kohta2 = new Label("Lopeta");
375        kohta2.Position = new Vector(0, -160);
376        Add(kohta2);
377
378        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
379        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
380
381        if (Mouse.IsCursorOn(kohta1))
382        {
383            kohta1.TextColor = Color.Red;
384        }
385        else
386        {
387            kohta1.TextColor = Color.White;
388            kohta1.Font = Font.DefaultLargeBold;
389
390            if (Mouse.IsCursorOn(kohta2))
391            {
392                kohta2.TextColor = Color.Red;
393            }
394            else
395            {
396                kohta2.TextColor = Color.White;
397                kohta2.Font = Font.DefaultLargeBold;
398                Add(tekstikentta);
399            }
400
401        }
402    }
403
404    void Lopputeksti2()
405    {
406        ClearAll();
407
408
409       
410        Level.Background.Image = taustakuva;
411        Camera.ZoomToLevel();
412        Camera.StayInLevel = true;
413        Label tekstikentta = new Label("Pelaaja 2, sinä voitit! Pelaaja 1, hävisit, olet surkea.");
414        tekstikentta.Color = Color.Transparent;
415        tekstikentta.TextColor = Color.White;
416        tekstikentta.BorderColor = Color.Transparent;
417        tekstikentta.Font = Font.DefaultLargeBold;
418
419        Label kohta1 = new Label("Aloita uusi peli");
420        kohta1.Position = new Vector(0, -80);
421        Add(kohta1);
422
423        Label kohta2 = new Label("Lopeta");
424        kohta2.Position = new Vector(0, -160);
425        Add(kohta2);
426
427        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
428        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
429
430
431        if (Mouse.IsCursorOn(kohta1))
432        {
433            kohta1.TextColor = Color.Red;
434        }
435        else
436        {
437            kohta1.TextColor = Color.White;
438            kohta1.Font = Font.DefaultLargeBold;
439
440            if (Mouse.IsCursorOn(kohta2))
441            {
442                kohta2.TextColor = Color.Red;
443            }
444            else
445            {
446                kohta2.TextColor = Color.White;
447                kohta2.Font = Font.DefaultLargeBold;
448                Add(tekstikentta);
449
450            }
451        }
452    }
453}
454
455           
456       
457       
458   
Note: See TracBrowser for help on using the repository browser.