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

Revision 8923, 9.9 KB checked in by npo17_41, 3 years ago (diff)

lisätty paskat aseet

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