source: 2014/27/ArttuH/gamefusion/gamefusion/gamefusion/gamefusion.cs @ 5417

Revision 5417, 12.1 KB checked in by arjuhoyl, 5 years ago (diff)

viimeinen commit :)

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class gamefusion : PhysicsGame
10{
11    const double nopeus = 300;
12    const double hyppyNopeus = 500;
13    const int RUUDUN_KOKO = 40;
14
15    Image taustaKuva = LoadImage("8552054267_0b6750030d_b");
16
17    DoubleMeter elamalaskuri;
18
19    bool saaHeittaa = true;
20
21    PlatformCharacter pelaaja1;
22    TileMap kentta;
23
24    Image pelaajanKuva = LoadImage("steve");
25    Image coinKuva = LoadImage("coin");
26    Image zombiekuva = LoadImage("zombie");
27    SoundEffect maaliAani = LoadSoundEffect("maali");
28    SoundEffect hyppy = LoadSoundEffect("laser_shoot");
29    PhysicsObject health_back;
30    SoundEffect healling = LoadSoundEffect("heal");
31    Image healthback = LoadImage("full-health-kit");
32    Image maalikuva = LoadImage("maalikuva");
33   
34
35    public override void Begin()
36    {
37        luoalkuvalikko();
38        MediaPlayer.Play("Battle");
39        MediaPlayer.IsRepeating = true;
40    }
41
42    void LuoKentta()
43    {
44        kentta = TileMap.FromLevelAsset("kentta1");
45        kentta.SetTileMethod('#', LisaaTaso);
46        kentta.SetTileMethod('*', Lisaacoin);
47        kentta.SetTileMethod('N', LisaaPelaaja);
48        kentta.SetTileMethod('z', luozombie);
49        kentta.SetTileMethod('h', health);
50        kentta.SetTileMethod('m', maali);
51        //kentta.SetTileMethod('p', pelkokuva);
52        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
53        Level.CreateBorders();
54        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
55        Level.Background.Image = taustaKuva;
56        luoElamalaskuri();
57    }
58
59    void LisaaTaso(Vector paikka, double leveys, double korkeus)
60    {
61        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
62        taso.Position = paikka;
63        taso.Color = Color.Gray;
64        Add(taso);
65    }
66
67    void Lisaacoin(Vector paikka, double leveys, double korkeus)
68    {
69        PhysicsObject coin = PhysicsObject.CreateStaticObject(leveys, korkeus);
70        coin.IgnoresCollisionResponse = true;
71        coin.Position = paikka;
72        coin.Image = coinKuva;
73        coin.Tag = "coin";
74        Add(coin);
75    }
76
77    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
78    {
79        pelaaja1 = new PlatformCharacter(leveys, korkeus);
80        pelaaja1.Position = paikka;
81        pelaaja1.Mass = 4.0;
82        pelaaja1.Image = pelaajanKuva;
83        AddCollisionHandler(pelaaja1, "coin", TormaaTahteen);
84        Add(pelaaja1);
85        pelaaja1.Weapon = new AssaultRifle(20, 5);
86        pelaaja1.Weapon.ProjectileCollision = ammusOsui;
87        pelaaja1.Weapon.FireRate = 20000000.0;
88        pelaaja1.Weapon.InfiniteAmmo = true;
89        pelaaja1.Weapon.X = 25.0;
90        pelaaja1.Weapon.Y = 0.0;
91        pelaaja1.CollisionIgnoreGroup = 1;
92        //AddCollisionHandler(pelaaja1, "pelkokuva", luopelkokuva);
93        AddCollisionHandler(pelaaja1, "zombie", damage);
94        AddCollisionHandler(pelaaja1, "back", tormaaHelthbackkiin);
95        AddCollisionHandler(pelaaja1, "maali", peli_loppu);
96    }
97
98    void LisaaNappaimet()
99    {
100       
101        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
102        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
103
104
105
106        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
107
108        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle");
109        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
110       
111        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
112    }
113
114    void Liikuta(AnalogState tatinTila)
115    {
116        Vector tatinAsento = tatinTila.StateVector;
117        if (tatinAsento.X == 0.0)
118        {
119            return;
120        }
121        pelaaja1.Walk(300 * tatinAsento.X);
122        //luolima();
123       
124    }
125
126    void Hyppaa(PlatformCharacter hahmo, double nopeus)
127    {
128        hahmo.Jump(nopeus);
129        hyppy.Play();
130    }
131
132    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject coin)
133    {
134        maaliAani.Play();
135        MessageDisplay.Add("Keräsit kolikon!");
136        coin.Destroy();
137    }
138
139    void tunistus()
140    {
141        if (ControllerOne.IsConnected)
142        {
143            Mouse.IsCursorVisible = false;
144            ControllerOne.Listen(Button.B, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
145            ControllerOne.Listen(Button.Back, ButtonState.Pressed,ConfirmExit, "Poistu pelistä");
146            ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, Liikuta, "Pelaaja liikkuu vasemmalle/oikealle");
147            ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
148            ControllerOne.Listen(Button.LeftTrigger, ButtonState.Pressed, ammuAseella, "ammu", pelaaja1);
149            ControllerOne.Listen(Button.Y, ButtonState.Pressed, HeitaKranaatti, "testaa", pelaaja1);
150            ControllerOne.Listen(Button.RightShoulder,ButtonState.Pressed, cheat_koodi,"hyss");
151            ControllerOne.Listen(Button.LeftShoulder, ButtonState.Down, HeitaKranaatti_cheat, "testaa", pelaaja1);
152            ControllerOne.Listen(Button.DPadDown, ButtonState.Down, ammuAseella, "hyss", pelaaja1);
153            ControllerOne.ListenAnalog(AnalogControl.RightStick, 0.1, Tahtaa, "Tähtää aseella");
154        }
155        else
156        {
157            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
158            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
159            Keyboard.Listen(Key.A, ButtonState.Down, LiikutaNappis, "Liikkuu vasemmalle", pelaaja1, -nopeus);
160            Keyboard.Listen(Key.D, ButtonState.Down, LiikutaNappis, "Liikkuu vasemmalle", pelaaja1, nopeus);
161            Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
162            Keyboard.Listen(Key.Space, ButtonState.Pressed, ammuAseella,"ammu", pelaaja1);
163            Keyboard.Listen(Key.V, ButtonState.Pressed, HeitaKranaatti, "testaa", pelaaja1);
164            Keyboard.Listen(Key.CapsLock,ButtonState.Pressed, cheat_koodi,"hyss");
165            Keyboard.Listen(Key.F, ButtonState.Down, HeitaKranaatti_cheat, "testaa", pelaaja1);
166            Keyboard.Listen(Key.Space, ButtonState.Down, ammuAseella, "hyss", pelaaja1);
167            Mouse.ListenMovement(0.1, tahtaa_hiiri, "tähtäää aseella");
168
169        }
170        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
171    }
172    void LiikutaNappis(PlatformCharacter hahmo, double nopeus)
173    {
174        hahmo.Walk(nopeus);
175        //luolima();
176   }
177   void luoalkuvalikko()
178     {
179   Mouse.IsCursorVisible = true;
180
181        MultiSelectWindow alkuvalikko = new MultiSelectWindow("pelin alkuvalikko",
182            "aloita peli", "lopeta peli");
183
184        alkuvalikko.AddItemHandler(0, AloitaPeli);
185        alkuvalikko.AddItemHandler(1, Exit);
186        alkuvalikko.DefaultCancel = 1;
187
188        Add(alkuvalikko);
189    }
190
191   void AloitaPeli()
192   {
193       ClearAll();
194       Gravity = new Vector(0, -1000);
195       saaHeittaa = true;
196
197       LuoKentta();
198       tunistus();
199
200       Camera.Follow(pelaaja1);
201       Camera.ZoomFactor = 1.0;
202       Camera.StayInLevel = true;
203   }
204
205   void ammusOsui(PhysicsObject ammus, PhysicsObject kohde)
206   {
207       ammus.Destroy();
208       if (kohde.Tag.Equals("zombie"))
209       {
210           kohde.Destroy();
211       }
212   }
213   void ammuAseella(PlatformCharacter pelaaja)
214   {
215       PhysicsObject ammus = pelaaja.Weapon.Shoot();
216
217       if (ammus != null)
218       {
219           ammus.Size *= 1;
220           ammus.MaximumLifetime = TimeSpan.FromSeconds(3.0);
221           AddCollisionHandler(ammus, "zombie", ammusOsui);
222       }
223   }
224
225   void luozombie(Vector paikka, double leveys, double korkeus)
226   {
227
228       
229
230       PlatformCharacter zombie = new PlatformCharacter(leveys, korkeus);
231       zombie.Position = paikka;
232       zombie.Image = zombiekuva;
233       Add(zombie);
234       zombie.Tag = "zombie";
235     FollowerBrain satunnaisAivot = new FollowerBrain(pelaaja1);
236
237       zombie.Brain = satunnaisAivot;
238
239
240   }
241//void luolima()
242//   {
243//       PhysicsObject Lima = new PhysicsObject(5.0, 5.0);
244//       Lima.Position = pelaaja1.Position;
245//       Lima.Color = Color.Red;
246//       Lima.LifetimeLeft = TimeSpan.FromSeconds(5);
247//       Lima.CollisionIgnoreGroup = 1;
248//       Lima.Mass = 0.1;
249//       Lima.Y = pelaaja1.Y;
250//       Lima.X = pelaaja1.X;
251//       Add(Lima);
252//
253//
254//   }
255//   void pelkokuva(Vector paikka, double leveys, double korkeus)
256//   {
257//       PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
258//       taso.Position = paikka;
259//       taso.Color = Color.Gray;
260//       taso.IgnoresCollisionResponse = true;
261//       taso.Tag = "pelkokuva";
262//       Add(taso);
263//   }
264//   void luopelkokuva(PhysicsObject pelaaja, PhysicsObject palikka)
265//   {
266//       palikka.Destroy();
267//       GameObject kuva = new GameObject(Level.Height * 1.3, Level.Height);
268//       kuva.Image = pelaajanKuva;
269//       Add(kuva);
270//       Timer.SingleShot(1.0, delegate
271//       {
272//           kuva.Destroy();
273//       });
274//
275//       Timer ajastin = new Timer();
276//       ajastin.Interval = 0.01;
277//       ajastin.Timeout += delegate { kuva.Position = pelaaja1.Position; };
278//       ajastin.Start();
279//
280//
281//   }
282
283   void luoElamalaskuri()
284   {
285       elamalaskuri = new DoubleMeter(10);
286       elamalaskuri.MaxValue = 10;
287       elamalaskuri.LowerLimit += elamaloppui;
288
289       ProgressBar elamapalkki = new ProgressBar(150, 20);
290       elamapalkki.X = Screen.Left + 150;
291       elamapalkki.Y = Screen.Top - 20;
292       elamapalkki.BindTo(elamalaskuri);
293       Add(elamapalkki);
294
295   }
296
297   void elamaloppui()
298   {
299       ClearAll();
300       AloitaPeli();
301   }
302   void damage(PhysicsObject pelaaja, PhysicsObject zombie)
303   {
304       elamalaskuri.Value--;
305   }
306   void health(Vector paikka, double leveys, double korkeus)
307    {
308        health_back = PhysicsObject.CreateStaticObject(leveys, korkeus);
309        health_back.IgnoresCollisionResponse = true;
310        health_back.Position = paikka;
311        health_back.Image = healthback;
312        health_back.Tag = "back";
313        healling.Play();
314        Add(health_back);
315    }
316   void tormaaHelthbackkiin(PhysicsObject hahmo, PhysicsObject health_back)
317   {
318       elamalaskuri.Value+= 10;
319       MessageDisplay.Add("Keräsit healt backin!");
320       health_back.Destroy();
321       Timer.SingleShot(30.0,
322       delegate { kentta.SetTileMethod('h', health); } ); 
323}
324
325   void HeitaKranaatti(PlatformCharacter pelaaja1)
326   {
327       if (saaHeittaa)
328       {
329           Grenade kranu = new Grenade(4.0);
330
331           pelaaja1.Throw(kranu, Angle.FromDegrees(30), 10000);
332           saaHeittaa = false;
333           Timer.SingleShot(10, delegate { saaHeittaa = true; });
334       }
335   }
336
337 void cheat_koodi()
338   {
339       elamalaskuri.Value+= 10;
340       MessageDisplay.Add("Keräsit healt backin!");
341       ; 
342}
343 void HeitaKranaatti_cheat(PlatformCharacter pelaaja1)
344 {
345     if (saaHeittaa)
346     {
347         Grenade kranu = new Grenade(4.0);
348
349         pelaaja1.Throw(kranu, Angle.FromDegrees(30), 10000);
350     }
351 }
352 void Tahtaa(AnalogState tatintila)
353 {
354     pelaaja1.Weapon.Angle = tatintila.StateVector.Angle;
355 }
356 void tahtaa_hiiri(AnalogState hiirenLiike)
357 {
358     Vector suunta = (Mouse.PositionOnWorld - pelaaja1.Weapon.AbsolutePosition).Normalize();
359     pelaaja1.Weapon.Angle = suunta.Angle;
360 }
361 void maali(Vector paikka, double leveys, double korkeus)
362 {
363     PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
364     taso.Position = paikka;
365     taso.Image = maalikuva;
366     taso.Tag = "maali";
367     Add(taso);
368 }
369 void peli_loppu(PhysicsObject pelaaja,PhysicsObject maali)
370 {
371     ClearAll();
372     MultiSelectWindow loppu = new MultiSelectWindow("jee voitit pelin","lopetapeli");
373     loppu.AddItemHandler(0, Exit);
374     Add(loppu);
375
376     
377
378 }
379
380}
Note: See TracBrowser for help on using the repository browser.