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

Revision 5116, 10.5 KB checked in by tihaapas, 5 years ago (diff)

Tein elämät!

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
16    Hahmo pelaaja;
17    PhysicsObject vihu;
18   
19    Hahmo pelaaja2;
20
21    Image vihollisenKuva = LoadImage("slenderman");
22
23    Image asekuva = LoadImage("Rifle");
24
25    bool moninpeli = false;
26
27    bool vihuAmmuttu = false;
28    int kenttaNro;
29    int maxKenttaNro = 3;
30    int panoksetmoninpelissa = 1000000;
31    int panoksetyksinpelissa = 10;
32
33    public override void Begin()
34    {
35        kenttaNro = 1;
36        LuoAlkuValikko();
37    }
38
39
40    void LuoAlkuValikko()
41    {
42        MultiSelectWindow alkuValikko = new MultiSelectWindow("RunAway", "Start", "MultiPlayer", "Quit");
43        Add(alkuValikko);
44
45        alkuValikko.AddItemHandler(0, AloitaPeli);
46        alkuValikko.AddItemHandler(1, AloitaMoninPeli);
47        alkuValikko.AddItemHandler(2, Exit);
48    }
49
50    void AloitaPeli()
51    {
52        moninpeli = false;
53        SmoothTextures = false;
54        vihuAmmuttu = false;
55        LuoKentta("Map" + kenttaNro);
56        LisaaOhjaimet();
57        Camera.FollowedObject = pelaaja;
58        Camera.StayInLevel = true;
59
60
61    }
62
63    void LuoKentta(String kentanNimi)
64    {
65
66        Camera.Follow(pelaaja);
67
68        TileMap ruudut = TileMap.FromLevelAsset(kentanNimi);
69        ruudut.SetTileMethod('#', LuoPalikka);
70        ruudut.SetTileMethod('P', LuoPelaaja);
71        ruudut.SetTileMethod('Y', LuoPelaaja2);
72        ruudut.SetTileMethod('S', LuoVihu);
73        ruudut.SetTileMethod('A', LuoKerattavaAse);
74        ruudut.SetTileMethod('O', LuoOvi);
75        ruudut.SetTileMethod('R', LuoPallo);
76        ruudut.Execute(40,40);
77
78       
79       
80
81
82    }
83
84    void LisaaOhjaimet()
85    {
86        Keyboard.Listen(Key.A, ButtonState.Down,
87          LiikutaPelaajaa, null, pelaaja, new Vector(-1000, 0));
88        Keyboard.Listen(Key.A, ButtonState.Up,
89          LiikutaPelaajaa, null, pelaaja, Vector.Zero);
90        Keyboard.Listen(Key.D, ButtonState.Down,
91          LiikutaPelaajaa, null, pelaaja, new Vector(1000, 0));
92        Keyboard.Listen(Key.D, ButtonState.Up,
93          LiikutaPelaajaa, null, pelaaja, Vector.Zero);
94        Keyboard.Listen(Key.W, ButtonState.Down,
95          LiikutaPelaajaa, null, pelaaja, new Vector(0, 1000));
96        Keyboard.Listen(Key.W, ButtonState.Up,
97          LiikutaPelaajaa, null, pelaaja, Vector.Zero);
98        Keyboard.Listen(Key.S, ButtonState.Down,
99          LiikutaPelaajaa, null, pelaaja, new Vector(0, -1000));
100        Keyboard.Listen(Key.S, ButtonState.Up,
101         LiikutaPelaajaa, null, pelaaja, Vector.Zero);
102
103        Keyboard.Listen(Key.I, ButtonState.Pressed, TokkaaVihua, null);
104
105
106        Keyboard.Listen(Key.O, ButtonState.Pressed, Pause, "Pysäyttää pelin");
107        Keyboard.Listen(Key.U, ButtonState.Pressed, AloitaMoninPeli, "Aloittaa moninpelin alusta");
108        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu", pelaaja);
109        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
110        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
111
112    }
113
114    void TokkaaVihua()
115    {
116        vihu.Hit(new Vector(200, 200));
117    }
118
119
120    void LiikutaPelaajaa(Hahmo pelaaja, Vector vektori)
121    {
122        pelaaja.Push(vektori);
123
124        if (pelaaja.Ase != null)
125        {
126            Vector suunta = (pelaaja.Velocity.Normalize());
127            pelaaja.Ase.Angle = suunta.Angle;
128        }
129    }
130
131
132    void LuoPelaaja(Vector paikka, double leveys, double korkeus)
133    {
134         pelaaja = new Hahmo(30, 30);
135         pelaaja.Image = pelaajanKuva;
136         pelaaja.Position = paikka;
137         pelaaja.Restitution = 0;
138         pelaaja.Tag = "pelaaja";
139         pelaaja.CanRotate = false;
140         Add(pelaaja);
141         AddCollisionHandler(pelaaja, "vihu", PelaajaTormasi);
142         AddCollisionHandler<Hahmo, PhysicsObject>(pelaaja, "Ase", PelaajaSaaAseen);
143         AddCollisionHandler(pelaaja, "ovi", SeuraavaKentta);
144         pelaaja.MaximiElama = 5;
145         pelaaja.Elama = 5;
146
147
148
149         AddCollisionHandler(pelaaja, "pallo", PelaajaTormasi); 
150    }
151
152
153    void LuoPelaaja2(Vector paikka, double leveys, double korkeus)
154    {
155        pelaaja2 = new Hahmo(30, 30);
156        pelaaja2.Image = pelaajan2Kuva;
157        pelaaja2.Position = paikka;
158        pelaaja2.Restitution = 0;
159        pelaaja2.Tag = "pelaaja2";
160        pelaaja2.CanRotate = false;
161        Add(pelaaja2);
162        AddCollisionHandler<Hahmo, PhysicsObject>(pelaaja2, "Ase", PelaajaSaaAseen);
163    }
164
165
166    void LuoPalikka(Vector paikka, double leveys, double korkeus)
167    {
168        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
169        palikka.Position = paikka;
170        palikka.Color = Color.BrownGreen;
171        Add(palikka);
172
173    }
174
175    void LuoOvi(Vector paikka, double leveys, double korkeus)
176    {
177        PhysicsObject ovi = PhysicsObject.CreateStaticObject(leveys, korkeus);
178        ovi.Position = paikka;
179        ovi.Image = LoadImage("ovi");
180        ovi.Tag = "ovi";
181        Add(ovi);
182
183    }
184
185    void LuoVihu(Vector paikka, double leveys, double korkeus)
186    {
187        vihu = new PhysicsObject(50, 100);
188        vihu.Position = paikka;
189        vihu.Image = vihollisenKuva;
190        vihu.Tag = "vihu";
191        Add(vihu);
192
193        FollowerBrain seuraajanAivot = new FollowerBrain("pelaaja");
194        seuraajanAivot.Speed = 200;           
195        seuraajanAivot.DistanceClose = 900;         
196        seuraajanAivot.StopWhenTargetClose = false;
197
198        vihu.Brain = seuraajanAivot;
199        vihu.Brain.Active = true;
200
201        vihu.IgnoresPhysicsLogics = true;
202
203
204    }
205
206    void LuoPallo(Vector paikka, double leveys, double korkeus)
207    {
208        PhysicsObject pallo = new PhysicsObject(15, 15);
209        pallo.Position = paikka;
210        pallo.Shape = Shape.Circle;
211        pallo.Color = Color.Blue;
212        pallo.Tag = "pallo";
213        Add(pallo);
214
215        RandomMoverBrain satunnaisAivot = new RandomMoverBrain(200);
216        satunnaisAivot.ChangeMovementSeconds = 3;
217        satunnaisAivot.WanderRadius = 200;
218        pallo.Brain = satunnaisAivot;
219    }     
220
221
222    void PelaajaTormasi(PhysicsObject pelaaja, PhysicsObject kohde)
223    {
224        if (kohde.Tag.Equals("vihu") || kohde.Tag.Equals("pallo"))
225        {
226            pelaaja.Destroy();
227            ClearAll();
228            AloitaPeli();
229        }
230
231    }
232
233    void LuoKerattavaAse(Vector paikka, double leveys, double korkeus)
234    {
235        PhysicsObject kerattavaAse = new PhysicsObject(leveys, korkeus);
236        kerattavaAse.Position = paikka;
237        kerattavaAse.Image = asekuva;
238        Add(kerattavaAse);
239        kerattavaAse.Tag = "Ase";
240 
241    }
242
243    void PelaajaSaaAseen(Hahmo pelaaja, PhysicsObject kohde)
244    {
245        //Hahmo pelaaja = (Hahmo)tormaaja;
246        kohde.Destroy();
247        pelaaja.Ase = new AssaultRifle(70, 20);
248        pelaaja.Add(pelaaja.Ase);
249        if (pelaaja.Ase != null)
250        {
251            if (moninpeli)
252            {
253                pelaaja.Ase.Ammo.Value = panoksetmoninpelissa;
254            }
255            else 
256            { 
257                pelaaja.Ase.Ammo.Value = panoksetyksinpelissa; 
258            }
259            pelaaja.Ase.ProjectileCollision = AmmusOsui;
260        }
261       
262       
263    }
264
265    void AmmuAseella(Hahmo pelaaja)
266    {
267        if (pelaaja.Ase != null)
268        { 
269            PhysicsObject ammus = pelaaja.Ase.Shoot();
270
271            if (ammus != null)
272            {
273                ammus.Size *= 0.9;
274           
275                //ammus.Image = ...
276                //ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
277            }
278        }
279       
280    }
281
282    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
283    {
284        ammus.Destroy();
285        if (kohde.Tag.Equals("vihu"))
286        {
287            kohde.Destroy();
288            vihuAmmuttu = true;
289        }
290
291        if (kohde.Tag.Equals("pelaaja")||kohde.Tag.Equals("pelaaja2"))
292        {
293            ((Hahmo)kohde).Elama -= 1;
294        }
295    }
296
297    void SeuraavaKentta(PhysicsObject pelaaja, PhysicsObject kohde)
298    {
299        if (kohde.Tag.Equals("ovi"))
300        {
301            if (!vihuAmmuttu) return;
302
303            kenttaNro++;
304            if (kenttaNro > maxKenttaNro) PeliLoppui();
305            else
306            {
307                ClearAll();
308                AloitaPeli();
309            }
310        }
311    }
312
313    void PeliLoppui()
314    {
315        ClearAll();
316        LuoAlkuValikko();
317    }
318
319    void AloitaMoninPeli()
320    {
321        ClearAll();
322        moninpeli = true;
323        SmoothTextures = false;
324       
325        LuoKentta("Areena");
326
327        LisaaOhjaimet();
328        LisaaOhjaimetPelaajalle2();
329        Camera.Follow(pelaaja, pelaaja2);
330        LuoPistelaskuri(pelaaja, Screen.Left + 150, Screen.Top - 20);
331        LuoPistelaskuri(pelaaja2, Screen.Right - 150, Screen.Top - 20);
332       
333        //Camera.StayInLevel = true;
334        Gravity = new Vector(0, -400);
335    }
336
337    void LisaaOhjaimetPelaajalle2()
338    {
339        Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(-1000, 0));
340        Keyboard.Listen(Key.Left, ButtonState.Up, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
341        Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(1000, 0));
342        Keyboard.Listen(Key.Right, ButtonState.Up, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
343
344        Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(0, 1000));
345        Keyboard.Listen(Key.Up, ButtonState.Up, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
346        Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, null, pelaaja2, new Vector(0, -1000));
347        Keyboard.Listen(Key.Down, ButtonState.Up, LiikutaPelaajaa, null, pelaaja2, Vector.Zero);
348        Keyboard.Listen(Key.RightControl , ButtonState.Down, AmmuAseella, "Ammu", pelaaja2);
349
350    }
351
352 
353
354    void LuoPistelaskuri(Hahmo pelaaja,double x, double y)
355    {
356
357        ProgressBar elamaPalkki = new ProgressBar(150, 20);
358        elamaPalkki.X =  x;
359        elamaPalkki.Y = y;
360        elamaPalkki.BindTo(pelaaja.ElamaLaskuri);
361        Add(elamaPalkki);
362
363       
364       
365
366     
367    }
368 
369}
370
371
372
373
Note: See TracBrowser for help on using the repository browser.