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

Revision 8939, 11.6 KB checked in by npo17_41, 2 years ago (diff)

AASDF saatana respawn ei toimi

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    AssaultRifle pelaajan1Ase;
20    AssaultRifle pelaajan2Ase;
21    Image pelaaja1kuva = LoadImage("IdleBO1");
22    Image pelaaja2kuva = LoadImage("IdleRO1");
23    Image titlelogo = LoadImage("FireFightLogo");
24    int kenttanro = 1;
25    int pelaaja1hypyt = 1;
26    int pelaaja2hypyt = 1;
27    IntMeter pelaaja1pisteet;
28    IntMeter pelaaja2pisteet;
29    const int RUUDUN_KOKO = 80;
30    const double nopeus = 400;
31    bool alkuvalikkoKayty = false;
32
33    public override void Begin()
34    {
35        ClearAll();
36        if(alkuvalikkoKayty == false)
37        {
38            ValikkoTausta();
39            MultiSelectWindow alkuvalikko = new MultiSelectWindow("", "Aloita peli", "Lopeta");
40            alkuvalikko.AddItemHandler(0, delegate {
41                AloitaPeli(kenttanro);
42                alkuvalikkoKayty = true;
43                }
44            );
45            alkuvalikko.AddItemHandler(1, Exit);
46            alkuvalikko.DefaultCancel = 1;
47            alkuvalikko.Color = Color.BloodRed;
48            alkuvalikko.Shape = Shape.Octagon;
49            Add(alkuvalikko);
50        }
51    }
52    void ValikkoTausta()
53    {
54        Level.Background.Color = Color.DarkBlue;
55        Level.Background.Image = titlelogo;
56        Timer taustaLaskuri = new Timer();
57        taustaLaskuri.Interval = 0.04;
58        taustaLaskuri.Timeout += delegate
59        {
60            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);
61            taustaammus.Hit(new Vector(0.0, RandomGen.NextDouble(4.0, 40.0)));
62        };
63        taustaLaskuri.Start();
64    }
65    void LuoTaustaAmmus(double x, double y, Shape shape, Color vari, int cig, bool ignores)
66    {
67        taustaammus = new PhysicsObject(32.0, 32.0);
68        taustaammus.X = x;
69        taustaammus.Y = y;
70        taustaammus.Shape = shape;
71        taustaammus.Color = vari;
72        taustaammus.CanRotate = true;
73        taustaammus.IgnoresCollisionResponse = false;
74        taustaammus.IgnoresExplosions = ignores;
75        taustaammus.CollisionIgnoreGroup = cig;
76        taustaammus.IgnoresCollisionWith(taustaammus);
77        taustaammus.Tag = "taustaammus";
78        Add(taustaammus);
79    }
80    void AloitaPeli(int kenttanro)
81    {
82        ClearAll();
83        LuoPistelaskurit();
84        Luokentta(kenttanro);
85        Kontrollit();
86        Kamera();
87        LuoPistelaskurit();
88    }
89    void LuoPistelaskurit()
90    {
91        pelaaja1pisteet = new IntMeter(0);
92        pelaaja1pisteet.MaxValue = 10;
93        pelaaja1pisteet.UpperLimit += Pelaaja1Voittaa;
94        Label pisteNaytto1 = new Label();
95        pisteNaytto1.X = Screen.Right - 100;
96        pisteNaytto1.Y = Screen.Top - 100;
97        pisteNaytto1.TextColor = Color.Black;
98        pisteNaytto1.Color = Color.White;
99        pisteNaytto1.BindTo(pelaaja1pisteet);
100        Add(pisteNaytto1);
101
102        pelaaja2pisteet = new IntMeter(0);
103        pelaaja2pisteet.MaxValue = 10;
104        pelaaja2pisteet.UpperLimit += Pelaaja2Voittaa;
105        Label pisteNaytto2 = new Label();
106        pisteNaytto2.X = Screen.Left + 100;
107        pisteNaytto2.Y = Screen.Top - 100;
108        pisteNaytto2.TextColor = Color.Black;
109        pisteNaytto2.Color = Color.White;
110        pisteNaytto2.BindTo(pelaaja2pisteet);
111        Add(pisteNaytto2);
112    }
113    void Kamera()
114    {
115        Camera.ZoomFactor = 1;
116        Camera.Follow(pelaaja1, pelaaja2);
117        Camera.StayInLevel = true;
118    }
119    void Luokentta(int kenttanro)
120
121    {
122
123        Gravity = new Vector(0, -800);
124
125        string kenttanimi = kenttanro.ToString();
126        TileMap kentta = TileMap.FromLevelAsset(kenttanimi);
127        kentta.SetTileMethod('P', LisaaTaso);
128        kentta.SetTileMethod('A', POWERUP);
129        kentta.SetTileMethod('N', LisaaPelaaja);
130        kentta.SetTileMethod('M', LisaaToinenPelaaja);
131        kentta.SetTileMethod('O', LisaaAse);
132        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
133        alareuna = Level.CreateBottomBorder(1, false);
134        alareuna.Tag = "alareuna";
135        ylareuna = Level.CreateTopBorder(1, false);
136        ylareuna.Tag = "ylareuna";
137        Level.CreateHorizontalBorders(1, false, Color.Azure);
138    }
139    void Kontrollit()
140    {
141        Keyboard.Listen(Key.Up, ButtonState.Pressed, Pelaaja1Hyppaa, "Pelaaja hyppää", pelaaja1, nopeus);
142        Keyboard.Listen(Key.Down, ButtonState.Pressed, Pelaaja1Hyppaa, "Pelaaja laskeutuu", pelaaja1, -nopeus);
143        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
144        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
145        Keyboard.Listen(Key.RightShift, ButtonState.Down, Pelaaja1Ammu, "Ampuu aseella", pelaajan1Ase);
146        Keyboard.Listen(Key.W, ButtonState.Pressed, Pelaaja2Hyppaa, "Pelaaja hyppää", pelaaja2, nopeus);
147        Keyboard.Listen(Key.S, ButtonState.Pressed, Pelaaja2Hyppaa, "Pelaaja laskeutuu", pelaaja2, -nopeus);
148        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
149        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu oikealle", pelaaja2, nopeus);
150        Keyboard.Listen(Key.LeftShift, ButtonState.Down, Pelaaja2Ammu, "Ampuu aseella", pelaajan2Ase);
151        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
152    }
153    void Pelaaja1Hyppaa(PlatformCharacter hahmo, double nopeus)
154    {
155          if(pelaaja1hypyt >= 0)
156          {
157              pelaaja1hypyt--;
158              hahmo.ForceJump(nopeus * 3);
159          }
160    }
161    void Pelaaja2Hyppaa(PlatformCharacter hahmo, double nopeus)
162    {
163        if (pelaaja2hypyt >= 0)
164        {
165            pelaaja2hypyt--;
166            hahmo.ForceJump(nopeus * 3);
167        }
168
169    }
170    void Pelaaja1Ammu(AssaultRifle ase)
171    {
172        Vector suunta = (pelaaja2.Position - pelaaja1.Position).Normalize();
173        ase.Angle = suunta.Angle;
174        PhysicsObject ammus = ase.Shoot();
175    }
176    void Pelaaja2Ammu(AssaultRifle ase)
177    {
178        Vector suunta = (pelaaja1.Position - pelaaja2.Position).Normalize();
179        ase.Angle = suunta.Angle;
180        PhysicsObject ammus = ase.Shoot();
181    }
182    void AmmusTuhoutuu(PhysicsObject ammus, PhysicsObject kohde)
183    {
184        Explosion ammusrajahdys = new Explosion(45);
185        ammusrajahdys.IsVisible = false;
186        ammusrajahdys.Force = 1000;
187        ammusrajahdys.Speed = 200;
188        ammusrajahdys.Position = ammus.Position;
189        Add(ammusrajahdys);
190        ammus.Destroy();
191       
192    }
193    void Liikuta(PlatformCharacter hahmo, double nopeus)
194    {
195        hahmo.Walk(nopeus);
196    }
197    void LisaaTaso(Vector paikka, double leveys, double korkeus)
198    {
199        taso = new PhysicsObject(leveys, korkeus);
200        taso.Position = paikka;
201        taso.Color = Color.Azure;
202        taso.Tag = "taso";
203        taso.IgnoresGravity = true;
204        taso.IgnoresPhysicsLogics = true;
205        taso.MakeOneWay();
206        taso.MakeStatic();
207       
208
209        Add(taso);
210
211    }
212
213    void POWERUP(Vector paikka, double leveys, double korkeus)
214    {
215        powerup = new PhysicsObject(leveys, korkeus);
216        powerup.Position = paikka;
217        powerup.Color = Color.Azure;
218        powerup.Tag = "powerup";
219        Add(powerup); 
220
221    }
222    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
223    {
224        pelaaja1 = new PlatformCharacter(244, 284.5);
225        pelaaja1.Position = paikka;
226        pelaaja1.Mass = 3.0;
227        AddCollisionHandler(pelaaja1, "taso", TuplaHyppy);
228        AddCollisionHandler(pelaaja1, "alareuna", Pelaaja1Kuolee);
229        pelaaja1.MaintainMomentum = true;
230        pelaaja1.Tag = "pelaaja1";
231        pelaaja1.Image = pelaaja1kuva;
232        Add(pelaaja1);
233
234        pelaajan1Ase = new AssaultRifle(120, 40);
235        pelaajan1Ase.FireRate = 16;
236        pelaajan1Ase.ProjectileCollision = AmmusTuhoutuu;
237        pelaajan1Ase.AmmoIgnoresExplosions = true;
238        pelaajan1Ase.Image = null;
239        pelaajan1Ase.Color = new Color(0, 0, 0, 0);
240        pelaaja1.Add(pelaajan1Ase);
241    }
242    void LisaaToinenPelaaja(Vector paikka, double leveys, double korkeus)
243    {
244        pelaaja2 = new PlatformCharacter(244, 284.5);
245        pelaaja2.Position = paikka;
246        pelaaja2.Mass = 3.0;
247        AddCollisionHandler(pelaaja2, "taso", TuplaHyppy);
248        AddCollisionHandler(pelaaja2, "alareuna", Pelaaja2Kuolee);
249        pelaaja2.MaintainMomentum = true;
250        pelaaja2.Tag = "pelaaja2";
251        pelaaja2.Image = pelaaja2kuva;
252        Add(pelaaja2);
253
254        pelaajan2Ase = new AssaultRifle(60, 20);
255        pelaajan2Ase.FireRate = 16;
256        pelaajan2Ase.ProjectileCollision = AmmusTuhoutuu;
257        pelaajan2Ase.AmmoIgnoresExplosions = true;
258        pelaajan2Ase.Image = null;
259        pelaajan2Ase.Color = new Color(0, 0, 0, 0);
260        pelaaja2.Add(pelaajan2Ase);
261    }
262    void LisaaAse(Vector paikka, double leveys, double korkeus)
263    {
264
265        ase = PhysicsObject.CreateStaticObject(leveys, korkeus);
266        ase.Position = paikka;
267        ase.Color = Color.Azure;
268        ase.Tag = "ase";
269        Add(ase);
270    }
271    void TuplaHyppy(PhysicsObject pelaaja, PhysicsObject taso)
272    {
273        if(taso.Tag.ToString() == "taso")
274        {
275            if(pelaaja.Tag.ToString() == "pelaaja1")
276            {
277                pelaaja1hypyt = 1;
278            }
279            if(pelaaja.Tag.ToString() == "pelaaja2")
280            {
281                pelaaja2hypyt = 1;
282            }
283        }
284    }
285    void Pelaaja1Kuolee(PhysicsObject pelaaja, PhysicsObject pohja)
286    {
287        pelaaja1.Destroy();
288        pelaaja2pisteet.Value += 1;
289        Timer.SingleShot(0.8, delegate
290        {
291            ClearGameObjects();
292            Luokentta(kenttanro);
293        });
294    }
295    void Pelaaja2Kuolee(PhysicsObject pelaaja, PhysicsObject pohja)
296    {
297        pelaaja2.Destroy();
298        pelaaja1pisteet.Value += 1;
299        Timer.SingleShot(0.8, delegate 
300        {
301            ClearGameObjects();
302            Luokentta(kenttanro);
303        });
304    }
305    void Pelaaja1Voittaa()
306    {
307        MultiSelectWindow voittoikkuna = new MultiSelectWindow("Sininen voittaa", "Uudestaan", "Alkuvalikkoon", "Poistu");
308        voittoikkuna.AddItemHandler(0, delegate
309        {
310            AloitaPeli(kenttanro);
311        });
312        voittoikkuna.AddItemHandler(1, delegate
313        {
314            alkuvalikkoKayty = false;
315            Begin();
316        });
317        voittoikkuna.AddItemHandler(2, Exit);
318        voittoikkuna.Color = Color.BloodRed;
319        voittoikkuna.Shape = Shape.Octagon;
320        Add(voittoikkuna);
321    }
322    void Pelaaja2Voittaa()
323    {
324        MultiSelectWindow voittoikkuna = new MultiSelectWindow("Punainen voittaa", "Uudestaan", "Alkuvalikkoon", "Poistu");
325        voittoikkuna.AddItemHandler(0, delegate
326        {
327            AloitaPeli(kenttanro);
328        });
329        voittoikkuna.AddItemHandler(1, delegate
330        {
331            alkuvalikkoKayty = false;
332            Begin();
333        });
334        voittoikkuna.AddItemHandler(2, Exit);
335        voittoikkuna.Color = Color.BloodRed;
336        voittoikkuna.Shape = Shape.Octagon;
337        Add(voittoikkuna);
338
339    }
340}
Note: See TracBrowser for help on using the repository browser.