source: 2011/31/HenryS/TankDuel/TankDuel/TankDuel/Peli.cs @ 2566

Revision 2566, 13.2 KB checked in by hejusiuk, 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;
8class Tankki : PhysicsObject
9{
10    public int Elamat = 3;
11
12    public Tankki(double leveys, double korkeus)
13        : base(leveys, korkeus)
14    {
15    }
16}
17
18public class Peli : PhysicsGame
19{
20    List<Label> valikonKohdat;
21    Vector nopeus1Ylos = new Vector(0, 200);
22    Vector nopeus1Alas = new Vector(0, -200);
23    Vector nopeus2Ylos = new Vector(0, 200);
24    Vector nopeus2Alas = new Vector(0, -200);
25    Vector nopeus1Oikealle = new Vector(200, 0);
26    Vector nopeus1Vasemmalle = new Vector(-200, 0);
27    Vector nopeus2Oikealle = new Vector(200, 0);
28    Vector nopeus2Vasemmalle = new Vector(-200, 0);
29    Tankki pelaaja1;
30    Tankki pelaaja2;
31    Image oliomkuva = LoadImage("tank");
32    Image tankki = LoadImage("tank2");
33    PhysicsObject este;
34    AssaultRifle pyssy;
35    AssaultRifle ase;
36    Cannon tykki;
37    Cannon kanuuna;
38    IntMeter pisteLaskuri;
39    IntMeter pisteLaskuri2;
40    LaserGun pelaajan1Laser;
41    LaserGun pelaajan2laserase;
42    public override void Begin()
43    {   
44        //kanuuna = new Cannon(50.0, 20.0);
45        //tykki = new Cannon(50.0, 20.0);
46        //pyssy = new AssaultRifle(20, 5);
47        //ase = new AssaultRifle(20, 5);
48       
49        Valikko();
50       
51       
52       
53    }
54
55   
56
57    void luopelaaja1()
58    {
59
60        pelaaja1 = new Tankki(90.0, 50.0);
61        pelaaja1.Image = oliomkuva;
62        pelaaja1.X = -400;
63        pelaaja1.Y = 350;
64        pelaaja1.CanRotate=false;
65        Add(pelaaja1);
66        pyssy = new AssaultRifle(20, 5);
67        pyssy.ProjectileCollision = LuotiOsuu;
68        pyssy.Shoot();
69        pelaaja1.Add(pyssy);
70        tykki = new Cannon(50, 10);
71        tykki.ProjectileCollision = KuulaOsuu;
72        tykki.Shoot();
73        pelaaja1.Add(tykki);
74        pelaajan1Laser = new LaserGun(20, 5);
75        pelaajan1Laser.ProjectileCollision = LaserSadeOsuu;
76        pelaajan1Laser.Shoot();
77        pelaajan1Laser.Ammo.Value = int.MaxValue;
78        pelaaja1.Add(pelaajan1Laser);
79    }
80    void luopelaaja2()
81    {
82        pelaaja2 = new Tankki(90.0, 50.0);
83        pelaaja2.X = 400;
84        pelaaja2.Y = -350;
85        pelaaja2.Image = tankki;
86        pelaaja2.CanRotate = false;
87        Add(pelaaja2);
88        ase = new AssaultRifle(20, 5);
89        ase.ProjectileCollision = LuotiOsuu2;
90        ase.Shoot();
91        pelaaja2.Add(ase);
92        kanuuna = new Cannon(50, 10);
93        kanuuna.ProjectileCollision = KuulaOsuu2;
94        kanuuna.Shoot();
95        pelaaja2.Add(kanuuna);
96        pelaajan2laserase = new LaserGun(20, 5);
97        pelaajan2laserase.Ammo.Value = int.MaxValue;
98        pelaajan2laserase.ProjectileCollision = LaserSadeOsuu2;
99
100        pelaajan2laserase.Shoot();
101        pelaaja2.Add(pelaajan2laserase);
102    }
103    void AsetaOhjaimet()
104    {
105
106
107        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liiku ylös", pelaaja1, nopeus1Ylos, Angle.FromDegrees (90));
108        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, pelaaja1, Vector.Zero, Angle.FromDegrees(90));
109        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liiku alas", pelaaja1, nopeus1Alas, Angle.FromDegrees (-90));
110        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, pelaaja1, Vector.Zero, Angle.FromDegrees (-90));
111        Keyboard.Listen(Key.Q, ButtonState.Down, AmmuAseella, "Ammu");
112        Keyboard.Listen(Key.Tab, ButtonState.Down, AmmuTykillä, "Ammu");
113        Keyboard.Listen(Key.CapsLock, ButtonState.Down, AmmuLaserPyssyllä, "Ammu");
114
115
116        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus2, "Pelaaja 2: Liiku ylös", pelaaja2, nopeus2Ylos, Angle.FromDegrees(90));
117        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus2, null, pelaaja2, Vector.Zero, Angle.FromDegrees(90));
118        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus2, "Pelaaja 2: Liiku alas", pelaaja2, nopeus2Alas, Angle.FromDegrees(-90));
119        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus2, null, pelaaja2, Vector.Zero, Angle.FromDegrees(-90));
120        Keyboard.Listen(Key.End, ButtonState.Down, AmmuAseella2, "Ammu");
121        Keyboard.Listen(Key.Insert, ButtonState.Down, AmmuKanuunalla, "Ammu");
122        Keyboard.Listen(Key.Delete, ButtonState.Down, AmmuLaserAseella, "Ammu");
123
124        Keyboard.Listen(Key.D, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liiku oikealle", pelaaja1, nopeus1Oikealle, Angle.FromDegrees (0));
125        Keyboard.Listen(Key.D, ButtonState.Released, AsetaNopeus, null, pelaaja1, Vector.Zero,Angle.FromDegrees(0));
126        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liiku vasemmalle", pelaaja1, nopeus1Vasemmalle, Angle.FromDegrees(180));
127        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, pelaaja1, Vector.Zero, Angle.FromDegrees(180));
128
129        Keyboard.Listen(Key.Right, ButtonState.Down, AsetaNopeus2, "Pelaaja 2: Liiku oikealle", pelaaja2, nopeus2Oikealle, Angle.FromDegrees (0));
130        Keyboard.Listen(Key.Right, ButtonState.Released, AsetaNopeus2, null, pelaaja1, Vector.Zero, Angle.FromDegrees (0));
131        Keyboard.Listen(Key.Left, ButtonState.Down, AsetaNopeus2, "Pelaaja 2: Liiku vasemmalle", pelaaja2, nopeus2Vasemmalle, Angle.FromDegrees(180));
132        Keyboard.Listen(Key.Left, ButtonState.Released, AsetaNopeus2, null, pelaaja1, Vector.Zero, Angle.FromDegrees(180));
133
134        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
135
136
137        return;
138       
139    }
140
141    void AsetaNopeus(PhysicsObject pelaaja1, Vector nopeus1, Angle kulma)
142    {
143        pelaaja1.Velocity = nopeus1;
144        pelaaja1.Angle = kulma;
145       
146    }
147
148    void AsetaNopeus2(PhysicsObject pelaaja1, Vector nopeus2, Angle kulma)
149    {
150        pelaaja2.Velocity = nopeus2;
151        pelaaja2.Angle = kulma;
152
153    }
154
155
156
157   
158
159    void LuoKenttä()
160    {
161        int i = 0;
162
163        while (i < 30)
164        {
165            este = PhysicsObject.CreateStaticObject(60.0, 60.0);
166            este.Color = Color.Gray;
167            este.CanRotate = false;
168            este.X = RandomGen.NextDouble(Level.Left, Level.Right);
169            este.Y = RandomGen.NextDouble(Level.Left, Level.Right);
170            Add(este);
171            i++;
172        }
173
174        Level.CreateBorders(1.0, false);
175        Level.BackgroundColor = Color.ForestGreen;
176        Camera.ZoomToLevel();
177       
178       
179
180       
181   
182    }
183
184      void Valikko()
185    {
186        ClearAll();
187        valikonKohdat = new List<Label>();
188
189        Label kohta1 = new Label("Aloita uusi peli");
190        kohta1.Position = new Vector(0, 40);
191        valikonKohdat.Add(kohta1);
192
193        Label kohta2 = new Label("Lopeta");
194        kohta2.Position = new Vector(0, -40);
195        valikonKohdat.Add(kohta2);
196
197        foreach (Label valikonKohta in valikonKohdat)
198        {
199            Add(valikonKohta);
200        }
201
202        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
203        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
204
205
206        Mouse.IsCursorVisible = true;
207        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
208        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
209
210    }
211
212
213    void ValikossaLiikkuminen(AnalogState hiirenTila)
214    {
215        foreach (Label kohta in valikonKohdat)
216        {
217            if (Mouse.IsCursorOn(kohta))
218            {
219                kohta.TextColor = Color.Red;
220            }
221            else
222            {
223                kohta.TextColor = Color.Black;
224            }
225
226        }
227    }
228
229    void AloitaPeli()
230    {   
231       
232        ClearAll();
233        LuoLaskuri();
234        LuoLaskuri2();
235        LuoKenttä();
236        luopelaaja2();
237        luopelaaja1();
238        AsetaOhjaimet();
239        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
240    }
241
242
243    void AmmuAseella()
244    {
245       
246        PhysicsObject ammus = pyssy.Shoot();
247        if (ammus != null)
248        {
249            ammus.CanRotate = false;
250            ammus.Size *= 1;
251           
252
253        }
254    }
255
256    void AmmuAseella2()
257    {
258       
259        PhysicsObject ammus2 = ase.Shoot();
260        if (ammus2 != null)
261        {
262            ammus2.CanRotate = false;
263            ammus2.Size *= 1;
264        }
265    }
266
267    void AmmuTykillä()
268    {
269        tykki.Power.Value = 100000;
270        PhysicsObject tykkiammus = tykki.Shoot();
271        if (tykkiammus != null)
272        {
273            tykkiammus.CanRotate = false;
274           tykkiammus.Size *=2;
275
276        }
277   
278   
279    }
280
281
282    void AmmuKanuunalla()
283    {
284        kanuuna.Power.Value = 100000;
285        PhysicsObject kanuunaammus = kanuuna.Shoot();
286        if (kanuunaammus != null)
287        {
288            kanuunaammus.CanRotate = false;
289            kanuunaammus.Size *= 2;
290
291        }
292
293
294    }
295
296    void AmmuLaserAseella()
297    {
298
299        PhysicsObject laserammus = pelaajan2laserase.Shoot();
300        if (laserammus != null)
301        {
302            laserammus.CanRotate = false;
303            laserammus.Size *= 30;
304
305
306        }
307    }
308
309    void AmmuLaserPyssyllä()
310    {
311
312        PhysicsObject laserammus2 = pelaajan1Laser.Shoot();
313        if (laserammus2 != null)
314        {
315            laserammus2.CanRotate = false;
316            laserammus2.Size *= 30;
317
318
319        }
320    }
321    void LuoLaskuri()
322    {
323        pisteLaskuri = new IntMeter(100);
324
325        Label pisteNaytto = new Label();
326        pisteNaytto.X = Screen.Left + 100;
327        pisteNaytto.Y = Screen.Top - 100;
328        pisteNaytto.TextColor = Color.Red;
329
330        pisteNaytto.BindTo(pisteLaskuri);
331        Add(pisteNaytto);
332        Label pisteTeksti = new Label("Health: ");
333        pisteTeksti.X = Screen.Left + 50;
334        pisteTeksti.Y = Screen.Top - 100;
335        pisteTeksti.TextColor = Color.Red;
336        Add(pisteTeksti);
337        pisteLaskuri.MinValue = 0;
338        pisteLaskuri.LowerLimit += laskuriAlarajassa;
339
340    }
341        void laskuriAlarajassa(int arvo)
342{
343        pelaaja1.Elamat--;
344        pelaaja1.Destroy();
345        pisteLaskuri.Value = 100;
346
347            if (pelaaja1.Elamat == 0)
348        {
349
350        }
351
352        else
353        {
354            Timer.SingleShot(2.0, ajastinLaukesi);
355
356       
357        }
358
359        }
360
361        void LuoLaskuri2()
362        {
363            pisteLaskuri2 = new IntMeter(100);
364
365            Label pisteNaytto = new Label();
366            pisteNaytto.X = Screen.Right - 100;
367            pisteNaytto.Y = Screen.Top - 100;
368            pisteNaytto.TextColor = Color.Red;
369
370            pisteNaytto.BindTo(pisteLaskuri2);
371            Add(pisteNaytto);
372            Label pisteTeksti = new Label("Health: ");
373            pisteTeksti.X = Screen.Right - 150;
374            pisteTeksti.Y = Screen.Top - 100;
375            pisteTeksti.TextColor = Color.Red;
376            Add(pisteTeksti);
377            pisteLaskuri2.MinValue = 0;
378            pisteLaskuri2.LowerLimit += laskuriAlarajassa2;
379
380           
381        }
382
383        void laskuriAlarajassa2(int arvo)
384        {
385            pelaaja2.Elamat--;
386                    pelaaja1.Destroy();
387        pisteLaskuri2.Value = 100;
388
389            if (pelaaja2.Elamat == 0)
390        {
391
392        }
393
394        else
395        {
396            Timer.SingleShot(2.0, ajastinLaukesi2);
397
398       
399        }
400
401        }
402       
403        void LuotiOsuu(PhysicsObject ammus, PhysicsObject kohde)
404        {
405            ammus.Destroy();
406            if (kohde == pelaaja2)
407
408            {
409                pisteLaskuri2.Value--;
410            }
411        }
412
413        void LuotiOsuu2(PhysicsObject ammus2, PhysicsObject kohde2)
414        {
415            ammus2.Destroy();
416            if (kohde2 == pelaaja1)
417            {
418                pisteLaskuri.Value--;
419            }
420        }
421
422
423
424        void KuulaOsuu(PhysicsObject tykkiammus, PhysicsObject kohde)
425        {
426            tykkiammus.Destroy();
427            if (kohde == pelaaja2)
428            { 
429              pisteLaskuri2.Value = pisteLaskuri2.Value - 10;
430
431           
432            }
433       
434        }
435     void KuulaOsuu2(PhysicsObject kanuunaammus, PhysicsObject kohde2)
436        {
437            kanuunaammus.Destroy();
438            if (kohde2 == pelaaja1)
439            { 
440              pisteLaskuri.Value = pisteLaskuri.Value - 10;
441
442           
443            }
444       
445        }
446
447
448     void LaserSadeOsuu(PhysicsObject laserammus2, PhysicsObject kohde2)
449     {
450
451         laserammus2.Destroy();
452         
453         if (kohde2 == pelaaja2)
454         {
455             pisteLaskuri2.Value = pisteLaskuri2.Value - 1;
456
457
458         }
459
460     }
461
462     void LaserSadeOsuu2(PhysicsObject laserammus, PhysicsObject kohde)
463     {
464
465         laserammus.Destroy();
466
467         if (kohde == pelaaja1)
468         {
469             pisteLaskuri.Value = pisteLaskuri.Value - 1;
470
471
472         }
473
474     }
475
476
477
478    void ajastinLaukesi()
479
480        {
481
482            luopelaaja1();
483}
484
485    void ajastinLaukesi2()
486    {
487
488        luopelaaja2();
489        ClearControls();
490        AsetaOhjaimet();
491    }
492
493
494}
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
Note: See TracBrowser for help on using the repository browser.