source: 2014/26/JimiR/RunAway/RunAway/RunAway/RunAway/RunAway.cs @ 5157

Revision 5157, 14.9 KB checked in by jijaolri, 7 years ago (diff)

PELI ON VALMIIIIIIIIIIIIIIIIIIS!

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class RunAway : PhysicsGame
10{
11    Image taustaKuva = LoadImage("energydrink");
12
13    Image pelaajanKuva = LoadImage("ukkeli");
14    Image pelaajan2Kuva = LoadImage("energydrink");
15    Image vihun2Kuva = LoadImage("Boss");
16    Image napinKuva = LoadImage("nappi");
17
18    Hahmo pelaaja;
19    PhysicsObject yksinpeliVihu;
20
21    Hahmo coopVihu;
22   
23    Hahmo pelaaja2;
24
25    Image vihollisenKuva = LoadImage("slenderman");
26
27    Image asekuva = LoadImage("Rifle");
28
29    bool moninpeli = false;
30    bool coop = false;
31
32    bool vihuAmmuttu = false;
33    int kenttaNro;
34    int maxKenttaNro = 7;
35    int panoksetmoninpelissa = 1000000;
36    int panoksetyksinpelissa = 10;
37
38    List<PhysicsObject> listaKatoavistaSeinista = new List<PhysicsObject>();
39
40    public override void Begin()
41    {
42       
43        kenttaNro = 1;
44        LuoAlkuValikko();
45    }
46
47
48    void LuoAlkuValikko()
49    {
50
51        moninpeli = false;
52        coop = false;
53        MultiSelectWindow alkuValikko = new MultiSelectWindow("RunAway", "Start", "MultiPlayer", "COOP", "Quit");
54        Add(alkuValikko);
55
56        alkuValikko.AddItemHandler(0, AloitaPeli);
57        alkuValikko.AddItemHandler(1, delegate { AloitaMoninPeli("Areena");});
58        alkuValikko.AddItemHandler(2, COOP);
59        alkuValikko.AddItemHandler(3, Exit);
60    }
61
62    void AloitaPeli()
63    {
64        moninpeli = false;
65        SmoothTextures = false;
66        //LuoMusiikki();
67        vihuAmmuttu = false;
68        LuoKentta("Map" + kenttaNro);
69        LisaaOhjaimet();
70        LuoMusiikkiMP3("Gangnam_Style");
71        Camera.FollowedObject = pelaaja;
72        Camera.StayInLevel = true;
73        Level.Background.CreateGradient(Color.Black, Color.Blue);
74
75
76    }
77
78    void LuoKentta(String kentanNimi)
79    {
80
81        Camera.Follow(pelaaja);
82
83        TileMap ruudut = TileMap.FromLevelAsset(kentanNimi);
84        ruudut.SetTileMethod('#', LuoPalikka);
85        ruudut.SetTileMethod('P', LuoPelaaja);
86        ruudut.SetTileMethod('Y', LuoPelaaja2);
87        ruudut.SetTileMethod('S', LuoYksinpeliVihu);
88        ruudut.SetTileMethod('A', LuoKerattavaAse);
89        ruudut.SetTileMethod('O', LuoOvi);
90        ruudut.SetTileMethod('R', LuoPallo);
91        ruudut.SetTileMethod('V', LuoCOOPVihu);
92        ruudut.SetTileMethod('Q', LuoNappi);
93        ruudut.SetTileMethod('M', LuoKatoavaSeina);
94        ruudut.Execute(40,40);
95
96       
97       
98
99
100    }
101
102    void LisaaOhjaimet()
103    {
104        Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, null, pelaaja, new Vector(-500, 0));
105        //Keyboard.Listen(Key.A, ButtonState.Released, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
106
107        Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, null, pelaaja, new Vector(500, 0));
108        //Keyboard.Listen(Key.D, ButtonState.Pressed, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
109
110        Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, null, pelaaja, new Vector(0, 500));
111       // Keyboard.Listen(Key.W, ButtonState.Pressed, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
112
113        Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, null, pelaaja, new Vector(0, -500));
114        //Keyboard.Listen(Key.S, ButtonState.Pressed, LiikutaPelaajaa, null, pelaaja, Vector.Zero);
115
116
117        Keyboard.Listen(Key.O, ButtonState.Pressed, Pause, "Pysäyttää pelin");
118        Keyboard.Listen(Key.U, ButtonState.Pressed, delegate { AloitaMoninPeli("Areena"); }, "Aloittaa moninpelin alusta");
119        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
120        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
121        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
122
123    }
124
125
126    void LiikutaPelaajaa(Hahmo pelaaja, Vector vektori)
127    {
128        if (vektori == Vector.Zero) pelaaja.Velocity = Vector.Zero;
129        pelaaja.Push(vektori);
130
131        if (pelaaja.Ase != null)
132        {
133            if (pelaaja.Velocity == Vector.Zero) return;
134            Vector suunta = (pelaaja.Velocity.Normalize());
135            pelaaja.Ase.Angle = suunta.Angle;
136        }
137    }
138
139
140    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
141    {
142         pelaaja = new Hahmo(30, 30);
143         pelaaja.Image = pelaajanKuva;
144         pelaaja.Position = paikka;
145         pelaaja.Restitution = 0.1;
146         pelaaja.Tag = "pelaaja"; 
147         pelaaja.CanRotate = false;
148         Add(pelaaja);
149         AddCollisionHandler(pelaaja, "vihu", YksipeliPelaajaTormasi);
150         AddCollisionHandler<Hahmo, PhysicsObject>(pelaaja, "Ase", PelaajaSaaAseen);
151         AddCollisionHandler(pelaaja, "ovi", TormaaOveen);
152         pelaaja.MaximiElama = 5;
153         pelaaja.Elama = 5;
154
155
156
157         AddCollisionHandler(pelaaja, "pallo", YksipeliPelaajaTormasi); 
158    }
159
160
161    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
162    {
163        pelaaja2 = new Hahmo(30, 30);
164        pelaaja2.Image = pelaajan2Kuva;
165        pelaaja2.Position = paikka;
166        pelaaja2.Restitution = 0.1;
167        pelaaja2.Tag = "pelaaja2";
168        pelaaja2.CanRotate = false;
169        Add(pelaaja2);
170        AddCollisionHandler<Hahmo, PhysicsObject>(pelaaja2, "Ase", PelaajaSaaAseen);
171    }
172
173
174    void LuoPalikka(Vector paikka, double leveys, double korkeus)
175    {
176        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
177        palikka.Position = paikka;
178        palikka.Color = Color.BrownGreen;
179        Add(palikka);
180
181    }
182
183    void LuoOvi(Vector paikka, double leveys, double korkeus)
184    {
185        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
186        ovi.Position = paikka;
187        ovi.Image = LoadImage("ovi");
188        ovi.Tag = "ovi";
189        Add(ovi);
190
191    }
192
193    void LuoYksinpeliVihu(Vector paikka, double leveys, double korkeus)
194    {
195        yksinpeliVihu = new PhysicsObject(50, 100);
196        yksinpeliVihu.Position = paikka;
197        yksinpeliVihu.Image = vihollisenKuva;
198        yksinpeliVihu.Tag = "vihu";
199        Add(yksinpeliVihu);
200
201        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
202        seuraajanAivot.Speed = 200;           
203        seuraajanAivot.DistanceClose = 900;         
204        seuraajanAivot.StopWhenTargetClose = false;
205
206        yksinpeliVihu.Brain = seuraajanAivot;
207        yksinpeliVihu.Brain.Active = true;
208
209        yksinpeliVihu.IgnoresPhysicsLogics = true;
210
211
212    }
213
214    void LuoPallo(Vector paikka, double leveys, double korkeus)
215    {
216        PhysicsObject pallo = new PhysicsObject(15, 15);
217        pallo.Position = paikka;
218        pallo.Shape = Shape.Circle;
219        pallo.Color = Color.Red;
220        pallo.Tag = "pallo";
221        Add(pallo);
222
223        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
224        satunnaisAivot.ChangeMovementSeconds = 3;
225        satunnaisAivot.WanderRadius = 200;
226        pallo.Brain = satunnaisAivot;
227    }     
228
229
230    void YksipeliPelaajaTormasi(PhysicsObject pelaaja, PhysicsObject kohde)
231    {
232        if (kohde.Tag.Equals("vihu") || kohde.Tag.Equals("pallo"))
233        {
234            pelaaja.Destroy();
235            ClearAll();
236            AloitaPeli();
237        }
238
239    }
240
241    void LuoKerattavaAse(Vector paikka, double leveys, double korkeus)
242    {
243        PhysicsObject kerattavaAse = PhysicsObject.CreateStaticObject(leveys, korkeus);
244        kerattavaAse.Position = paikka;
245        kerattavaAse.Image = asekuva;
246        Add(kerattavaAse);
247        kerattavaAse.Tag = "Ase";
248 
249    }
250
251    void PelaajaSaaAseen(Hahmo pelaaja, PhysicsObject kohde)
252    {
253        //Hahmo pelaaja = (Hahmo)tormaaja;
254        kohde.Destroy();
255        pelaaja.Ase = new AssaultRifle(70, 20);
256        pelaaja.Add(pelaaja.Ase);
257        if (pelaaja.Ase != null)
258        {
259            if (moninpeli)
260            {
261                pelaaja.Ase.Ammo.Value = panoksetmoninpelissa;
262            }
263            else if (coop)
264            {
265                pelaaja.Ase.Ammo.Value = panoksetmoninpelissa;
266            }
267            else
268            {
269                pelaaja.Ase.Ammo.Value = panoksetyksinpelissa;
270            }
271            pelaaja.Ase.ProjectileCollision = AmmusOsui;
272        }
273       
274       
275    }
276
277    void AmmuAseella(Hahmo pelaaja)
278    {
279        if (pelaaja.Ase != null)
280        { 
281            PhysicsObject ammus = pelaaja.Ase.Shoot();
282
283            if (ammus != null)
284            {
285                ammus.Size *= 0.9;
286           
287                //ammus.Image = ...
288                //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
289            }
290        }
291       
292    }
293
294    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
295    {
296        ammus.Destroy();
297        if (kohde.Tag.Equals("vihu"))
298        {
299            kohde.Destroy();
300            vihuAmmuttu = true;
301        }
302
303        if (kohde.Tag.Equals("pelaaja")||kohde.Tag.Equals("pelaaja2")||kohde.Tag.Equals("coopVihu"))
304        {
305            ((Hahmo)kohde).Elama -= 1;
306            if (((Hahmo)kohde).Elama <= 0)
307            {
308                kohde.Destroy();
309
310                if (moninpeli)
311                {
312                    PeliLoppui();
313                }
314               
315                else if(coop)
316                {
317                    if (pelaaja.IsDestroyed && pelaaja2.IsDestroyed) PeliLoppui();
318                    else if(kohde.Tag.Equals("coopVihu")) PeliLoppuiVoittoon();
319                }
320
321            }
322        }
323    }
324
325    void TormaaOveen(PhysicsObject pelaaja, PhysicsObject kohde)
326    {
327        if (kohde.Tag.Equals("ovi"))
328        {
329            if (!vihuAmmuttu) return;
330
331            kenttaNro++;
332            if (kenttaNro > maxKenttaNro) PeliLoppui();
333            else
334            {
335                ClearAll();
336                AloitaPeli();
337            }
338        }
339    }
340
341    void PeliLoppui()
342    {
343        ClearAll();
344        LuoAlkuValikko();
345    }
346
347
348    void PeliLoppuiVoittoon()
349    {
350        MessageDisplay.Add("Players Win!");
351    }
352
353    void AloitaMoninPeli(String kentanNimi)
354    {
355        ClearAll();
356        moninpeli = true;
357        SmoothTextures = false;
358        LuoMusiikkiMP3("glitch_hop");
359       
360        LuoKentta(kentanNimi);
361
362        LisaaOhjaimet();
363        LisaaOhjaimetPelaajalle2();
364        Camera.Follow(pelaaja, pelaaja2);
365        LuoPistelaskuri(pelaaja, Screen.Left + 150, Screen.Top - 20);
366        LuoPistelaskuri(pelaaja2, Screen.Right - 150, Screen.Top - 20);
367       
368        //Camera.StayInLevel = true;
369        Gravity = new Vector(0, -400);
370    }
371
372    void LisaaOhjaimetPelaajalle2()
373    {
374        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(-500, 0));
375        Keyboard.Listen(Key.Left, ButtonState.Released, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
376        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(500, 0));
377        Keyboard.Listen(Key.Right, ButtonState.Released, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
378
379        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(0, 500));
380        Keyboard.Listen(Key.Up, ButtonState.Released, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
381        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(0, -500));
382        Keyboard.Listen(Key.Down, ButtonState.Released, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
383        Keyboard.Listen(Key.RightControl , ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
384        Keyboard.Listen(Key.N, ButtonState.Pressed, SeuraavaKentta, "vaihtaakenttaa");
385
386    }
387
388    void SeuraavaKentta()
389    {
390        AloitaMoninPeli("Areena2");
391       
392    }
393
394    void LuoPistelaskuri(Hahmo pelaaja,double x, double y)
395    {
396
397        ProgressBar elamaPalkki = new ProgressBar(150, 20);
398        elamaPalkki.X =  x;
399        elamaPalkki.Y = y;
400        elamaPalkki.BindTo(pelaaja.ElamaLaskuri);
401        Add(elamaPalkki);
402
403       
404       
405
406     
407    }
408
409    void COOP()
410    {
411        coop = true;
412        LuoKentta("COOPmap");
413        LisaaOhjaimet();
414        LisaaOhjaimetPelaajalle2();
415        LuoMusiikkiMP3("glitch_hop");
416
417        Camera.Follow(pelaaja, pelaaja2, coopVihu);
418       
419       
420    }
421
422    void LuoCOOPVihu(Vector paikka, double leveys, double korkeus)
423    {
424        coopVihu = new Hahmo(60, 60);
425        coopVihu.Image = vihun2Kuva;
426        coopVihu.MaximiElama = 100;
427        coopVihu.Elama = 100;
428        coopVihu.Tag = "coopVihu";
429        coopVihu.CanRotate = false;
430        Add(coopVihu);
431
432        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja, pelaaja2);
433        seuraajanAivot.Speed = 300;
434        seuraajanAivot.DistanceClose = 20; 
435        seuraajanAivot.StopWhenTargetClose = true;
436        coopVihu.Brain = seuraajanAivot;
437
438        coopVihu.Ase = new Cannon(45, 30);
439        coopVihu.Ase.Ammo.Value = int.MaxValue;
440        coopVihu.Ase.ProjectileCollision = AmmusOsui;
441        coopVihu.Add(coopVihu.Ase);
442
443       
444        Timer ampumisAjastin = new Timer();
445        ampumisAjastin.Interval = 0.01;
446        ampumisAjastin.Timeout += CoopVihuAmmu;
447        ampumisAjastin.Start();
448    }
449
450
451    void CoopVihuAmmu()
452    {
453        if (coopVihu.IsDestroyed) return;
454        if (coopVihu.Ase != null)
455        {
456            if (coopVihu.Velocity == Vector.Zero) return;
457            Vector suunta = (coopVihu.Velocity.Normalize());
458            coopVihu.Ase.Angle = suunta.Angle;
459        }
460
461        PhysicsObject ammus = coopVihu.Ase.Shoot();
462
463        if (ammus != null)
464        {
465            ammus.Size *= 0.9;
466            //ammus.Image = ...
467            //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
468        }
469    }
470
471    void LuoNappi(Vector paikka, double leveys, double korkeus)
472    {
473        PhysicsObject nappi = PhysicsObject.CreateStaticObject(10, 10);
474        nappi.Image = napinKuva;
475        nappi.Position = paikka;
476        Add(nappi);
477
478        AddCollisionHandler<PhysicsObject, Hahmo>(nappi, "pelaaja", OsuttiinNappiin);
479    }
480
481    void LuoKatoavaSeina(Vector paikka, double leveys, double korkeus)
482    {
483        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
484        seina.Color = Color.Green;
485        seina.Position = paikka;
486        Add(seina);
487        listaKatoavistaSeinista.Add(seina);
488    }
489
490    void OsuttiinNappiin(PhysicsObject nappi, Hahmo pelaaja)
491    {
492        if (pelaaja.Tag.Equals("pelaaja") && listaKatoavistaSeinista.Count > 0)
493        {
494            foreach (PhysicsObject seina in listaKatoavistaSeinista)
495            {
496                seina.Destroy();
497            }
498        }
499    }
500
501    void LuoMusiikkiMP3(string musa)
502    {
503        if (MediaPlayer.IsPlaying) return;
504        MediaPlayer.Play(musa);
505
506        MediaPlayer.IsRepeating = true;
507
508    }
509}
510
511
512
513
Note: See TracBrowser for help on using the repository browser.