source: 2016/24/FelixF/Planeio/Planeio/Planeio/Planeio.cs @ 7424

Revision 7424, 16.0 KB checked in by fefrisk, 3 years ago (diff)

My GAME

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Planeio : PhysicsGame
10{
11    EasyHighScore topLista = new EasyHighScore();
12
13    List<Label> valikonKohdat;
14
15    int asetyyppipelaaja1 = 1;
16    bool saaampuapelaaja1 = true;
17    IntMeter pelaajapisteet;
18    Label Aseteksti1;
19
20
21    DoubleMeter voimaMittariPelaaja1;
22
23    DoubleMeter elamaLaskuriPelaaja1;
24
25    double kaantonopeus = 3;
26
27    Image[] BeamAnimation = LoadImages("beam", "beam2", "beam3");
28
29    Image lentokone1 = LoadImage("plane1");
30    Image lentokone2 = LoadImage("plane2");
31    Image lentokone3 = LoadImage("plane3");
32    Image lentokone4 = LoadImage("plane4");
33    Image lentokone5 = LoadImage("plane5");
34    Image lentokone6 = LoadImage("plane6");
35    Image lentokone7 = LoadImage("plane7");
36    Image lentokone8 = LoadImage("plane8");
37    Image lentokone9 = LoadImage("plane9");
38    PhysicsObject pelaaja1;
39
40    Image background = LoadImage("background");
41
42    public override void Begin()
43    {
44
45
46
47        //     LuoPowerupit();
48
49        MultiSelectWindow alkuValikko = new MultiSelectWindow("PlaneIO","Play", "Exit");
50
51        //        alkuValikko.AddItemHandler(1, Yourname);
52        alkuValikko.AddItemHandler(0, AloitaLaskurit);
53        alkuValikko.AddItemHandler(1, Exit);
54        alkuValikko.DefaultCancel = 1;
55        Add(alkuValikko);
56
57        Timer ajastin = new Timer();
58        ajastin.Interval = 0.25;
59        ajastin.Timeout += voimalisaa;
60        ajastin.Start();
61
62        IsFullScreen = false;
63
64        //       MediaPlayer.Play("taustamusiikki");
65        //       MediaPlayer.IsRepeating = true;
66
67        LisaaLaskurit();
68        LuoKentta();
69        LuoElamaLaskuriPelaaja1();
70        LuoVoimaLaskuriPelaaja1();
71
72        Aseteksti1 = new Label("Shotgun");
73        Aseteksti1.X = Screen.Left + 100.0;
74        Aseteksti1.Y = Screen.Top - 125.0;
75        Aseteksti1.TextColor = Color.Red;
76        Add(Aseteksti1);
77
78
79        Level.Background.Color = Color.Black;
80        //      Level.Background.CreateStars(10000);
81
82        Level.Background.Image = background;
83        Level.Background.TileToLevel();
84
85        //        PhysicsObject plane1 = new PhysicsObject(120, 120);
86        //        plane1.Restitution = 0.2;
87        //        plane1.AngularDamping = 0.95;
88        //        plane1.Image = RandomGen.SelectOne<Image>(lentokone1, lentokone2, lentokone3, lentokone4, lentokone5, lentokone6, lentokone7, lentokone8, lentokone9);
89
90        LisaaPelaaja(new Vector(400, 400), 120, 120);
91
92
93        LisaaNappaimet();
94        XBoxNappaimet();
95
96        Camera.ZoomToLevel();
97
98
99        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
100        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
101    }
102
103    void AloitaLaskurit()
104    {
105        SpawnaaPowerup();
106        Timer powerup = new Timer();
107        powerup.Interval = 2;
108        powerup.Timeout += SpawnaaPowerup;
109        powerup.Start();
110    }
111
112    void SpawnaaPowerup()
113    {
114        Double x = RandomGen.NextDouble(Level.Left, Level.Right);
115        Double y = RandomGen.NextDouble(Level.Bottom, Level.Top);
116        LuoPowerup(x, y);
117    }
118
119
120
121    void LisaaNappaimet()
122    {
123        Keyboard.Listen(Key.Space, ButtonState.Pressed, AmmuPelaaja1, "Ammu", pelaaja1);
124
125        Keyboard.Listen(Key.W, ButtonState.Down, Eteenpain1, "Pelaaja liikkuu", pelaaja1);
126        Keyboard.Listen(Key.W, ButtonState.Released, Stop, "Pelaaja liikkuu", pelaaja1);
127
128        Keyboard.Listen(Key.A, ButtonState.Down, Kaantuminen, "Pelaaja Kaannu Oikealle", pelaaja1, kaantonopeus);
129        Keyboard.Listen(Key.D, ButtonState.Down, Kaantuminen, "Pelaaja Kaannu Vasemmalle", pelaaja1, -kaantonopeus);
130
131        Keyboard.Listen(Key.Tab, ButtonState.Pressed, AseVaihtoPelaaja1, "Pelaaja Kaannu Vasemmalle", pelaaja1);
132
133        Keyboard.Listen(Key.X, ButtonState.Pressed, ElamaVaheneminen, "Pelaaja Kaannu Vasemmalle", pelaaja1);
134        Keyboard.Listen(Key.Z, ButtonState.Pressed, VoimaLisaantuminen, "Pelaaja Kaannu Vasemmalle", pelaaja1);
135        Keyboard.Listen(Key.C, ButtonState.Pressed, ScoreLisaantuminen, "Pelaaja Kaannu Vasemmalle", pelaaja1);
136    }
137
138    void XBoxNappaimet()
139    {
140
141        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.0, TattiEteenpain, "Pelaaja liikkuu", pelaaja1);
142        ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, Tattikaantuminen, "Pelaaja liikkuu", pelaaja1);
143        ControllerOne.ListenAnalog(AnalogControl.LeftTrigger, 0.1, TattiAmpuminen, "Pelaaja liikkuu", pelaaja1);
144        ControllerOne.ListenAnalog(AnalogControl.RightTrigger, 0.1, TattiAmpuminen, "Pelaaja liikkuu", pelaaja1);
145        ControllerOne.Listen(Button.X, ButtonState.Pressed, AseVaihtoPelaaja1, "Ase Vaihtuu", pelaaja1);
146
147
148
149    }
150
151    void TattiAmpuminen(AnalogState trigger, PhysicsObject pelaaja)
152    {
153        AmmuPelaaja1(pelaaja1);
154    }
155
156    void Tattikaantuminen(AnalogState tatti, PhysicsObject pelaaja)
157    {
158        Kaantuminen(pelaaja, tatti.StateVector.X * -kaantonopeus);
159    }
160
161    void TattiEteenpain(AnalogState tatti, PhysicsObject pelaaja)
162    {
163        if (tatti.StateVector.Y >= 0.1)
164        {
165            Eteenpain1(pelaaja);
166        }
167        else
168        {
169            Stop(pelaaja);
170        }
171
172    }
173
174    void ScoreLisaantuminen(PhysicsObject pelaaja)
175    {
176        pelaajapisteet.Value += 10000;
177    }
178
179    void AseVaihtoPelaaja1(PhysicsObject pelaaja)
180    {
181
182        asetyyppipelaaja1 += 1;
183
184        if (asetyyppipelaaja1 >= 4)
185        {
186            asetyyppipelaaja1 = 1;
187        }
188
189        if (asetyyppipelaaja1 == 1)
190        {
191            Aseteksti1.Text = "Shotgun";
192        }
193
194        if (asetyyppipelaaja1 == 2)
195        {
196            Aseteksti1.Text = "Lazerbeam";
197        }
198
199        if (asetyyppipelaaja1 == 3)
200        {
201            Aseteksti1.Text = "Sniper";
202        }
203
204
205
206    }
207
208    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
209    {
210        pelaaja1 = new PhysicsObject(leveys, korkeus);
211        pelaaja1.Position = paikka;
212        pelaaja1.Mass = 4.0;
213        pelaaja1.CollisionIgnoreGroup = 2;
214        pelaaja1.Restitution = 0.2;
215        pelaaja1.AngularDamping = 0.95;
216        pelaaja1.CanRotate = true;
217        pelaaja1.Image = RandomGen.SelectOne<Image>(lentokone1, lentokone2, lentokone3, lentokone4, lentokone5, lentokone6, lentokone7, lentokone8, lentokone9);
218        AddCollisionHandler(pelaaja1, "powerup", keraapowerup);
219        Add(pelaaja1);
220    }
221
222    void keraapowerup(PhysicsObject pelaaja, PhysicsObject powerup)
223    {
224        powerup.Destroy();
225        elamaLaskuriPelaaja1.Value += 2;
226
227    }
228
229    void LisaaLaskurit()
230    {
231        pelaajapisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
232    }
233
234    void LataaAse()
235    {
236        saaampuapelaaja1 = true;
237    }
238
239    void AmmuPelaaja1(PhysicsObject pelaaja)
240    {
241        if (saaampuapelaaja1 == false)
242        {
243           
244        }
245
246        saaampuapelaaja1 = false;
247
248        Vector paikka = pelaaja.Position + pelaaja.Angle.GetVector() * 90;
249
250        // TODO: Shotgun
251        if (asetyyppipelaaja1 == 1 && voimaMittariPelaaja1 >= 350)
252        {
253            voimaMittariPelaaja1.Value -= 350;
254            MediaPlayer.Play("shotgun");
255            AmpumisTimer(3);
256
257            PhysicsObject Ammus = new PhysicsObject(30, 30);
258            Ammus.Hit(pelaaja.Angle.GetVector() * 500);
259            Ammus.Position = paikka;
260            Ammus.Image = LoadImage("beam");
261            Ammus.Animation = new Animation(BeamAnimation);
262            Ammus.Animation.Start();
263            Add(Ammus);
264            Ammus.CollisionIgnoreGroup = 2;
265            Ammus.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
266            AddCollisionHandler(Ammus, AmmusOsui);
267
268            PhysicsObject Ammus1 = new PhysicsObject(30, 30);
269            Ammus1.Hit((pelaaja.Angle + Angle.FromDegrees(20)).GetVector() * 500);
270            Ammus1.Position = paikka;
271            Ammus1.Image = LoadImage("beam");
272            Ammus1.Animation = new Animation(BeamAnimation);
273            Ammus1.Animation.Start();
274            Add(Ammus1);
275            Ammus1.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
276            AddCollisionHandler(Ammus1, AmmusOsui);
277
278
279
280            PhysicsObject Ammus2 = new PhysicsObject(30, 30);
281            Ammus2.Hit((pelaaja.Angle - Angle.FromDegrees(20)).GetVector() * 500);
282            Ammus2.Position = paikka;
283            Ammus2.Image = LoadImage("beam");
284            Ammus2.Animation = new Animation(BeamAnimation);
285            Ammus2.Animation.Start();
286            Ammus2.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
287            Add(Ammus2);
288            AddCollisionHandler(Ammus2, AmmusOsui);
289
290            Timer.SingleShot(1, LataaAse);
291
292           
293
294
295        }
296        // TODO: LaserBeam
297        if (asetyyppipelaaja1 == 2 && voimaMittariPelaaja1 >= 100)
298        {
299            voimaMittariPelaaja1.Value -= 200;
300            MediaPlayer.Play("lazerbeam");
301            AmpumisTimer(0.5);
302
303            PhysicsObject Ammus = new PhysicsObject(20, 20);
304            Ammus.Velocity = pelaaja.Velocity;
305            Ammus.Hit(pelaaja.Angle.GetVector() * 500);
306            Ammus.Position = paikka;
307            Ammus.Image = LoadImage("beam");
308            Ammus.Animation = new Animation(BeamAnimation);
309            Ammus.Animation.Start();
310            Ammus.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
311            Add(Ammus);
312            AddCollisionHandler(Ammus, AmmusOsui);
313            Timer.SingleShot(0.5, LataaAse);
314        }
315        // TODO: Sniper
316        if (asetyyppipelaaja1 == 3 && voimaMittariPelaaja1 >= 650)
317        {
318            voimaMittariPelaaja1.Value -= 650;
319            MediaPlayer.Play("sniper1");
320            AmpumisTimer(7);
321
322            PhysicsObject Ammus = new PhysicsObject(20, 20);
323            Ammus.Hit(pelaaja.Angle.GetVector() * 2000);
324            Ammus.Position = paikka;
325            Ammus.Image = LoadImage("beam");
326            Ammus.Animation = new Animation(BeamAnimation);
327            Ammus.Animation.Start();
328            Ammus.CollisionIgnoreGroup = pelaaja.CollisionIgnoreGroup;
329            Add(Ammus);
330            AddCollisionHandler(Ammus, AmmusOsui);
331            Timer.SingleShot(4, LataaAse);
332        }
333
334    }
335
336    void LuoPowerup(double x, double y)
337    {
338        PhysicsObject powerup = PhysicsObject.CreateStaticObject(50, 50);
339        powerup.Image = LoadImage("heart");
340        powerup.X = x;
341        powerup.Y = y;
342        powerup.Tag = "powerup";
343        Add(powerup);
344    }
345
346    void Kaantuminen(PhysicsObject pelaaja, double nopeus)
347    {
348        pelaaja.Angle += Angle.FromDegrees(nopeus);
349    }
350
351    void Eteenpain1(PhysicsObject pelaaja)
352    {
353        pelaaja1.Move(pelaaja.Angle.GetVector() * 800);
354        //pelaaja.Push(pelaaja.Angle.GetVector() * 800);
355    }
356
357    void Stop(PhysicsObject pelaaja)
358    {
359        pelaaja1.Move(new Vector(0, 0));
360    }
361
362    void LuoElamaLaskuriPelaaja1()
363    {
364        elamaLaskuriPelaaja1 = new DoubleMeter(10);
365        elamaLaskuriPelaaja1.MaxValue = 10;
366        elamaLaskuriPelaaja1.LowerLimit += ElamaLoppui;
367
368        ProgressBar elamaPalkkiPelaaja1 = new ProgressBar(150, 20);
369
370
371        elamaPalkkiPelaaja1.X = Screen.Left + 100;
372        elamaPalkkiPelaaja1.Y = Screen.Top - 20;
373        elamaPalkkiPelaaja1.BindTo(elamaLaskuriPelaaja1);
374        elamaPalkkiPelaaja1.BarColor = Color.Red;
375
376        if (elamaLaskuriPelaaja1.Value == 10)
377        {
378            elamaPalkkiPelaaja1.BarImage = LoadImage("tausipalkki");
379        }
380
381        Add(elamaPalkkiPelaaja1);
382    }
383
384    void ElamaLoppui()
385    {
386        pelaaja1.IsVisible = false;
387        pelaaja1.IgnoresCollisionResponse = true;
388        pelaajapisteet.Value /= 4;
389        pelaajapisteet.Value *= 3;
390        ControllerOne.Vibrate(0.5, 0.5, 0.0, 0.0, 0.1);
391        Timer.SingleShot(3, delegate
392        {
393            pelaaja1.IsVisible = true;
394            pelaaja1.IgnoresCollisionResponse = false;
395            elamaLaskuriPelaaja1.Value = 10;
396
397        });
398
399
400    }
401
402    void ElamaVaheneminen(PhysicsObject pelaaja1)
403    {
404        elamaLaskuriPelaaja1.Value -= 1;
405    }
406
407    void LuoVoimaLaskuriPelaaja1()
408    {
409        voimaMittariPelaaja1 = new DoubleMeter(3000);
410        voimaMittariPelaaja1.MaxValue = 3000;
411
412        ProgressBar voimaPalkki = new ProgressBar(150, 20);
413        voimaPalkki.X = Screen.Left + 100;
414        voimaPalkki.Y = Screen.Top - 50;
415        voimaPalkki.BindTo(voimaMittariPelaaja1);
416
417
418        if (voimaMittariPelaaja1.Value == 3000)
419        {
420            voimaPalkki.BarImage = LoadImage("tausivoimapalkki");
421        }
422
423        Add(voimaPalkki);
424    }
425
426    void VoimaLisaantuminen(PhysicsObject pelaaja1)
427    {
428        voimaMittariPelaaja1.Value -= 100;
429    }
430
431    void LuoKentta()
432    {
433        Level.Width = 5000;
434        Level.Height = 3000;
435
436        PhysicsObject vasenReuna = Level.CreateLeftBorder();
437        vasenReuna.Restitution = 0.1;
438        vasenReuna.Color = Color.Black;
439        vasenReuna.KineticFriction = 0.0;
440        vasenReuna.IsVisible = true;
441
442        PhysicsObject oikeaReuna = Level.CreateRightBorder();
443        oikeaReuna.Restitution = 0.1;
444        oikeaReuna.Color = Color.Black;
445        oikeaReuna.KineticFriction = 0.0;
446        oikeaReuna.IsVisible = true;
447
448        PhysicsObject ylaReuna = Level.CreateTopBorder();
449        ylaReuna.Restitution = 0.1;
450        ylaReuna.Color = Color.Black;
451        ylaReuna.KineticFriction = 0.0;
452        ylaReuna.IsVisible = true;
453
454
455        PhysicsObject alaReuna = Level.CreateBottomBorder();
456        alaReuna.Restitution = 0.1;
457        alaReuna.IsVisible = true;
458        alaReuna.Color = Color.Black;
459        alaReuna.KineticFriction = 0.0;
460    }
461
462    IntMeter LuoPisteLaskuri(double x, double y)
463    {
464        IntMeter laskuri = new IntMeter(0);
465        laskuri.MaxValue = 99999999;
466        Label naytto = new Label();
467        naytto.BindTo(laskuri);
468        naytto.X = x;
469        naytto.Y = y;
470        naytto.TextColor = Color.Red;
471        Add(naytto);
472
473        return laskuri;
474    }
475
476    void voimalisaa()
477    {
478        voimaMittariPelaaja1.Value += 30;
479        if(voimaMittariPelaaja1.Value < 150)
480        {
481            voimaMittariPelaaja1.Value += 100;
482        }
483    }
484
485    void AmpumisTimer(double interval)
486    {
487        Timer ajastin = new Timer();
488        ajastin.Interval = interval;
489        ajastin.Timeout += voimalisaa;
490        ajastin.Start(1);
491
492    }
493
494    void ValikossaLiikkuminen(AnalogState hiirenTila)
495    {
496        foreach (Label kohta in valikonKohdat)
497        {
498            if (Mouse.IsCursorOn(kohta))
499            {
500                kohta.TextColor = Color.Red;
501            }
502            else
503            {
504                kohta.TextColor = Color.Black;
505            }
506
507        }
508    }
509
510    void Yourname(String[] Args)
511    {
512
513    }
514
515    void KuolinValikko()
516    {
517        ClearAll();
518
519        valikonKohdat = new List<Label>();
520        Label kohta1 = new Label("Continue?");
521        kohta1.Position = new Vector(0, 40);
522        valikonKohdat.Add(kohta1);
523
524        foreach (Label valikonKohta in valikonKohdat)
525        {
526            Add(valikonKohta);
527        }
528
529
530
531
532    }
533    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
534    {
535        if (ammus.CollisionIgnoreGroup != kohde.CollisionIgnoreGroup) {
536            ammus.Destroy();
537        }
538    }
539    void LuoAikaLaskuri()
540    {
541        Timer aikaLaskuri = new Timer();
542        aikaLaskuri.Interval = 300;
543        aikaLaskuri.Timeout += AikaLoppui;
544        aikaLaskuri.Start(1);
545
546        Label aikaNaytto = new Label();
547        aikaNaytto.TextColor = Color.White;
548        aikaNaytto.DecimalPlaces = 1;
549        aikaNaytto.BindTo(aikaLaskuri.SecondCounter);
550        Add(aikaNaytto);
551    }
552
553    void AikaLoppui()
554    {
555        pelaaja1.Destroy();
556    }
557}
558
559
Note: See TracBrowser for help on using the repository browser.