source: 2012/24/AkiR/Fight the Rambo/Fight the Rambo/Fight the Rambo/Peli.cs @ 3013

Revision 3013, 16.7 KB checked in by akosrahi, 9 years ago (diff)

Tein kotona vähän lisäyksiä tänäänkin

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10public class Peli : PhysicsGame
11{
12    const double nopeus = 300;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 30;
15    PlatformCharacter pelaaja1;
16    GameObject pelaajanpaikka;
17    PlatformCharacter vihollinen;
18    PlatformCharacter Maali;
19    PlatformCharacter Piikkilanka;
20    List<Label> valikonKohdat;
21    IntMeter ammusLaskuri;
22    Image tekstinkuva = LoadImage("TEKSTI");
23    Image piikkilangankuva = LoadImage("spikewire");
24    Image pelaajanKuva = LoadImage("rambo2");
25    Image vihollisenkuva = LoadImage("Nuhasotilas");
26    Image maalinkuva = LoadImage("goal");
27    Image LisaaPelaajanKentallekuvan = LoadImage("sponer");
28    Image maankuva = LoadImage("ground");
29    Image aidankuva = LoadImage("fence");
30    Image KullanKuva = LoadImage("Kulta");
31    Image AmmuksenKuva = LoadImage("Ammus");
32   
33
34
35    Image paikallaanVasemmalle = LoadImage("rambo2");
36    Image paikallaanOikealle;
37    Image[] kavelyVasemmalle = LoadImages("rambo2");
38    Image[] kavelyOikealle;
39
40    Image VihollinenpaikallaanVasemmalle = LoadImage("Nuhasotilas");
41    Image VihollinenpaikallaanOikealle;
42    Image[] VihollinenKavelyVasemmalle = LoadImages("Nuhasotilas");
43    Image[] VihollinenKavelyOikealle;
44
45    IntMeter pisteLaskuri;
46
47    DoubleMeter voimaMittari;
48
49    int kenttaNro = 1;
50
51    public override void Begin()
52    {
53
54        ClearAll();
55        Valikko();
56
57
58        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
59        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
60
61        VihollinenpaikallaanOikealle = Image.Mirror(VihollinenpaikallaanVasemmalle);
62        VihollinenKavelyOikealle = Image.Mirror(VihollinenKavelyVasemmalle);
63
64
65
66
67
68
69    }
70
71    void SeuraavaKentta(int kentanNro)
72    {
73        ClearAll();
74        Gravity = new Vector(0, -1000);
75        MediaPlayer.Play("GameStarts");
76       
77        LuoLaskuri();
78        LisaavoimaMittari();
79        if (kentanNro == 1) luoKentta1();
80        else if (kentanNro == 2) LuoKentta2();
81        else if (kentanNro == 3) LuoKentta3();
82        else if (kentanNro > 3) LuoKentta4();
83        else if (kentanNro > 4) Valikko();
84        lisaaNappaimet();
85        LuoAmmusLaskuri();
86       
87        Camera.Follow(pelaaja1);
88        Camera.ZoomFactor = 2.0;
89        Camera.StayInLevel = true;
90
91
92    }
93
94    void luoKentta1()
95    {
96        lisaaPelaaja(15);
97
98        TileMap kentta = TileMap.FromLevelAsset("kentta1");
99        kentta['G'] = lisaaMaali;
100        kentta['E'] = lisaaVihollinen;
101        kentta['#'] = lisaaTaso;
102        kentta['N'] = lisaapelaajanPaikka;
103        kentta['S'] = LisaaPiikkilanka;
104        kentta['M'] = Lisaamaa;
105        //kentta['F'] = LisaaAita;
106        kentta['A'] = LisaaAmmusPaketti;
107        kentta['T'] = LisaaKulta;
108        kentta['X'] = Lisaaseina;
109        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
110
111        pelaaja1.Position = pelaajanpaikka.Position;
112
113        Level.CreateBorders();
114        Level.Background.CreateGradient(Color.Brown, Color.Blue);
115    }
116    void LuoKentta2()
117    {
118        lisaaPelaaja(15);
119
120        TileMap kentta = TileMap.FromFile("TextFile2.txt");
121        kentta['G'] = lisaaMaali;
122        kentta['E'] = lisaaVihollinen;
123        kentta['#'] = Lisaamaa;
124        kentta['N'] = lisaapelaajanPaikka;
125        kentta['S'] = LisaaPiikkilanka;
126        kentta['F'] = LisaaAita;
127        kentta['A'] = LisaaAmmusPaketti;
128        kentta['X'] = Lisaaseina;
129        kentta['T'] = LisaaKulta;
130        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
131
132        pelaaja1.Position = pelaajanpaikka.Position;
133
134        Level.CreateBorders();
135        Level.Background.CreateGradient(Color.Brown, Color.Blue);
136    }
137
138
139    void LuoKentta3()
140    {
141        lisaaPelaaja(15);
142
143        TileMap kentta = TileMap.FromFile("TextFile3.txt");
144        kentta['G'] = lisaaMaali;
145        kentta['E'] = lisaaVihollinen;
146        kentta['#'] = Lisaamaa;
147        kentta['N'] = lisaapelaajanPaikka;
148        kentta['S'] = LisaaPiikkilanka;
149        kentta['F'] = LisaaAita;
150        kentta['A'] = LisaaAmmusPaketti;
151        kentta['X'] = Lisaaseina;
152        kentta['T'] = LisaaKulta;
153        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
154
155        pelaaja1.Position = pelaajanpaikka.Position;
156
157        Level.CreateBorders();
158        Level.Background.CreateGradient(Color.Brown, Color.Blue);
159    }
160    void LuoKentta4()
161    {
162        lisaaPelaaja(15);
163
164        TileMap kentta = TileMap.FromFile("TextFile1.txt");
165        kentta['G'] = lisaaMaali;
166        kentta['E'] = lisaaVihollinen;
167        kentta['#'] = Lisaamaa;
168        kentta['N'] = lisaapelaajanPaikka;
169        kentta['S'] = LisaaPiikkilanka;
170        kentta['F'] = LisaaAita;
171        kentta['A'] = LisaaAmmusPaketti;
172        kentta['X'] = Lisaaseina;
173        kentta['T'] = LisaaKulta;
174        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
175
176        pelaaja1.Position = pelaajanpaikka.Position;
177
178        Level.CreateBorders();
179        Level.Background.CreateGradient(Color.Blue, Color.Black);
180    }
181    GameObject lisaapelaajanPaikka()
182    {
183        pelaajanpaikka = new GameObject(100, 150);
184        pelaajanpaikka.Image = LisaaPelaajanKentallekuvan;
185        return pelaajanpaikka;
186    }
187
188    PhysicsObject lisaaTaso()
189    {
190        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
191        taso.Color = Color.Black;
192        return taso;
193    }
194
195    PlatformCharacter lisaaPelaaja(int ammukset)
196    {
197        pelaaja1 = new PlatformCharacter(30, 60);
198        pelaaja1.Mass = 8.00;
199        pelaaja1.Image = pelaajanKuva;
200
201        pelaaja1.Weapon = new AssaultRifle(50, 20);
202        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
203        pelaaja1.Weapon.Ammo.Value = ammukset;
204        pelaaja1.Weapon.Y = -2;
205        pelaaja1.Weapon.X = 2.3;
206
207        pelaaja1.RightIdleAnimation = new Animation(paikallaanVasemmalle);
208        pelaaja1.LeftIdleAnimation = new Animation(paikallaanOikealle);
209        pelaaja1.RightWalkingAnimation = new Animation(kavelyVasemmalle);
210        pelaaja1.LeftWalkingAnimation = new Animation(kavelyOikealle);
211        Add(pelaaja1, 1);
212        AddCollisionHandler(pelaaja1, "vihollinen", CollisionHandler.AddMeterValue(voimaMittari, -10));
213        AddCollisionHandler(pelaaja1, "Ansa", CollisionHandler.AddMeterValue(voimaMittari, -2));
214        Vector oikea = new Vector(10000, 50);
215        Vector vaara = new Vector(1000, 500);
216        AddCollisionHandler(pelaaja1, "vihollinen", CollisionHandler.HitTarget(oikea));
217        AddCollisionHandler(pelaaja1, "Ansa", CollisionHandler.HitTarget(vaara));
218       
219        return pelaaja1;
220    }
221
222    void lisaaNappaimet()
223    {
224        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
225        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu pelistä");
226
227        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
228        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
229        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
230        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
231        Keyboard.Listen(Key.W, ButtonState.Down, TahtaaYlos, "Tähtää ylös rynnäkkökiväärillä");
232        Keyboard.Listen(Key.S, ButtonState.Down, TahtaaAlas, "Tähtää alas rynnäkkökiväärillä");
233    }
234
235    void liikuta(PlatformCharacter hahmo, double nopeus)
236    {
237        hahmo.Walk(nopeus);
238    }
239
240    void hyppaa(PlatformCharacter hahmo, double nopeus)
241    {
242        hahmo.Jump(1000.0);
243    }
244
245
246
247    void AmmuAseella()
248    {
249        PhysicsObject Ammus = pelaaja1.Weapon.Shoot();
250        if (Ammus != null)
251        {
252            Ammus.Size *= 1;
253            Ammus.IgnoresGravity = true;
254            Ammus.MaximumLifetime = TimeSpan.FromSeconds(4.1);
255            AddCollisionHandler(Ammus, KasitteleVihollinenKuoli);
256        }
257    }
258    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
259    {
260
261        Explosion rajahdys = new Explosion(50);
262        rajahdys.Position = Ammus.Position;
263        Ammus.Destroy();
264    }
265
266
267
268
269
270    PlatformCharacter lisaaVihollinen()
271    {
272        PlatformCharacter vihollinen = new PlatformCharacter(40, 80);
273        vihollinen.Mass = 3.5;
274        vihollinen.Image = vihollisenkuva;
275        vihollinen.Tag = "vihollinen";
276        vihollinen.IgnoresGravity = false;
277
278        vihollinen.LeftIdleAnimation = new Animation(VihollinenpaikallaanVasemmalle);
279        vihollinen.RightIdleAnimation = new Animation(VihollinenpaikallaanOikealle);
280        vihollinen.LeftWalkingAnimation = new Animation(VihollinenKavelyVasemmalle);
281        vihollinen.RightWalkingAnimation = new Animation(VihollinenKavelyOikealle);
282        vihollinen.CanMoveOnAir = true;
283       
284     
285        FollowerBrain seuraajanAivot = new FollowerBrain();
286        seuraajanAivot.Target = pelaaja1;
287        seuraajanAivot.Speed = 100;
288        seuraajanAivot.StopWhenTargetClose = false;
289        seuraajanAivot.TargetFollowDistance = 30;
290        seuraajanAivot.FollowAlways = true;
291        seuraajanAivot.Active = true;
292        vihollinen.Brain = seuraajanAivot;
293
294        AddCollisionHandler(vihollinen, "seina", delegate(PhysicsObject tormaaja, PhysicsObject kohde) { vihollinen.Jump(2000);});
295
296
297        return vihollinen;
298    }
299   
300
301   
302
303    void KasitteleVihollinenKuoli(PhysicsObject Ammus, PhysicsObject kohde)
304    {
305        if (kohde.Tag.ToString() == "vihollinen")
306        {
307            MediaPlayer.Play("kill");
308            kohde.Destroy();
309
310        }
311
312    }
313    PhysicsObject lisaaMaali()
314    {
315        PhysicsObject Maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
316        Maali.Image = maalinkuva;
317        AddCollisionHandler(Maali, KasitteleMaaliinTulo);
318        return Maali;
319
320    }
321
322    PhysicsObject LisaaAmmusPaketti()
323    {
324        PhysicsObject AmmusPaketti = new PhysicsObject(20, 20);
325        AmmusPaketti.Image = AmmuksenKuva;
326        AmmusPaketti.Mass = (50);
327        AddCollisionHandler(pelaaja1, AmmusPaketti, KeraaAmmus);
328
329
330        return AmmusPaketti;
331
332    }
333
334    PhysicsObject LisaaKulta()
335    {
336        PhysicsObject Kulta = new PhysicsObject(50, 50);
337        Kulta.Image = KullanKuva;
338        Kulta.Mass = (50);
339        Kulta.Tag = "kulta";
340        AddCollisionHandler(pelaaja1, Kulta, Keraakulta);
341
342
343
344        return Kulta;
345    }
346
347    void KeraaAmmus(IPhysicsObject pelaaja1, IPhysicsObject AmmusPaketti)
348    {
349        (pelaaja1 as PlatformCharacter).Weapon.Ammo.Value += 5;
350        AmmusPaketti.Destroy();
351
352    }
353
354
355    void Keraakulta(IPhysicsObject tormaaja, IPhysicsObject kohde)
356    {
357        pisteLaskuri.Value =+ 10;
358        kohde.Destroy();
359    }
360
361    void KasitteleMaaliinTulo(PhysicsObject Maali, PhysicsObject kohde)
362    {
363        if (kohde == pelaaja1)
364        {
365            kenttaNro++;
366            SeuraavaKentta(kenttaNro);
367        }
368    }
369    void Valikko()
370    {
371        ClearAll();
372
373        Level.Background.Image = tekstinkuva;
374        valikonKohdat = new List<Label>();
375
376        Label kohta1 = new Label("Aloita kenttä");
377        kohta1.Position = new Vector(300, -20);
378        valikonKohdat.Add(kohta1);
379
380        Label kohta2 = new Label("Lopeta");
381        kohta2.Position = new Vector(300, -60);
382        valikonKohdat.Add(kohta2);
383        MediaPlayer.Play("the_matrix_-_theme_song_clubbed_to_death-gt3OptaZ20Q_fmt34");
384
385        foreach (Label valikonKohta in valikonKohdat)
386        {
387            Add(valikonKohta);
388        }
389
390        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, SeuraavaKentta, null, kenttaNro);
391        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
392
393        Mouse.IsCursorVisible = true;
394        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
395        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
396    }
397
398    void ValikossaLiikkuminen(AnalogState hiirenTila)
399    {
400        foreach (Label kohta in valikonKohdat)
401        {
402            if (Mouse.IsCursorOn(kohta))
403            {
404                kohta.TextColor = Color.Yellow;
405            }
406            else
407            {
408                kohta.TextColor = Color.YellowGreen;
409            }
410
411        }
412    }
413    void AloitaPeli()
414    {
415        ClearAll();
416        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
417
418    }
419    PhysicsObject LisaaPiikkilanka()
420    {
421        PhysicsObject Piikkilanka = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
422        Piikkilanka.Image = piikkilangankuva;
423        Piikkilanka.Tag = "Ansa";
424        //AddCollisionHandler(Piikkilanka, PiikkilankaanTormays);
425        return Piikkilanka;
426    }
427
428    PhysicsObject Lisaamaa()
429    {
430        PhysicsObject maa = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
431        maa.Image = maankuva;
432        return maa;
433    }
434
435    PhysicsObject Lisaaseina()
436    {
437        PhysicsObject seina = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
438        seina.Image = maankuva;
439        seina.Tag = "seina";
440        return seina;
441    }
442
443    PhysicsObject LisaaAita()
444    {
445        PhysicsObject Aita = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
446        Aita.Image = aidankuva;
447        Aita.IgnoresCollisionResponse = true;
448        Aita.MakeStatic();
449        return Aita;
450    }
451
452    //void PiikkilankaanTormays(PhysicsObject Piikkilanka, PhysicsObject kohde)
453    //{
454    //    if (kohde == pelaaja1)
455    //    {
456           
457    //        kohde.Destroy();
458    //        ClearAll();
459    //        Begin();
460           
461
462    //    }
463    //}
464
465    void TahtaaYlos()
466    {
467        if (pelaaja1.FacingDirection == Direction.Right)
468        {
469            pelaaja1.Weapon.Angle += Angle.FromDegrees(6);
470        }
471        if (pelaaja1.FacingDirection == Direction.Left)
472        {
473            pelaaja1.Weapon.Angle += Angle.FromDegrees(-6);
474        }
475    }
476
477    void TahtaaAlas()
478    {
479        if (pelaaja1.FacingDirection == Direction.Right)
480        {
481            pelaaja1.Weapon.Angle += Angle.FromDegrees(-6);
482        }
483        if (pelaaja1.FacingDirection == Direction.Left)
484        {
485            pelaaja1.Weapon.Angle += Angle.FromDegrees(6);
486        }
487    }
488
489    void LuoAmmusLaskuri()
490    {
491        ammusLaskuri = new IntMeter(0);
492
493        Label ammusNaytto = new Label();
494        ammusNaytto.X = Screen.Right - 100;
495        ammusNaytto.Y = Screen.Top - 100;
496        ammusNaytto.TextColor = Color.Black;
497        ammusNaytto.BindTo(pelaaja1.Weapon.Ammo);
498        Add(ammusNaytto);
499
500        Label ammusTeksti = new Label("Ammuksia jäljellä: ");
501        ammusTeksti.X = Screen.Right - 200;
502        ammusTeksti.Y = Screen.Top - 100;
503        ammusTeksti.TextColor = Color.Black;
504        Add(ammusTeksti);
505    }
506
507
508    void LuoLaskuri()
509    {
510        pisteLaskuri = new IntMeter(0);
511        Label pisteNaytto = new Label();
512        pisteNaytto.X = Screen.Left + 200;
513        pisteNaytto.Y = Screen.Top - 100;
514        pisteNaytto.TextColor = Color.Black;
515        pisteNaytto.BindTo(pisteLaskuri);
516        Add(pisteNaytto);
517
518        Label pisteTeksti = new Label("Pisteet: ");
519        pisteTeksti.X = Screen.Left + 150;
520        pisteTeksti.Y = Screen.Top - 100;
521        pisteTeksti.TextColor = Color.Black;
522        Add(pisteTeksti);
523    }
524
525    void LisaavoimaMittari()
526    {
527       
528
529        voimaMittari = new DoubleMeter(100);
530        voimaMittari.MaxValue = 100;
531
532        ProgressBar voimaPalkki = new ProgressBar(300, 30);
533        voimaPalkki.BindTo(voimaMittari);
534        Add(voimaPalkki);
535     
536        Timer aikaLaskuri = new Timer();
537        aikaLaskuri.Interval = 0.01;
538        aikaLaskuri.Timeout += delegate
539        {
540            if (voimaMittari.Value < 1)
541            {
542                pelaaja1.Destroy();
543                ClearAll();
544                Begin();
545            }
546            else
547            {
548                aikaLaskuri.Start();
549            }
550        };
551        aikaLaskuri.Start();
552
553
554
555        voimaPalkki.X = Screen.Right - 700;
556        voimaPalkki.Y = Screen.Top - 100;
557        voimaPalkki.Angle = Angle.RightAngle;
558        voimaPalkki.BarColor = Color.Green;
559        voimaPalkki.Angle = Angle.FromDegrees(0);
560        voimaPalkki.Image = LoadImage("tyhjapalkki");
561        voimaPalkki.BarImage = LoadImage("taysipalkki");
562
563        Label voimaTeksti = new Label(" Terveys: ");
564        voimaTeksti.X = Screen.Right - 900;
565        voimaTeksti.Y = Screen.Top - 100;
566        voimaTeksti.TextColor = Color.Black;
567        Add(voimaTeksti);
568    }
569}
Note: See TracBrowser for help on using the repository browser.