source: 2017/27/EinoS/FireFight_Demo/FireFight_Demo/FireFight_Demo/FireFight_Demo.cs @ 8910

Revision 8910, 9.3 KB checked in by npo17_41, 3 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class FireFight_Demo : PhysicsGame
10{
11    PhysicsObject taso;
12    PlatformCharacter pelaaja1;
13    PlatformCharacter pelaaja2;
14    PhysicsObject taustaammus;
15    PhysicsObject powerup;
16    PhysicsObject ase;
17    PhysicsObject alareuna;
18    PhysicsObject ylareuna;
19    PhysicsObject ammus;
20    Image pelaaja1kuva = LoadImage("IdleBO1");
21    Image pelaaja2kuva = LoadImage("IdleRO1");
22    int kenttanro = 1;
23    int pelaaja1hypyt = 1;
24    const int RUUDUN_KOKO = 80;
25    const double nopeus = 400;
26    bool alkuvalikkoKayty = false;
27
28    public override void Begin()
29    {
30        ClearAll();
31        if(alkuvalikkoKayty == false)
32        {
33            ValikkoTausta();
34            MultiSelectWindow alkuvalikko = new MultiSelectWindow("", "Aloita peli", "Lopeta");
35            alkuvalikko.AddItemHandler(0, delegate {
36                AloitaPeli(kenttanro);
37                alkuvalikkoKayty = true;
38                }
39            )
40            ;
41            alkuvalikko.AddItemHandler(1, Exit);
42            alkuvalikko.DefaultCancel = 1;
43            alkuvalikko.Color = Color.BloodRed;
44            alkuvalikko.Shape = Shape.Octagon;
45            Add(alkuvalikko);
46
47        }
48
49    }
50    void ValikkoTausta()
51    {
52        Level.Background.CreateGradient(Color.DarkAzure, Color.Azure);
53        Timer taustaLaskuri = new Timer();
54        taustaLaskuri.Interval = 0.04;
55        taustaLaskuri.Timeout += delegate
56        {
57            LuoTaustaAmmus(RandomGen.NextDouble(Level.Left - 450, Level.Right + 450), Level.Bottom - 150, RandomGen.SelectOne(Shape.Diamond, Shape.Ellipse, Shape.Hexagon), RandomGen.SelectOne(Color.Blue, Color.Red), 2, true);
58            taustaammus.Hit(new Vector(0.0, RandomGen.NextDouble(4.0, 40.0)));
59        }
60        ;
61        taustaLaskuri.Start();
62    }
63    void LuoTaustaAmmus(double x, double y, Shape shape, Color vari, int cig, bool ignores)
64    {
65        taustaammus = new PhysicsObject(32.0, 32.0);
66        taustaammus.X = x;
67        taustaammus.Y = y;
68        taustaammus.Shape = shape;
69        taustaammus.Color = vari;
70        taustaammus.CanRotate = true;
71        taustaammus.IgnoresCollisionResponse = false;
72        taustaammus.IgnoresExplosions = ignores;
73        taustaammus.CollisionIgnoreGroup = cig;
74        taustaammus.IgnoresCollisionWith(taustaammus);
75        taustaammus.Tag = "taustaammus";
76        Add(taustaammus);
77    }
78    void AloitaPeli(int kenttanro)
79    {
80        ClearAll();
81        Luokentta(kenttanro);
82        Kontrollit();
83        Kamera();
84
85    }
86    void Kamera()
87    {
88        Camera.ZoomFactor = 1;
89        Camera.Follow(pelaaja1, pelaaja2);
90        Camera.StayInLevel = true;
91    }
92    void Luokentta(int kenttanro)
93
94    {
95
96        Gravity = new Vector(0, -800);
97
98        string kenttanimi = kenttanro.ToString();
99        TileMap kentta = TileMap.FromLevelAsset(kenttanimi);
100        kentta.SetTileMethod('P', LisaaTaso);
101        kentta.SetTileMethod('A', POWERUP);
102        kentta.SetTileMethod('N', LisaaPelaaja);
103        kentta.SetTileMethod('M', LisaaToinenPelaaja);
104        kentta.SetTileMethod('O', LisaaAse);
105        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
106        alareuna = Level.CreateBottomBorder(1, false);
107        alareuna.Tag = "alareuna";
108        ylareuna = Level.CreateTopBorder(1, false);
109        ylareuna.Tag = "ylareuna";
110        Level.CreateHorizontalBorders(1, false, Color.Azure);
111    }
112    void Kontrollit()
113    {
114        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, nopeus);
115        Keyboard.Listen(Key.Down, ButtonState.Pressed, Hyppaa, "Pelaaja laskeutuu", pelaaja1, -nopeus);
116        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
117        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
118        Keyboard.Listen(Key.RightShift, ButtonState.Pressed, Pelaaja1Ammu, "Ampuu aseella", pelaaja1);
119        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, nopeus);
120        Keyboard.Listen(Key.S, ButtonState.Pressed, Hyppaa, "Pelaaja laskeutuu", pelaaja2, -nopeus);
121        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
122        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
123        Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, Pelaaja2Ammu, "Ampuu aseella", pelaaja2);
124        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
125    }
126    void Hyppaa(PlatformCharacter hahmo, double nopeus)
127    {
128        /*  if(pelaaja1hypyt >= 0)
129          {
130              pelaaja1hypyt--;
131
132          }
133          */
134        hahmo.ForceJump(nopeus * 2);
135
136    }
137
138    void Pelaaja1Ammu(PlatformCharacter pelaaja)
139    {
140        ammus = new PhysicsObject(8, 8, Shape.Circle);
141        ammus.X = pelaaja1.X - 80;
142        ammus.Y = pelaaja1.Y + 73;
143        ammus.Color = Color.Black;
144        ammus.IgnoresGravity = true;
145        ammus.IgnoresCollisionWith(ammus);
146        ammus.IgnoresCollisionResponse = true;
147        ammus.Tag = "9mm";
148        ammus.Mass = 0.1;
149        //AddCollisionHandler(ammus, AmmusTuhoutuu);
150        Add(ammus);
151
152        Vector vauhti = new Vector(-70, 0);
153        ammus.Hit(vauhti);
154    }
155    void Pelaaja2Ammu(PlatformCharacter pelaaja)
156    {
157        ammus = new PhysicsObject(8, 8, Shape.Circle);
158        ammus.X = pelaaja2.X + 80;
159        ammus.Y = pelaaja2.Y + 73;
160        ammus.Color = Color.Black;
161        ammus.IgnoresGravity = true;
162        ammus.IgnoresCollisionWith(ammus);
163        ammus.IgnoresCollisionResponse = true;
164        ammus.Tag = "9mm";
165        ammus.Mass = 0.1;
166        //AddCollisionHandler(ammus, AmmusTuhoutuu);
167        Add(ammus);
168
169        Vector vauhti = new Vector(70, 0);
170        ammus.Hit(vauhti);
171
172    }
173    void AmmusTuhoutuu(PhysicsObject ammus, PhysicsObject kohde)
174    {
175        Explosion ammusrajahdys = new Explosion(25);
176        ammusrajahdys.Position = ammus.Position;
177        Add(ammusrajahdys);
178        ammus.Destroy();
179       
180    }
181    void Liikuta(PlatformCharacter hahmo, double nopeus)
182    {
183        hahmo.Walk(nopeus);
184    }
185    void LisaaTaso(Vector paikka, double leveys, double korkeus)
186    {
187        taso = new PhysicsObject(leveys, korkeus);
188        taso.Position = paikka;
189        taso.Color = Color.Azure;
190        taso.Tag = "taso";
191        taso.IgnoresGravity = true;
192        taso.IgnoresPhysicsLogics = true;
193        taso.MakeOneWay();
194        taso.MakeStatic();
195       
196
197        Add(taso);
198
199    }
200
201    void POWERUP(Vector paikka, double leveys, double korkeus)
202    {
203        powerup = new PhysicsObject(leveys, korkeus);
204        powerup.Position = paikka;
205        powerup.Color = Color.Azure;
206        powerup.Tag = "powerup";
207        Add(powerup); 
208
209    }
210
211    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
212    {
213        pelaaja1 = new PlatformCharacter(244, 284.5);
214        pelaaja1.Position = paikka;
215        pelaaja1.Mass = 3.0;
216        AddCollisionHandler(pelaaja1, "taso", TuplaHyppy);
217        AddCollisionHandler(pelaaja1, "alareuna", Pelaaja1Kuolee);
218        pelaaja1.MaintainMomentum = true;
219        pelaaja1.Tag = "pelaaja1";
220        pelaaja1.Image = pelaaja1kuva;
221        Add(pelaaja1);
222       
223
224    }
225    void LisaaToinenPelaaja(Vector paikka, double leveys, double korkeus)
226    {
227        pelaaja2 = new PlatformCharacter(244, 284.5);
228        pelaaja2.Position = paikka;
229        pelaaja2.Mass = 3.0;
230        AddCollisionHandler(pelaaja2, "taso", TuplaHyppy);
231        AddCollisionHandler(pelaaja2, "alareuna", Pelaaja2Kuolee);
232        pelaaja2.MaintainMomentum = true;
233        pelaaja2.Tag = "pelaaja2";
234        pelaaja2.Image = pelaaja2kuva;
235        Add(pelaaja2);
236
237    }
238    void LisaaAse(Vector paikka, double leveys, double korkeus)
239    {
240
241        ase = PhysicsObject.CreateStaticObject(leveys, korkeus);
242        ase.Position = paikka;
243        ase.Color = Color.Azure;
244        ase.Tag = "ase";
245        Add(ase);
246    }
247    void TuplaHyppy(PhysicsObject taso, PhysicsObject pelaaja)
248    {
249        if(pelaaja1hypyt == 0)
250        {
251            pelaaja1hypyt ++;
252
253        }
254
255    }
256    void Pelaaja1Kuolee(PhysicsObject pelaaja, PhysicsObject pohja)
257    {
258        pelaaja.Destroy();
259        Pelaaja2Voittaa();
260        Timer.SingleShot(2, StopAll);
261    }
262    void Pelaaja2Kuolee(PhysicsObject pelaaja, PhysicsObject pohja)
263    {
264        pelaaja.Destroy();
265        Pelaaja1Voittaa();
266        Timer.SingleShot(2, StopAll);
267    }
268    void Pelaaja1Voittaa()
269    {
270        MultiSelectWindow voittoikkuna = new MultiSelectWindow("Sininen voittaa", "Uudestaan", "Poistu");
271        voittoikkuna.AddItemHandler(0, delegate
272        {
273            AloitaPeli(kenttanro);
274        });
275        voittoikkuna.AddItemHandler(1, delegate
276        {
277            alkuvalikkoKayty = false;
278            Begin();
279        });
280        voittoikkuna.Color = Color.BloodRed;
281        voittoikkuna.Shape = Shape.Octagon;
282        Add(voittoikkuna);
283    }
284    void Pelaaja2Voittaa()
285    {
286       
287    }
288}
Note: See TracBrowser for help on using the repository browser.