source: 2014/27/JesseN/peli/peli/peli/peli.cs @ 5444

Revision 5444, 12.0 KB checked in by jeniemel, 7 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 peli : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14    IntMeter Respawnlaskuri=new IntMeter(3);
15    IntMeter Respawnlaskuri2=new IntMeter(3);
16    IntMeter Respawnlaskuri3 = new IntMeter(3);
17    DoubleMeter elamaLaskuri;
18    DoubleMeter elamaLaskuri2;
19    DoubleMeter elamaLaskuri3;
20    PlatformCharacter pelaaja1;
21    PlatformCharacter pelaaja2;
22    PlatformCharacter pelaaja3;
23    Image pelaajanKuva = LoadImage("pelaaja1");
24    Image pelaajanKuva2 = LoadImage("111");
25    Image pelaajanKuva3 = LoadImage("paprika");
26    Image tahtiKuva = LoadImage("laatikko");
27    Image Tiilikuva = LoadImage("tiili");
28    Image TuoliKuva = LoadImage("tuoli");
29    Image TuoliKuva2 = LoadImage("tuoli2"); 
30    Image taustaKuva = LoadImage("kuva2");
31    Image PöytäKuva = LoadImage("poyta");
32    SoundEffect ammus = LoadSoundEffect("ammus");
33    SoundEffect maaliAani = LoadSoundEffect("maali");
34   //SoundEffect 8bit= LoadSoundEffect("8bit");
35    Timer ajastin = new Timer();
36   
37
38
39    int kenttanumero = 1;
40
41    //private Image[] ukkelinKavely = LoadImages("pelaajakuva2", "pelaajakuva3");
42
43    public override void Begin()
44    {
45        SmoothTextures = false;
46        Kenttävalikko();
47    }
48    void Kenttävalikko()
49    {
50        MultiSelectWindow alkuValikko = new MultiSelectWindow("Valitse Kenttä", "Kenttä 1", "Kenttä 2", "Kenttä 3");
51        Add(alkuValikko);
52
53        alkuValikko.AddItemHandler(0, delegate { kenttanumero = 1; AloitaPeli(); });
54        alkuValikko.AddItemHandler(1, delegate { kenttanumero = 2; AloitaPeli(); });
55        alkuValikko.AddItemHandler(2, delegate { kenttanumero = 3; AloitaPeli(); });
56    }
57   
58    void AloitaPeli()
59    {
60        ClearAll();
61        Gravity = new Vector(0, -1000);
62
63        LuoKentta();
64        LisaaNappaimet();
65        LuoElamaLaskuri();
66        LuoElamaLaskuriPelaaja2();
67        LuoElamaLaskuriPelaaja3();
68        Level.Background.Image = taustaKuva;
69        ajastin.Start();
70        Camera.Follow(pelaaja1,pelaaja2);
71        Level.Background.FitToLevel();
72        //Camera.;
73        //Camera.ZoomFactor = 1.0;
74        //Camera.StayInLevel = true;
75    }
76
77    void LuoElamaLaskuri()
78    {
79        elamaLaskuri = new DoubleMeter(10);
80        elamaLaskuri.MaxValue = 10;
81        elamaLaskuri.LowerLimit += ElamaLoppui;
82
83        ProgressBar elamaPalkki = new ProgressBar(150, 20);
84        elamaPalkki.X = Screen.Left + 150;
85        elamaPalkki.Y = Screen.Top - 20;
86        elamaPalkki.BindTo(elamaLaskuri);
87        Add(elamaPalkki);
88    }
89    void LuoElamaLaskuriPelaaja2()
90    {
91     
92        elamaLaskuri2 = new DoubleMeter(10);
93        elamaLaskuri2.MaxValue = 10;
94        elamaLaskuri2.LowerLimit += ElamaLoppui;
95
96        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
97        elamaPalkki2.X = Screen.Right - 150;
98        elamaPalkki2.Y = Screen.Top - 20;
99        elamaPalkki2.BindTo(elamaLaskuri2);
100        Add(elamaPalkki2);
101    }
102    void LuoElamaLaskuriPelaaja3()
103    {
104
105        elamaLaskuri3 = new DoubleMeter(10);
106        elamaLaskuri3.MaxValue = 10;
107        elamaLaskuri3.LowerLimit += ElamaLoppui;
108
109        ProgressBar elamaPalkki3 = new ProgressBar(150, 20);
110        elamaPalkki3.X = 0;
111        elamaPalkki3.Y = Screen.Top - 20;
112        elamaPalkki3.BindTo(elamaLaskuri3);
113        Add(elamaPalkki3);
114    }
115
116    void ElamaLoppui()
117    {
118
119        MessageDisplay.Add("Ur dead, what a suprise");
120    }
121
122   
123
124
125    void LuoKentta()
126    {
127     
128        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("kentta"+kenttanumero);
129
130       
131        MediaPlayer.Play("8bit");
132        MediaPlayer.IsRepeating = true;
133       
134        ruudut.SetTileMethod(Color.Blue, LisaaPelaaja2);
135        ruudut.SetTileMethod(Color.Red, LisaaPelaaja);
136        ruudut.SetTileMethod(Color.Black, LisaaTaso);
137        ruudut.SetTileMethod(Color.Yellow, LisaaTuoli);
138        ruudut.SetTileMethod(new Color(255,106,0), LisaaTuoli2);
139        ruudut.SetTileMethod(new Color(0,255,255), LisaaPöytä);
140        ruudut.SetTileMethod(new Color(0, 255, 0), LisaaPelaaja3);
141
142
143
144       
145        //ruudut.SetTileMethod(Color.Black, LisaaTiili);
146        //ruudut.SetTileMethod(Color.Yellow, LuoTahti);
147
148     
149        ruudut.Execute(30, 30);
150   
151
152
153   
154        Level.CreateBorders();
155        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
156        //Camera.ZoomToLevel();
157        Camera.Follow(pelaaja1, pelaaja2, pelaaja3);
158        //Camera.StayInLevel = true;
159    }
160    void HeitaKranaatti(PlatformCharacter pelaaja)
161    {
162
163        if(ajastin.CurrentTime > 0.0)
164        {
165        Grenade kranu = new Grenade(4.0);
166        pelaaja.Throw(kranu, Angle.FromDegrees(30), 5000);
167        ajastin = new Timer();
168        ajastin.Start();
169       
170        }
171       
172    }
173
174    void LisaaTaso(Vector paikka, double leveys, double korkeus)
175    {
176        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
177        taso.Position = paikka;
178        taso.Image = Tiilikuva;
179        Add(taso);
180    }
181
182    void LisaaTuoli(Vector paikka, double leveys, double korkeus)
183    {
184        PhysicsObject taso =new PhysicsObject(leveys, korkeus);
185        taso.Position = paikka;
186        taso.Image = TuoliKuva;
187        taso.Mass = 10.0;
188        Add(taso);
189    }
190
191    void LisaaTuoli2(Vector paikka, double leveys, double korkeus)
192    {
193        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
194        taso.Position = paikka;
195        taso.Image = TuoliKuva2;
196        taso.Mass = 10.0;
197        Add(taso);
198    }
199    void LisaaPöytä(Vector paikka, double leveys, double korkeus)
200    {
201        PhysicsObject taso = new PhysicsObject(leveys, korkeus);
202        taso.Position = paikka;
203        taso.Image = PöytäKuva;
204        taso.Mass = 10.0;
205        Add(taso);
206    }
207
208    void LisaaTahti(Vector paikka, double leveys, double korkeus)
209    {
210        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
211        tahti.IgnoresCollisionResponse = true;
212        tahti.Position = paikka;
213        tahti.Image = tahtiKuva;
214        tahti.Tag = "tahti";
215        Add(tahti);
216    }
217
218    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
219    {
220        pelaaja1 = new PlatformCharacter(leveys, korkeus);
221        pelaaja1.Position = paikka;
222        pelaaja1.Mass = 4.0;
223        pelaaja1.Image = pelaajanKuva;
224        pelaaja1.Tag = "pelaaja1";
225        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
226        pelaaja1.Weapon = new AssaultRifle(0, 0);
227        pelaaja1.Weapon.Ammo.Value = 1000;
228        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
229        pelaaja1.Weapon.AttackSound = ammus;
230        pelaaja1.Weapon.FireRate = 2;
231
232        Add(pelaaja1);
233     
234       
235       
236    }
237
238    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
239    {
240        if (kohde.Tag == "pelaaja1")
241        {
242            elamaLaskuri.Value--;
243            if (elamaLaskuri.Value < 1)
244            {
245
246                pelaaja1.Destroy();
247                pelaaja1.Weapon.Destroy();
248                Respawnlaskuri.Value--;
249                if (Respawnlaskuri.Value > 0)
250                {
251                    Timer.SingleShot(5, AloitaPeli);
252                }
253            }
254       
255        }
256        else if (kohde.Tag == "pelaaja2")
257        {
258
259            elamaLaskuri2.Value--;
260            if (elamaLaskuri2.Value < 1)
261            {
262
263                pelaaja2.Destroy();
264                pelaaja2.Weapon.Destroy();
265                Respawnlaskuri2.Value--;
266                if (Respawnlaskuri2.Value > 0)
267                {
268                    Timer.SingleShot(5, AloitaPeli);
269                }
270            }
271       
272        }
273        if (kohde.Tag == "pelaaja3")
274        {
275            elamaLaskuri3.Value--;
276            if (elamaLaskuri3.Value < 1)
277            {
278
279                pelaaja3.Destroy();
280                pelaaja3.Weapon.Destroy();
281                Respawnlaskuri3.Value--;
282                if (Respawnlaskuri3.Value > 0)
283                {
284                    Timer.SingleShot(5, AloitaPeli);
285                }
286            }
287
288        }
289        ammus.Destroy();
290    }
291
292    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
293    {
294        pelaaja2 = new PlatformCharacter(leveys, korkeus);
295        pelaaja2.Position = paikka;
296        pelaaja2.Mass = 4.0;
297        pelaaja2.Image = pelaajanKuva2;
298        pelaaja2.Weapon = new AssaultRifle(0, 0);
299        pelaaja2.Weapon.Ammo.Value = 1000;
300        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
301        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
302        pelaaja2.Tag = "pelaaja2";
303        Add(pelaaja2);
304     
305        pelaaja2.Weapon.AttackSound = ammus;
306        pelaaja2.Weapon.FireRate = 2;
307    }
308
309    void LisaaPelaaja3(Vector paikka, double leveys, double korkeus)
310    {
311        pelaaja3 = new PlatformCharacter(leveys, korkeus);
312        pelaaja3.Position = paikka;
313        pelaaja3.Mass = 4.0;
314        pelaaja3.Image = pelaajanKuva3;
315        pelaaja3.Weapon = new AssaultRifle(0, 0);
316        pelaaja3.Weapon.Ammo.Value = 1000;
317        pelaaja3.Weapon.ProjectileCollision = AmmusOsui;
318        AddCollisionHandler(pelaaja3, "tahti", TormaaTahteen);
319        pelaaja3.Tag = "pelaaja3";
320        Add(pelaaja3);
321       
322        pelaaja3.Weapon.AttackSound = ammus;
323        pelaaja3.Weapon.FireRate = 2;
324    }
325
326    void LisaaNappaimet()
327    {
328        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
329        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
330
331        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
332        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
333        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
334        Keyboard.Listen(Key.O, ButtonState.Pressed, HeitaKranaatti, "Kranaatti", pelaaja1);
335
336        Keyboard.Listen(Key.P, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
337
338        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
339        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
340        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
341        Keyboard.Listen(Key.G, ButtonState.Pressed, HeitaKranaatti,"Kranaatti", pelaaja2);
342        Keyboard.Listen(Key.T, ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
343       
344
345        ControllerOne.Listen(Button.B, ButtonState.Down, AmmuAseella, "Ammu", pelaaja3);
346        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja3, -nopeus);
347        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja3, nopeus);
348        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja3, hyppyNopeus);
349        ControllerOne.Listen(Button.X, ButtonState.Pressed, HeitaKranaatti, "Kranaatti", pelaaja3);
350
351        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
352    }
353
354    void Liikuta(PlatformCharacter hahmo, double nopeus)
355    {
356        hahmo.Walk(nopeus);
357    }
358
359    void Hyppaa(PlatformCharacter hahmo, double nopeus)
360    {
361        hahmo.Jump(nopeus);
362    }
363
364    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
365    {
366        maaliAani.Play();
367        MessageDisplay.Add("Suoja poistettu D:");
368        tahti.Destroy();
369    }
370    void AmmuAseella(PlatformCharacter pelaaja)
371    {
372        PhysicsObject ammus = pelaaja.Weapon.Shoot();
373
374        if (ammus != null)
375        {
376            ammus.Size *= 1;
377            ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
378        }
379    }
380}
Note: See TracBrowser for help on using the repository browser.