source: 2014/30/AarniAR/AdventureOfStarKid/AdventureOfStarKid/AdventureOfStarKid/AdventureOfStarKid.cs @ 5760

Revision 5760, 14.3 KB checked in by hesahave, 5 years ago (diff)

Music + Stages

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9class Vihu : PlatformCharacter
10{
11    private IntMeter elamaLaskuri = new IntMeter(10, 0, 10);
12    public IntMeter ElamaLaskuri { get { return elamaLaskuri; } }
13
14    public Vihu(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17        elamaLaskuri.LowerLimit += delegate { this.Destroy(); };
18    }
19}
20
21
22public class AdventureOfStarKid : PhysicsGame
23{
24    private Image[] ukkelinKavely = LoadImages("Tyyppi1", "Tyyppi2", "Tyyppi3");
25    private Image[] ukkelinSeisominen = LoadImages("Tyyppi1");
26
27
28    int kenttaNro = 1;
29    private Image[] running = LoadImages("running1", "running2");
30    private Image[] standinganimation = LoadImages("shootinganimation");
31    private Image[] shootinganimation = LoadImages("shootinganimation");
32    private Image[] jumpinganimation = LoadImages("jumpinganimation");
33    private Image[] lifelost = LoadImages("LifeLost");
34    private Image[] damage = LoadImages("Damage");
35    private Image OneUP = LoadImage("1UP");
36    private Image Healing = LoadImage("Healing");
37    private Image killLavaKuva = LoadImage("IntaKillLava");
38    const double nopeus = 200;
39    const double hyppyNopeus = 350;
40    const int RUUDUN_KOKO = 40;
41    PlasmaCannon pelaajan1Ase;
42    PlasmaCannon pelaajan2Ase;
43   
44    DoubleMeter health;
45    DoubleMeter health2;
46
47
48    PlatformCharacter pelaaja1;
49    PlatformCharacter pelaaja2;
50    bool invincible = false;
51
52    Image pelaajanKuva = LoadImage("Standinganimation");
53    Image tahtiKuva = LoadImage("stumper(Enemy)");
54
55    SoundEffect maaliAani = LoadSoundEffect("maali");
56
57    public override void Begin()
58    {
59        SmoothTextures = false;
60        MediaPlayer.IsRepeating = true;
61        alku();
62    }
63
64    void AloitaPeli()
65    {
66        ClearAll();
67
68
69        SeuraavaKentta();
70        LisaaNappaimet();
71
72    }
73
74    void LuoKentta(string kenttaTiedostonNimi)
75    {
76        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
77        kentta.SetTileMethod('#', LisaaTaso);
78        kentta.SetTileMethod('*', Lisaastumper);
79        kentta.SetTileMethod('N', LisaaPelaaja);
80        kentta.SetTileMethod('M', LisaaPelaaja2);
81        kentta.SetTileMethod('1', Lisaa1UP);
82        kentta.SetTileMethod('H', LisaaHealing);
83        kentta.SetTileMethod('L', LisaaKillLava);
84        kentta.SetTileMethod('F', LisaaLoppu);
85        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
86        Level.CreateBorders();
87        Level.BackgroundColor = new Color( 150, 150, 150);
88    }
89    void Lisaa1UP(Vector paikka, double leveys, double korkeus)
90    {
91        AddItem(paikka, leveys, korkeus, OneUP, "1UP");
92    }
93    void LisaaHealing(Vector paikka, double leveys, double korkeus)
94    {
95        AddItem(paikka, leveys, korkeus, Healing, "Heal");
96
97    }
98
99    void AddItem(Vector paikka, double leveys, double korkeus, Image Kuva, String tagi)
100    {
101        PhysicsObject Item = new PhysicsObject(leveys, korkeus);
102        Item.Position = paikka;
103        Add(Item);
104        Item.Image = Kuva;
105        Item.Tag = tagi;
106    }
107
108    void LisaaTaso(Vector paikka, double leveys, double korkeus)
109    {
110        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
111        taso.Position = paikka;
112        taso.Color = Color.Green;
113        Add(taso);
114    }
115
116    void LisaaLoppu(Vector paikka, double leveys, double korkeus)
117    {
118        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
119        taso.Position = paikka;
120        taso.Color = Color.Black;
121        taso.Tag = "loppu";
122        Add(taso);
123    }
124
125    void Lisaastumper(Vector paikka, double leveys, double korkeus)
126    {
127        Vihu stumper = new Vihu(leveys - 4, korkeus - 4);
128        stumper.IgnoresCollisionResponse = false;
129
130        stumper.Position = paikka;
131        stumper.Image = tahtiKuva;
132        stumper.Tag = "stumper";
133        Add(stumper);
134        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
135        tasoAivot.Speed = 100;
136        tasoAivot.TriesToJump = false;
137        stumper.CollisionIgnoreGroup = 2;
138        stumper.Brain = tasoAivot;
139
140    }
141    void LisaaKillLava(Vector paikka, double leveys, double korkeus)
142    {
143        PhysicsObject killLava = new PhysicsObject(leveys, korkeus);
144        killLava.IgnoresCollisionResponse = true;
145        killLava.IgnoresPhysicsLogics = true;
146        killLava.Position = paikka;
147        killLava.Image = killLavaKuva;
148        killLava.Tag = "InstaKill";
149        killLava.Position = paikka + new Vector(0, -4);
150        Add(killLava);
151
152    }
153
154    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
155    {
156        pelaaja1 = new PlatformCharacter(leveys * 0.5, korkeus);
157        pelaaja1.Position = paikka;
158        pelaaja1.Mass = 4.0;
159        pelaaja1.Image = pelaajanKuva;
160        AddCollisionHandler(pelaaja1, "stumper", TormaaTahteen);
161        Add(pelaaja1);
162        AddCollisionHandler(pelaaja1, "1UP", tormaaOneUP);
163        AddCollisionHandler(pelaaja1, "Heal", tormaaHealingiin);
164        AddCollisionHandler(pelaaja1, "InstaKill", tormaakillLava);
165        AddCollisionHandler(pelaaja1, "loppu", tormaaLoppu);
166        pelaaja1.AnimWalk = new Animation(running);
167        pelaaja1.AnimIdle = new Animation(shootinganimation);
168        pelaaja1.AnimJump = new Animation(jumpinganimation);
169        pelaaja1.AnimFall = new Animation(jumpinganimation);
170
171        pelaajan1Ase = new PlasmaCannon(1.0, 1.0);
172        pelaajan1Ase.InfiniteAmmo = true;
173        pelaajan1Ase.ProjectileCollision += AmmusOsuu;
174        pelaaja1.Weapon = pelaajan1Ase;
175    }
176
177    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus)
178    {
179        pelaaja2 = new PlatformCharacter(leveys, korkeus);
180        pelaaja2.Position = paikka;
181        pelaaja2.Mass = 4.0;
182        pelaaja2.Image = pelaajanKuva;
183        AddCollisionHandler(pelaaja2, "Diamond", TormaaTahteen);
184        pelaaja2.AnimWalk = new Animation(ukkelinKavely);
185        pelaaja2.AnimWalk.FPS = 9;
186        pelaaja2.AnimIdle = new Animation(ukkelinSeisominen);
187        Add(pelaaja2);
188
189        pelaajan2Ase = new PlasmaCannon(1.0, 1.0);
190        pelaajan2Ase.InfiniteAmmo = true;
191        pelaajan2Ase.ProjectileCollision += AmmusOsuu;
192        pelaaja2.Weapon = pelaajan2Ase;
193
194        AddCollisionHandler(pelaaja2, "stumper", TormaaTahteen);
195        AddCollisionHandler(pelaaja2, "1UP", tormaaOneUP);
196        AddCollisionHandler(pelaaja2, "Heal", tormaaHealingiin);
197        AddCollisionHandler(pelaaja2, "InstaKill", tormaakillLava);
198        AddCollisionHandler(pelaaja2, "loppu", tormaaLoppu);
199    }
200
201    void tormaaLoppu(PhysicsObject pelaaja, PhysicsObject loppu)
202    {
203        kenttaNro++;
204        SeuraavaKentta();
205    }
206
207    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde)
208    {
209        ammus.Destroy();
210
211        if (kohde.Tag == "stumper")
212        {
213            (kohde as Vihu).ElamaLaskuri.Value--;
214        }
215    }
216
217    void LisaaNappaimet()
218    {
219        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
220        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
221
222        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
223        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
224        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
225        Keyboard.Listen(Key.P, ButtonState.Pressed, Ammu, "Ampuu", pelaajan1Ase);
226
227        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
228        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
229        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
230        //Keyboard.Listen(Key.Space, ButtonState.Pressed, HeitaKranaatti, "Pelaaja hyppää", pelaaja2);
231
232        //eyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Ampuu", pelaajan2Ase);
233
234        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
235
236        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
237        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
238        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
239
240        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
241    }
242
243    void HeitaKranaatti(PlatformCharacter pelaaja)
244    {
245        Grenade kranu = new Grenade(4.0);
246        pelaaja.Throw(kranu, Angle.FromDegrees(45), 10000);
247    }
248
249    void Liikuta(PlatformCharacter hahmo, double nopeus)
250    {
251        hahmo.Walk(nopeus);
252    }
253
254    void Hyppaa(PlatformCharacter hahmo, double nopeus)
255    {
256        hahmo.Jump(nopeus);
257    }
258
259    void OtaVahinkoa(PhysicsObject pelaaja, int maara)
260    {
261        if (pelaaja == pelaaja1) health.Value -= maara;
262        if (pelaaja == pelaaja2) health2.Value -= maara;
263    }
264
265    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject stumper)
266    {
267        if (!invincible)
268        {
269            maaliAani.Play();
270            MessageDisplay.Add("Ouch!");
271            OtaVahinkoa(hahmo, 2);
272        }
273        //stumper.Destroy();
274    }
275
276    void Ammu(PlasmaCannon Ase)
277    {
278        PhysicsObject ammus = Ase.Shoot();
279        if (ammus != null)
280        {
281            ammus.IgnoresCollisionResponse = true;
282            pelaaja1.Animation = new Animation(shootinganimation);
283            pelaaja1.Animation.Start();
284        }
285    }
286
287    void LuoPistelaskuri()
288    {
289        health = new DoubleMeter(10);
290        health.MaxValue = 15;
291        health.MinValue = 0;
292        health.LowerLimit += PelaajaHaviaa;
293
294        health.Changed += delegate
295        {
296            Animation anim = new Animation(damage);
297            anim.FPS = 5.0;
298            pelaaja1.PlayAnimation(anim);
299            invincible = true;
300            Timer.SingleShot(1, delegate { invincible = false; });
301        };
302
303        ProgressBar healthMeter = new ProgressBar(150, 20);
304        healthMeter.X = Screen.Left + 150;
305        healthMeter.Y = Screen.Top - 100;
306        healthMeter.BindTo(health);
307        Add(healthMeter);
308
309        healthMeter.Angle = Angle.RightAngle;
310        healthMeter.Color = Color.Transparent;
311        healthMeter.BarColor = Color.Red;
312        healthMeter.BorderColor = Color.Black;
313
314
315
316    }
317
318    void LuoPistelaskuri2()
319    {
320        health2 = new DoubleMeter(10);
321        health2.MaxValue = 15;
322        health2.MinValue = 0;
323        health2.LowerLimit += PelaajaHaviaa;
324
325        health2.Changed += delegate
326        {
327            Animation anim = new Animation(damage);
328            anim.FPS = 6.0;
329            pelaaja2.PlayAnimation(anim);
330            invincible = true;
331            Timer.SingleShot(1, delegate { invincible = false; });
332        };
333
334        ProgressBar healthMeter = new ProgressBar(150, 20);
335        healthMeter.X = Screen.Right - 150;
336        healthMeter.Y = Screen.Top - 100;
337        healthMeter.BindTo(health2);
338        Add(healthMeter);
339
340        healthMeter.Angle = Angle.RightAngle;
341        healthMeter.Color = Color.Transparent;
342        healthMeter.BarColor = Color.Red;
343        healthMeter.BorderColor = Color.Black;
344    }
345
346    void PelaajaHaviaa()
347    {
348        MessageDisplay.Add("Life Lost...");
349        pelaaja1.Destroy();
350        //pelaaja2.Destroy();
351       
352        GameObject kuoli = new GameObject(pelaaja1.Width, pelaaja1.Height);
353        kuoli.Image = lifelost[0];
354        kuoli.Position = pelaaja1.Position;
355        Add(kuoli);
356
357        //GameObject kuoli2 = new GameObject(pelaaja2.Width, pelaaja2.Height);
358        //kuoli2.Image = lifelost[0];
359        //kuoli2.Position = pelaaja2.Position;
360        //Add(kuoli2);
361
362        //Timer.SingleShot(2, kuoli.Destroy);
363        //Timer.SingleShot(2, kuoli2.Destroy);
364       
365        Timer.SingleShot(5, AloitaPeli);
366    }
367    void tormaaOneUP(PhysicsObject pelaaja, PhysicsObject OneUP)
368    {
369        if (pelaaja == pelaaja1)
370            health.Value = health.MaxValue;
371        if (pelaaja == pelaaja2)
372            health2.Value = health2.MaxValue;
373        OneUP.Destroy();
374    }
375    void tormaaHealingiin(PhysicsObject pelaaja, PhysicsObject Healing)
376    {
377        if (pelaaja == pelaaja1)
378            health.Value += 3;
379        if (pelaaja == pelaaja2)
380            health2.Value = 3;
381        Healing.Destroy();
382
383    }
384
385
386    void SeuraavaKentta()
387    {
388        ClearAll();
389        Gravity = new Vector(0, -1000);
390
391        if (kenttaNro == 1)
392        {
393            LuoKentta("kentta1");
394            MediaPlayer.Play("brinstar");
395            MessageDisplay.Add("Stage 1, The Beginning");
396        }
397        else if (kenttaNro == 2)
398        {
399            LuoKentta("kentta2");
400            MediaPlayer.Play("Stage 2");
401            MessageDisplay.Add("Stage 2, Lava Lake");
402        }
403        else if (kenttaNro == 3)
404        {
405            LuoKentta("kentta3");
406            MediaPlayer.Play("Stage 3");
407            MessageDisplay.Add("Stage 3, Getting Close");
408        }
409        else if (kenttaNro == 4)
410        {
411            LuoKentta("kentta4");
412            MediaPlayer.Play("Stage 4");
413            MessageDisplay.Add("Stage 4, The Final Run");
414        }
415        else if (kenttaNro > 4)
416        {
417            Exit();
418        }
419       
420
421        LisaaNappaimet();
422        LuoPistelaskuri();
423        LuoPistelaskuri2();
424
425        Camera.Follow(pelaaja1);
426        Camera.ZoomFactor = 1.2;
427        Camera.StayInLevel = true;
428    }
429
430    void alku()
431    {
432        MultiSelectWindow alkuValikko = new MultiSelectWindow("AdventureOfTheStarKid",
433"Aloita peli", "Lopeta");
434        Add(alkuValikko);
435        alkuValikko.AddItemHandler(0, AloitaPeli);
436        MediaPlayer.Play("title");
437        alkuValikko.AddItemHandler(1, Exit);
438        alkuValikko.DefaultCancel = 3;
439    }
440    void tormaakillLava(PhysicsObject pelaaja, PhysicsObject killLava)
441    {
442        if (pelaaja == pelaaja1)
443            health.Value -= 15;
444        if (pelaaja == pelaaja2)
445            health2.Value -= 15;
446    }
447}
Note: See TracBrowser for help on using the repository browser.