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

Revision 5401, 10.9 KB checked in by arjuhoyl, 5 years ago (diff)

varmuuskopio

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