source: 2011/24/AkiR/Fight the Rambo/Fight the Rambo/Fight the Rambo/Peli.cs @ 2134

Revision 2134, 11.3 KB checked in by akosrahi, 8 years ago (diff)

noni ny o tähtäys

RevLine 
[1998]1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
[2053]9
[1998]10public class Peli : PhysicsGame
11{
12    const double nopeus = 200;
13    const double hyppyNopeus = 1000;
[2063]14    const int RUUDUN_KOKO = 30;
[2053]15    PlatformCharacter pelaaja1;
16    GameObject pelaajanpaikka;
[2112]17    PlatformCharacter vihollinen;
[2053]18    PlatformCharacter Maali;
[2125]19    PlatformCharacter Piikkilanka;
[2112]20    List<Label> valikonKohdat;
[1998]21
[2126]22    Image tekstinkuva = LoadImage("TEKSTI");
[2125]23    Image piikkilangankuva = LoadImage("spikewire");
[2037]24    Image pelaajanKuva = LoadImage("rambo2");
[2027]25    Image vihollisenkuva = LoadImage("Nuhasotilas");
[2053]26    Image maalinkuva = LoadImage("goal");
[2073]27    Image LisaaPelaaajanKentallekuvan = LoadImage("sponer");
[2053]28    SoundEffect maaliAani = LoadSoundEffect("maali");
[1998]29
[2037]30    Image paikallaanVasemmalle = LoadImage("rambo2");
[2027]31    Image paikallaanOikealle;
[2037]32    Image[] kavelyVasemmalle = LoadImages("rambo2");
[2027]33    Image[] kavelyOikealle;
34
[2053]35    Image VihollinenpaikallaanVasemmalle = LoadImage("Nuhasotilas");
36    Image VihollinenpaikallaanOikealle;
37    Image[] VihollinenKavelyVasemmalle = LoadImages("Nuhasotilas");
38    Image[] VihollinenKavelyOikealle;
[2037]39
[2053]40    int kenttaNro = 1;
41
[1998]42    public override void Begin()
43    {
[2112]44
[2027]45        ClearAll();
[2112]46        Valikko();
[2037]47
[2134]48
[2027]49        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
50        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
51
[2053]52        VihollinenpaikallaanOikealle = Image.Mirror(VihollinenpaikallaanVasemmalle);
53        VihollinenKavelyOikealle = Image.Mirror(VihollinenKavelyVasemmalle);
[1998]54
[2134]55
56
[2053]57    }
[1998]58
[2053]59    void SeuraavaKentta(int kentanNro)
[2112]60    {
61        ClearAll();
62        Gravity = new Vector(0, -1500);
63        MediaPlayer.Play("GameStarts");
64        if (kentanNro == 1) luoKentta1();
65        else if (kentanNro == 2) LuoKentta2();
66        else if (kentanNro == 3) LuoKentta3();
67        else if (kentanNro > 3) Valikko();
[2134]68        lisaaNappaimet();
[2112]69        Camera.Follow(pelaaja1);
70        Camera.ZoomFactor = 1.5;
71        Camera.StayInLevel = true;
[1998]72
[2053]73
[2112]74    }
[2053]75
76
77
78
79
80
81    void luoKentta1()
[1998]82    {
[2053]83        lisaaPelaaja();
[2112]84
[1998]85        TileMap kentta = TileMap.FromFile("kentta1.txt");
[2053]86        kentta['G'] = lisaaMaali;
[2027]87        kentta['E'] = lisaaVihollinen;
[1998]88        kentta['#'] = lisaaTaso;
[2053]89        kentta['N'] = lisaapelaajanPaikka;
[2125]90        kentta['S'] = LisaaPiikkilanka;
[1998]91        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
[2053]92
93        pelaaja1.Position = pelaajanpaikka.Position;
94
[1998]95        Level.CreateBorders();
96        Level.Background.CreateGradient(Color.DarkRed, Color.ForestGreen);
[2112]97    }
98    void LuoKentta2()
[2053]99    {
100        lisaaPelaaja();
[1998]101
[2068]102        TileMap kentta = TileMap.FromFile("TextFile2.txt");
[2053]103        kentta['G'] = lisaaMaali;
104        kentta['E'] = lisaaVihollinen;
105        kentta['#'] = lisaaTaso;
106        kentta['N'] = lisaapelaajanPaikka;
[2125]107        kentta['S'] = LisaaPiikkilanka;
[2053]108        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
[2112]109
[2053]110        pelaaja1.Position = pelaajanpaikka.Position;
[2112]111
[2053]112        Level.CreateBorders();
[2073]113        Level.Background.CreateGradient(Color.Blue, Color.Black);
[2112]114    }
115    GameObject lisaapelaajanPaikka()
116    {
117        pelaajanpaikka = new GameObject(100, 150);
118        pelaajanpaikka.Image = LisaaPelaaajanKentallekuvan;
119        return pelaajanpaikka;
120    }
[2053]121
[2112]122    void LuoKentta3()
123    {
124        lisaaPelaaja();
[2073]125
[2112]126        TileMap kentta = TileMap.FromFile("TextFile3.txt");
127        kentta['G'] = lisaaMaali;
128        kentta['E'] = lisaaVihollinen;
129        kentta['#'] = lisaaTaso;
130        kentta['N'] = lisaapelaajanPaikka;
[2125]131        kentta['S'] = LisaaPiikkilanka;
[2112]132        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
[2073]133
[2112]134        pelaaja1.Position = pelaajanpaikka.Position;
[2073]135
[2112]136        Level.CreateBorders();
137        Level.Background.CreateGradient(Color.Blue, Color.Purple);
138    }
139
[1998]140    PhysicsObject lisaaTaso()
141    {
142        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
[2073]143        taso.Color = Color.Black;
[1998]144        return taso;
145    }
146
147    PlatformCharacter lisaaPelaaja()
148    {
[2126]149        pelaaja1 = new PlatformCharacter(50, 70);
[1998]150        pelaaja1.Mass = 4.0;
151        pelaaja1.Image = pelaajanKuva;
[2134]152
[2126]153        pelaaja1.Weapon = new AssaultRifle(60, 30);
[2027]154        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
[2037]155        pelaaja1.Weapon.Y = -20;
156        pelaaja1.Weapon.X = 0.5;
[2053]157
[2027]158        pelaaja1.RightIdleAnimation = new Animation(paikallaanVasemmalle);
159        pelaaja1.LeftIdleAnimation = new Animation(paikallaanOikealle);
160        pelaaja1.RightWalkingAnimation = new Animation(kavelyVasemmalle);
161        pelaaja1.LeftWalkingAnimation = new Animation(kavelyOikealle);
[2053]162        Add(pelaaja1);
[2027]163
[1998]164        return pelaaja1;
165    }
166
167    void lisaaNappaimet()
168    {
169        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
[2125]170        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu pelistä");
[1998]171
[2132]172        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
173        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
174        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
[2027]175        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
[2134]176        Keyboard.Listen(Key.W, ButtonState.Down, TahtaaYlos, "Tähtää ylös rynnäkkökiväärillä");
177        Keyboard.Listen(Key.S, ButtonState.Down, TahtaaAlas, "Tähtää alas rynnäkkökiväärillä");
[1998]178    }
179
180    void liikuta(PlatformCharacter hahmo, double nopeus)
181    {
182        hahmo.Walk(nopeus);
183    }
184
185    void hyppaa(PlatformCharacter hahmo, double nopeus)
186    {
187        hahmo.Jump(nopeus);
188    }
189
[2027]190
191
192    void AmmuAseella()
[1998]193    {
[2027]194        PhysicsObject Ammus = pelaaja1.Weapon.Shoot();
195        if (Ammus != null)
[1998]196        {
[2134]197            Ammus.Size *= 2;
[2132]198            Ammus.IgnoresGravity = true;
[2037]199            Ammus.MaximumLifetime = TimeSpan.FromSeconds(3.1);
[2053]200            AddCollisionHandler(Ammus, KasitteleVihollinenKuoli);
[1998]201        }
202    }
[2027]203    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
204    {
205        Ammus.Destroy();
206        Explosion rajahdys = new Explosion(10);
207        rajahdys.Position = Ammus.Position;
[2112]208
[2027]209    }
210
211
[2037]212
213    PlatformCharacter lisaaVihollinen()
[2027]214    {
[2053]215        PlatformCharacter vihollinen = new PlatformCharacter(70, 70);
[2112]216        vihollinen.Mass = 0.05;
[2027]217        vihollinen.Image = vihollisenkuva;
[2053]218        vihollinen.Tag = ("vihollinen");
[2122]219        vihollinen.IgnoresGravity = false;
[2027]220
[2053]221        vihollinen.LeftIdleAnimation = new Animation(VihollinenpaikallaanVasemmalle);
222        vihollinen.RightIdleAnimation = new Animation(VihollinenpaikallaanOikealle);
223        vihollinen.LeftWalkingAnimation = new Animation(VihollinenKavelyVasemmalle);
224        vihollinen.RightWalkingAnimation = new Animation(VihollinenKavelyOikealle);
[2125]225        vihollinen.CanMoveOnAir = true;
[2037]226
[2053]227
[2125]228
[2027]229        FollowerBrain seuraajanAivot = new FollowerBrain();
230        seuraajanAivot.Target = pelaaja1;
231        seuraajanAivot.Speed = 100;
[2053]232        seuraajanAivot.StopWhenTargetClose = false;
[2132]233        seuraajanAivot.TargetFollowDistance = 100;
[2027]234        seuraajanAivot.FollowAlways = true;
[2053]235        seuraajanAivot.Active = true;
236        vihollinen.Brain = seuraajanAivot;
237
[2027]238        AddCollisionHandler(vihollinen, VihollinenOsui);
[2037]239        return vihollinen;
[2027]240    }
[2037]241
242    void VihollinenOsui(PhysicsObject vihollinen, PhysicsObject kohde)
243    {
244        if (kohde == pelaaja1)
245        {
[2134]246            Explosion rajahdys = new Explosion(100);
[2125]247            rajahdys.Position = pelaaja1.Position;
248            Add(rajahdys);
249            rajahdys.Speed = 250.0;
250            rajahdys.Force = 10000;
251            rajahdys.ShockwaveColor = Color.Red;
[2037]252            pelaaja1.Destroy();
253            Begin();
254        }
[2053]255    }
256    void KasitteleVihollinenKuoli(PhysicsObject Ammus, PhysicsObject kohde)
257    {
[2112]258        if (kohde.Tag.ToString() == "vihollinen")
[2053]259        {
260            MediaPlayer.Play("kill");
[2112]261            kohde.Destroy();
[2134]262
[2053]263        }
[2112]264
[2053]265    }
[2112]266    PhysicsObject lisaaMaali()
[2053]267    {
268        PhysicsObject Maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
[2112]269        Maali.Image = maalinkuva;
270        AddCollisionHandler(Maali, KasitteleMaaliinTulo);
271        return Maali;
[2037]272
[2112]273    }
274
275    void KasitteleMaaliinTulo(PhysicsObject Maali, PhysicsObject kohde)
276    {
277        if (kohde == pelaaja1)
[2037]278        {
[2112]279            kenttaNro++;
280            SeuraavaKentta(kenttaNro);
281        }
282    }
283    void Valikko()
284    {
285        ClearAll();
[2126]286
287        Level.Background.Image = tekstinkuva;
[2112]288        valikonKohdat = new List<Label>();
[2134]289
[2120]290        Label kohta1 = new Label("Aloita kenttä");
[2126]291        kohta1.Position = new Vector(0, -220);
[2112]292        valikonKohdat.Add(kohta1);
293
294        Label kohta2 = new Label("Lopeta");
[2126]295        kohta2.Position = new Vector(0, -260);
[2112]296        valikonKohdat.Add(kohta2);
[2125]297        MediaPlayer.Play("the_matrix_-_theme_song_clubbed_to_death-gt3OptaZ20Q_fmt34");
[2112]298
299        foreach (Label valikonKohta in valikonKohdat)
300        {
301            Add(valikonKohta);
302        }
303
304        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, SeuraavaKentta, null, kenttaNro);
305        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
306
307        Mouse.IsCursorVisible = true;
308        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
309        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
310    }
311
312    void ValikossaLiikkuminen(AnalogState hiirenTila)
313    {
314        foreach (Label kohta in valikonKohdat)
315        {
316            if (Mouse.IsCursorOn(kohta))
[2053]317            {
[2125]318                kohta.TextColor = Color.Yellow;
[2053]319            }
[2112]320            else
321            {
[2125]322                kohta.TextColor = Color.YellowGreen;
[2053]323            }
324
[2112]325        }
326    }
327    void AloitaPeli()
328    {
329        ClearAll();
330        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
[2134]331
[2112]332    }
[2125]333    PhysicsObject LisaaPiikkilanka()
334    {
335        PhysicsObject Piikkilanka = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
336        Piikkilanka.Image = piikkilangankuva;
337        AddCollisionHandler(Piikkilanka, PiikkilankaanTormays);
338        return Piikkilanka;
339    }
[2027]340
[2125]341    void PiikkilankaanTormays(PhysicsObject Piikkilanka, PhysicsObject kohde)
342    {
[2134]343        if (kohde == pelaaja1)
344        {
345            Explosion rajahdys = new Explosion(100);
346            rajahdys.Position = pelaaja1.Position;
347            Add(rajahdys);
348            rajahdys.Speed = 250.0;
349            rajahdys.Force = 10000;
350            rajahdys.ShockwaveColor = Color.Red;
351            kohde.Destroy();
352            Begin();
[2027]353
[2125]354        }
355    }
[2134]356
357    void TahtaaYlos()
358    {
359        if (pelaaja1.FacingDirection == Direction.Right)
360        {
361            pelaaja1.Weapon.Angle += Angle.FromDegrees(5);
362        }
363        if (pelaaja1.FacingDirection == Direction.Left)
364        {
365            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5);
366        }
367    }
368
369    void TahtaaAlas()
370    {
371        if (pelaaja1.FacingDirection == Direction.Right)
372        {
373            pelaaja1.Weapon.Angle += Angle.FromDegrees(-5);
374        }
375        if (pelaaja1.FacingDirection == Direction.Left)
376        {
377            pelaaja1.Weapon.Angle += Angle.FromDegrees(5);
378        }
379    }
[2112]380}
Note: See TracBrowser for help on using the repository browser.