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

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