source: 2013/30/TapaniS/Cat of Darkness/Cat of Darkness/Cat of Darkness/Cat_of_Darkness.cs @ 4741

Revision 4741, 17.6 KB checked in by tasalmik, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Cat_of_Darkness : PhysicsGame
10{
11    private Animation MiukkunLiike;
12    private Animation MiukkunLepo;
13    private Animation Miukkunhyppy;
14    private Animation RottaIsku;
15    private Animation RottaLiikkuu;
16    private Animation MiukkunIsku;
17    private Animation JattiRottaIsku;
18    private Animation JattiRottaLepo;
19    private Animation JattiRottaLiikkuu;
20    private Animation MiukkunPisto;
21    private Animation ZeppeliniFly;
22    private Animation MikkiLiike;
23    private Animation MikkiIsku;
24    private Animation MikkiLepo;
25    private Animation MiukkuPuukko;
26    private Animation JuusLiikkuu;
27    private Animation JuusIskee;
28
29    Image taustaKuva = LoadImage("Kenttä 1");
30    Image taustaKuva2 = LoadImage("Map 2");
31    Image taustaKuva3 = LoadImage("JUUUSKENTTÄ");
32    Image JuusTaika = LoadImage("Spark");
33
34    Image[] RottaKuvat = LoadImages("Rotta", "Rotta1");
35    Image[] JuusKuvat = LoadImages("juus", "isku juus");
36    DoubleMeter elamaLaskuri;
37    DoubleMeter bossiLaskuri;
38    DoubleMeter MikkiLaskuri;
39    DoubleMeter PaaBossiLaskuri;
40
41    PlatformCharacter miukku;
42    PlatformCharacter Jattirotta;
43    PlatformCharacter MikkiRotta;
44    PlatformCharacter juus;
45    GameObject zeppelini;
46    Timer ajastin;
47    int kenttanumero = 1;
48
49    bool JuusSaaAmpua = true;
50
51    public override void Begin()
52    {
53        MiukkunLiike = LoadAnimation("MiukkunLiike");
54        MiukkunLepo = LoadAnimation("MiukkunLepo");
55        Miukkunhyppy = LoadAnimation("MiukkunHyppy");
56        MiukkunPisto = LoadAnimation("MiukkunPisto");
57        RottaIsku = new Animation(RottaKuvat);
58        RottaLiikkuu = LoadAnimation("RottaLiikkuu");
59        MiukkunIsku = LoadAnimation("MiukkunIsku");
60        JattiRottaIsku = LoadAnimation("JattiRottaIsku");
61        JattiRottaLepo = LoadAnimation("JattiRottaLepo");
62        JattiRottaLiikkuu = LoadAnimation("JattiRottaLiikkuu");
63        JattiRottaIsku.FPS = 3;
64        ZeppeliniFly = LoadAnimation("Zeppelini");
65        MikkiLiike = LoadAnimation("MikkiLiike");
66        MikkiIsku = LoadAnimation("MikkiIsku");
67        MikkiLepo = LoadAnimation("MikkiLepo");
68        MiukkuPuukko = LoadAnimation("MiukkuPuukko");
69        JuusLiikkuu = LoadAnimation("JuusLiikkuu");
70        JuusLiikkuu.FPS = 3;
71        JuusIskee = new Animation(JuusKuvat);
72        JuusIskee.FPS = 3;
73
74        AlkuValikko();
75    }
76
77    void SeuraavaKentta()
78    {
79        kenttanumero++;
80        AlotaPeli();
81    }
82
83   void AlotaPeli()
84   {
85        ClearAll();
86        MediaPlayer.Play("taustamusiikki");
87        MediaPlayer.Volume = 0.2;
88
89        if (kenttanumero == 1)
90        {
91            Level.Background.Image = taustaKuva;
92
93            PhysicsObject kirjahylly = PhysicsObject.CreateStaticObject(130.0, 70.0);
94            Add(kirjahylly);
95            kirjahylly.Y = -190;
96            kirjahylly.X = 437;
97            kirjahylly.Color = Color.Transparent;
98
99
100            PhysicsObject palkki = PhysicsObject.CreateStaticObject(1000.0, 5.0);
101            palkki.Shape = Shape.Rectangle;
102            palkki.Y = -257;
103            Add(palkki);
104            palkki.Color = Color.Transparent;
105
106            PhysicsObject tuoli = PhysicsObject.CreateStaticObject(71.0, 70);
107            tuoli.Shape = Shape.Rectangle;
108            tuoli.Y = -210;
109            tuoli.X = -70;
110            Add(tuoli);
111            tuoli.Color = Color.Transparent;
112
113            ajastin = new Timer();
114            ajastin.Interval = 1;
115            ajastin.Timeout += LuoRotta;
116            ajastin.Start();
117
118            Timer.SingleShot(20, LuoJattiRotta);
119        }
120        if (kenttanumero == 2)
121        {
122            Level.Background.Image = taustaKuva2;
123
124            PhysicsObject taso = PhysicsObject.CreateStaticObject(1000.0, 5.0);
125            taso.Y = -232;
126            Add(taso);
127            taso.Color = Color.Transparent;
128
129            PhysicsObject taso1 = PhysicsObject.CreateStaticObject(185, 50);
130            Add(taso1);
131            taso1.Color = Color.Transparent;
132            taso1.Y = -197;
133            taso1.X = -410;
134
135            PhysicsObject taso2 = PhysicsObject.CreateStaticObject(188, 50);
136            taso2.Y = -197;
137            taso2.X = 29;
138            Add(taso2);
139            taso2.Color = Color.Transparent;
140
141            //PhysicsObject zeppelinitaso1 = PhysicsObject.CreateStaticObject(1000.0, 5.0);
142            //Add(zeppelinitaso1);
143            //zeppelinitaso1.Y = 200;
144            //zeppelinitaso1.Color = Color.Black;
145
146            zeppelini = new GameObject(110, 50);
147            zeppelini.Image = LoadImage("Zeppeline");
148            zeppelini.Y = 236;
149            zeppelini.Oscillate(new Vector(1, 0), 330, 0.06);
150            //zeppelini.IgnoresPhysicsLogics = true;
151           
152            Add(zeppelini);
153
154            PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
155            tasoAivot.Speed = 100;
156            //zeppelini.Brain = tasoAivot;
157           
158            zeppelini.Animation = ZeppeliniFly;
159
160            ajastin = new Timer();
161            ajastin.Interval = 2.7;
162            ajastin.Timeout += LuoRotta;
163            ajastin.Start();
164            Timer.SingleShot(30, LuoMikkiRotta);
165
166        }
167        if (kenttanumero == 3)
168        {
169            Level.Background.Image = taustaKuva3;
170
171            LuoPaaBossi();
172
173            PhysicsObject pohja = PhysicsObject.CreateStaticObject(1000, 50);
174            pohja.Color = Color.Transparent;
175            Add(pohja);
176            pohja.Y = -300;
177
178
179        }
180
181        Level.Background.FitToLevel();
182        Camera.ZoomToLevel();
183
184        PhysicsObject oikeareuna = PhysicsObject.CreateStaticObject(10.0, 800.0);
185        oikeareuna.Shape = Shape.Rectangle;
186        Add(oikeareuna);
187        oikeareuna.Color = Color.Black;
188        oikeareuna.X = 500;
189
190        PhysicsObject vasenreuna = PhysicsObject.CreateStaticObject(10.0, 800.0);
191        vasenreuna.Shape = Shape.Rectangle;
192        Add(vasenreuna);
193        vasenreuna.Color = Color.Black;
194        vasenreuna.X = -500;
195
196        Gravity = new Vector(0.0, -755.0);
197
198        miukku = new PlatformCharacter ( 100.0, 100.0);
199        miukku.Image = LoadImage("Miukkuli");
200        miukku.Tag = "miukku";
201        Add (miukku);
202        LiikutaMiukkua(miukku);
203        miukku.AnimWalk = MiukkunLiike;
204        miukku.AnimWalk.FPS = 6;
205        miukku.AnimIdle = MiukkunLepo;
206        miukku.AnimJump = Miukkunhyppy;
207        LuoElamaLaskuri();
208        AddCollisionHandler(miukku, "rotta", TormaaRottaan);
209        AddCollisionHandler(miukku, "JattiRotta", TormaaJattiRottaan);
210        AddCollisionHandler(miukku, "MikkiRotta", TormaaMikkiRottaan);
211        AddCollisionHandler(miukku, "Juus", TormaaPaaBossiin);
212
213
214       
215       
216        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
217        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
218    }
219
220    void LiikutaMiukkua(PlatformCharacter miukku)
221    {
222     
223        Keyboard.Listen( Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", miukku, -150.0 );
224        Keyboard.Listen( Key.Right, ButtonState.Down, Liikuta, "Liikkuu oikealle", miukku, 150.0 );
225        Keyboard.Listen( Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", miukku, 750.0 );
226        Keyboard.Listen(Key.A, ButtonState.Pressed, Iske, "Pelaaja iskee", miukku);
227        Keyboard.Listen(Key.S, ButtonState.Pressed, Pisto, "Pelaaja pistaa", miukku);
228        Keyboard.Listen(Key.D, ButtonState.Pressed, Puukko, "Pelaaja puukottaa", miukku);
229    }
230    void Liikuta(PlatformCharacter miukku, double nopeus)
231
232    {
233        miukku.Walk(nopeus);
234
235    }
236
237    void Iske(PlatformCharacter miukku)
238    {
239        PhysicsObject osuma = PhysicsObject.CreateStaticObject(30.0, 60.0);
240        osuma.Position = miukku.Position + miukku.FacingDirection.GetVector() * 70;
241        osuma.IgnoresCollisionResponse = false;
242        osuma.Color = Color.Transparent;
243
244        Add(osuma);
245        MiukkunIsku.FPS = 6;
246        miukku.PlayAnimation(MiukkunIsku);
247        Timer.SingleShot(0.1, osuma.Destroy);
248        AddCollisionHandler(osuma, "rotta", OsuRottaan);
249        AddCollisionHandler(osuma, "JattiRotta", OsuJattiRottaan);
250        AddCollisionHandler(osuma, "MikkiRotta", OsuMikkiRottaan);
251        AddCollisionHandler(osuma, "PaaBossi", OsuPaaBossiin);
252
253    }
254
255    void Hyppaa( PlatformCharacter miukku, double nopeus )
256    {
257        miukku.Jump(nopeus);
258    }
259    void Pisto(PlatformCharacter miukku)
260    {
261        PhysicsObject osuma = PhysicsObject.CreateStaticObject(60.0, 30.0);
262        osuma.Position = miukku.Position + miukku.FacingDirection.GetVector() * 70;
263        osuma.IgnoresCollisionResponse = false;
264        osuma.Color = Color.Transparent;
265
266        Add(osuma);
267
268       
269        MiukkunPisto.FPS = 6;
270        miukku.PlayAnimation(MiukkunPisto);
271        Timer.SingleShot(0.1, osuma.Destroy);
272        AddCollisionHandler(osuma, "rotta", OsuRottaan);
273        AddCollisionHandler(osuma, "JattiRotta", OsuJattiRottaan);
274        AddCollisionHandler(osuma, "MikkiRotta", OsuMikkiRottaan);
275        AddCollisionHandler(osuma, "PaaBossi", OsuPaaBossiin);
276    }
277
278
279    void Puukko(PlatformCharacter miukku)
280    {
281        PhysicsObject osuma = PhysicsObject.CreateStaticObject(50.0, 20.0);
282        osuma.Position = miukku.Position + new Vector(0, 60);
283        osuma.IgnoresCollisionResponse = false;
284        osuma.Color = Color.Transparent;
285
286        Add(osuma);
287
288
289        MiukkuPuukko.FPS = 5;
290        miukku.PlayAnimation(MiukkuPuukko);
291        Timer.SingleShot(0.1, osuma.Destroy);
292        AddCollisionHandler(osuma, "rotta", OsuRottaan);
293        AddCollisionHandler(osuma, "JattiRotta", OsuJattiRottaan);
294        AddCollisionHandler(osuma, "MikkiRotta", OsuMikkiRottaan);
295        AddCollisionHandler(osuma, "PaaBossi", OsuPaaBossiin);
296
297
298    }
299
300
301    void OsuRottaan(PhysicsObject osuma, PhysicsObject rotta)
302    {
303        rotta.Destroy();
304    }
305
306    void LuoRotta()
307    {
308        PlatformCharacter rotta = new PlatformCharacter(70.0, 70.0);
309        rotta.AnimIdle = RottaIsku;
310        rotta.AnimIdle.FPS = 6;
311        rotta.AnimWalk = RottaLiikkuu;
312        rotta.AnimWalk.FPS = 6;
313        Add(rotta);
314        rotta.Tag = "rotta";
315
316        if (kenttanumero == 1)
317        {
318            rotta.Y = -250;
319        }
320        if (kenttanumero == 2)
321        {
322            rotta.Position = zeppelini.Position;
323        }
324
325        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
326        tasoAivot.Speed = 100;
327
328        rotta.Brain = tasoAivot;
329
330        tasoAivot.FallsOffPlatforms = true;
331        tasoAivot.JumpSpeed = 300;
332        tasoAivot.TriesToJump = true;
333
334    }
335
336    void LuoElamaLaskuri()
337    {
338        elamaLaskuri = new DoubleMeter(15);
339        elamaLaskuri.MaxValue = 10;
340        elamaLaskuri.LowerLimit += ElamaLoppui;
341
342        ProgressBar elamaPalkki = new ProgressBar(150, 20);
343        elamaPalkki.X = Screen.Left + 150;
344        elamaPalkki.Y = Screen.Top - 20;
345        elamaPalkki.BindTo(elamaLaskuri);
346        Add(elamaPalkki);
347    }
348
349    void ElamaLoppui()
350    {
351        MessageDisplay.Add("Elämät loppuivat, voi voi.");
352        miukku.Destroy();
353        Timer.SingleShot(2,AlkuValikko);
354    }
355
356    void TormaaRottaan(PhysicsObject miukku, PhysicsObject rotta )
357    {
358        elamaLaskuri.Value--;
359    }
360
361    void AlkuValikko()
362    {
363        ClearAll();
364        MultiSelectWindow alkuValikko = new MultiSelectWindow("Pelin alkuvalikko", "Aloita peli", "Parhaat pisteet", "Lopeta");
365        Add(alkuValikko);
366        alkuValikko.AddItemHandler(0, AlotaPeli);
367        //alkuValikko.AddItemHandler(1, ParhaatPisteet);
368        alkuValikko.AddItemHandler(2, Exit);
369
370
371    }
372    void LuoJattiRotta()
373    {
374        ajastin.Stop();
375
376        Jattirotta = new PlatformCharacter(170.0, 170.0);
377        Jattirotta.AnimIdle = JattiRottaLepo;
378        Jattirotta.AnimIdle.FPS = 6;
379        Jattirotta.AnimWalk = JattiRottaLiikkuu;
380        Jattirotta.AnimWalk.FPS = 6;
381        Add(Jattirotta);
382        Jattirotta.Tag = "JattiRotta";
383        Jattirotta.Y = -200;
384        Jattirotta.X = 300;
385
386        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
387        tasoAivot.Speed = 80;
388
389        Jattirotta.Brain = tasoAivot;
390
391        tasoAivot.FallsOffPlatforms = true;
392        tasoAivot.JumpSpeed = 200;
393        tasoAivot.TriesToJump = true;
394        LuoBossiLaskuri();
395    }
396    void TormaaJattiRottaan(PhysicsObject miukku, PhysicsObject JattiRotta)
397    {
398        elamaLaskuri.Value-=2;
399        Jattirotta.PlayAnimation(JattiRottaIsku);
400
401    }
402    void LuoBossiLaskuri()
403    {
404        bossiLaskuri = new DoubleMeter(10);
405        bossiLaskuri.MaxValue = 10;
406        bossiLaskuri.LowerLimit += BossinElamaLoppui;
407
408        ProgressBar bossiPalkki = new ProgressBar(150, 20);
409        bossiPalkki.X = Screen.Right - 150;
410        bossiPalkki.Y = Screen.Top - 20;
411        bossiPalkki.BindTo(bossiLaskuri);
412        Add(bossiPalkki);
413    }
414    void BossinElamaLoppui()
415    {
416        MessageDisplay.Add("JättiRotta piesty! Siirryt seuraavaan leveliin.");
417        Jattirotta.Destroy();
418        Timer.SingleShot(2, SeuraavaKentta);
419    }
420
421    void OsuJattiRottaan(PhysicsObject osuma, PhysicsObject jattirotta)
422    {
423        bossiLaskuri.Value--;
424    }
425
426    void LuoMikkiRotta()
427    {
428        MikkiRotta = new PlatformCharacter(70.0, 70.0);
429        MikkiRotta.AnimIdle = MikkiLepo;
430        MikkiRotta.AnimIdle.FPS = 6;
431        MikkiRotta.AnimWalk = MikkiLiike;
432        MikkiRotta.AnimWalk.FPS = 6;
433        Add(MikkiRotta);
434        MikkiRotta.Tag = "MikkiRotta";
435        MikkiRotta.Y = -200;
436        MikkiRotta.X = 300;
437
438        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
439        tasoAivot.Speed = 170;
440
441        MikkiRotta.Brain = tasoAivot;
442
443        tasoAivot.FallsOffPlatforms = true;
444        tasoAivot.JumpSpeed = 500;
445        tasoAivot.TriesToJump = true;
446        LuoMikkiLaskuri();
447
448    }
449
450    void TormaaMikkiRottaan(PhysicsObject miukku, PhysicsObject MikkiRotta)
451    {
452        elamaLaskuri.Value -= 2;
453        ((PlatformCharacter)MikkiRotta).PlayAnimation(MikkiIsku);
454    }
455
456    void LuoMikkiLaskuri()
457    {
458        MikkiLaskuri = new DoubleMeter(10);
459        MikkiLaskuri.MaxValue = 10;
460        MikkiLaskuri.LowerLimit += MikkiRotanElamaLoppui;
461
462        ProgressBar MikkiPalkki = new ProgressBar(150, 20);
463        MikkiPalkki.X = Screen.Right - 150;
464        MikkiPalkki.Y = Screen.Top - 20;
465        MikkiPalkki.BindTo(MikkiLaskuri);
466        Add(MikkiPalkki);
467    }
468    void MikkiRotanElamaLoppui()
469    {
470        MessageDisplay.Add("MikkiRotta piesty! Siirryt Bossille!");
471        MikkiRotta.Destroy();
472        Timer.SingleShot(2, SeuraavaKentta);
473    }
474
475    void OsuMikkiRottaan(PhysicsObject osuma, PhysicsObject MikkiRotta)
476    {
477        MikkiLaskuri.Value--;
478    }
479
480 
481    void LuoPaaBossi()
482    {
483        juus = new PlatformCharacter(270, 270);
484        juus.Image = LoadImage("Juus");
485        juus.AnimWalk = JuusLiikkuu;
486        juus.PlayAnimation(JuusIskee);
487        Add(juus);
488        LuoPaaBossiLaskuri();
489        juus.Y = 0;
490        juus.X = 310;
491        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
492        tasoAivot.Speed = 15;
493        juus.Weapon = new AssaultRifle(50, 50);
494        juus.Weapon.IsVisible = false;
495        juus.Weapon.Ammo.Value = 10000000;
496        juus.Weapon.AttackSound = null;
497        juus.Weapon.ProjectileCollision = AmmusOsui;
498        juus.FacingDirection = Direction.Left;
499        juus.Tag = "PaaBossi";
500        //juus.Brain = tasoAivot;
501        juus.Weapon.Y = -70;
502
503        Timer ajastin = new Timer();
504        ajastin.Interval = 1.5;
505        ajastin.Timeout += JuusAmpuu;
506        ajastin.Start();
507
508        Timer ajastin2 = new Timer();
509        ajastin2.Interval = 5;
510        ajastin2.Timeout += delegate { JuusSaaAmpua = !JuusSaaAmpua; }; ;
511        ajastin2.Start();
512
513    }
514
515    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
516    {
517        ammus.Destroy();
518
519        if (kohde.Tag == "miukku")
520        {
521            elamaLaskuri.Value -= 3;
522        }
523    }
524
525    void JuusAmpuu()
526    {
527        if (juus.IsDestroyed) return;
528
529        if (JuusSaaAmpua)
530        {
531            juus.PlayAnimation(JuusIskee);
532            PhysicsObject ammus = juus.Weapon.Shoot();
533            if (ammus != null)
534            {
535                ammus.Velocity *= 0.5;
536                ammus.Size *= 7;
537                ammus.Image = JuusTaika;
538                ammus.MaximumLifetime = TimeSpan.FromSeconds(2.0);
539            }
540        }
541
542    }
543
544
545     void TormaaPaaBossiin(PhysicsObject miukku, PhysicsObject JattiRotta)
546    {
547        elamaLaskuri.Value-=2;
548        //Jattirotta.PlayAnimation(JattiRottaIsku);
549
550    }
551
552    void OsuPaaBossiin(PhysicsObject osuma, PhysicsObject PaaBossi)
553    {
554        PaaBossiLaskuri.Value--; 
555    }
556
557    void LuoPaaBossiLaskuri()
558    {
559        PaaBossiLaskuri = new DoubleMeter(30);
560        PaaBossiLaskuri.MaxValue = 30;
561        PaaBossiLaskuri.LowerLimit += PaaBossinElamaLoppui;
562
563        ProgressBar PaaBossiPalkki = new ProgressBar(150, 20);
564        PaaBossiPalkki.X = Screen.Right - 150;
565        PaaBossiPalkki.Y = Screen.Top - 20;
566        PaaBossiPalkki.BindTo(PaaBossiLaskuri);
567        Add(PaaBossiPalkki);
568    }
569
570    void PaaBossinElamaLoppui()
571    {
572        MessageDisplay.Add("Pääbossi piesty! Onneksi olkoon! Läpäisit pelin ");
573        juus.Destroy();
574        Timer.SingleShot(4, AlkuValikko);
575    }
576
577}
Note: See TracBrowser for help on using the repository browser.