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

Revision 5113, 9.2 KB checked in by jotapoti, 5 years ago (diff)

Tein Kikkee kivaa.

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