source: 2015/24/JouniP/Tasohyppelyesimerkki/Tasohyppelyesimerkki/Tasohyppelyesimerkki/Tasohyppelyesimerkki.cs @ 6033

Revision 6033, 5.6 KB checked in by jotapoti, 6 years ago (diff)

Lisätty viholliselle tekoäly ja pelaajalle elämälaskuri

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Tasohyppelyesimerkki : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    Pelaaja pelaaja1;
16
17    Image pelaajanKuva = LoadImage("norsu");
18    Image tahtiKuva = LoadImage("tahti");
19    Image viholliskuva = LoadImage("sininenpahis");
20
21    SoundEffect maaliAani = LoadSoundEffect("maali");
22
23    //Pelin alussa ollaan kentässä 1
24    int kenttaNro = 1;
25
26    // TODO lisää pelaajan elämälaskurille näyttö
27
28    public override void Begin()
29    {
30        SmoothTextures = false;
31        //IsFullScreen = true;
32        VaihdaKenttaa();
33    }
34
35    void VaihdaKenttaa()
36    {
37        ClearAll();
38        Gravity = new Vector(0, -1000);
39
40        LuoKentta();
41        LisaaNappaimet();
42
43        Camera.Follow(pelaaja1);
44        Camera.ZoomFactor = 1.2;
45        Camera.StayInLevel = true;
46    }
47
48    void LuoKentta()
49    {
50        if (kenttaNro > 2)
51        {
52            MessageDisplay.Add("Voitit pelin!");
53            Timer.SingleShot(3.0, Exit);
54            return;
55        }
56
57        TileMap kentta = TileMap.FromLevelAsset("kentta"+kenttaNro);
58        kentta.SetTileMethod('#', LisaaTaso);
59        kentta.SetTileMethod('*', LisaaTahti);
60        kentta.SetTileMethod('N', LisaaPelaaja);
61        kentta.SetTileMethod('v', LisaaVihollinen);
62        kentta.SetTileMethod('m', LisaaMaali);
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64        Level.CreateBorders();
65        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
66    }
67
68    void TormaaMaaliin(PhysicsObject pelaaja, PhysicsObject maali)
69    {
70        kenttaNro++;
71        VaihdaKenttaa();
72    }
73
74    void LisaaMaali(Vector paikka, double leveys, double korkeus)
75    {
76        PhysicsObject maali = new PhysicsObject(leveys, korkeus);
77        maali.MakeStatic();
78        maali.Color = Color.Emerald;
79        maali.Position = paikka;
80        maali.Tag = "maali";
81        Add(maali);
82    }
83
84    void LisaaTaso(Vector paikka, double leveys, double korkeus)
85    {
86        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
87        taso.Position = paikka;
88        taso.Color = Color.Green;
89        Add(taso);
90    }
91
92    void LisaaTahti(Vector paikka, double leveys, double korkeus)
93    {
94        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
95        tahti.IgnoresCollisionResponse = true;
96        tahti.Position = paikka;
97        tahti.Image = tahtiKuva;
98        tahti.Tag = "tahti";
99        Add(tahti);
100    }
101
102    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
103    {
104        pelaaja1 = new Pelaaja(leveys, korkeus);
105        pelaaja1.Position = paikka;
106        pelaaja1.Mass = 4.0;
107        pelaaja1.Image = pelaajanKuva;
108        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
109        AddCollisionHandler(pelaaja1, "maali", TormaaMaaliin);
110        AddCollisionHandler(pelaaja1, "pahis", TormaaViholliseen);
111        Add(pelaaja1);
112    }
113   
114    void LisaaVihollinen(Vector paikka, double leveys, double korkeus)
115    {
116        PlatformCharacter vihollinen = new PlatformCharacter(leveys, korkeus);
117        vihollinen.Position = paikka;
118        vihollinen.Image = viholliskuva;
119        vihollinen.Tag = "pahis";
120        Add(vihollinen);
121
122        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
123        tasoAivot.Speed = 100;
124        tasoAivot.JumpSpeed = 700;
125        tasoAivot.TriesToJump = true;
126        tasoAivot.FallsOffPlatforms = true;
127        vihollinen.Brain = tasoAivot;
128    }
129
130    void LisaaNappaimet()
131    {
132        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
133        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
134        Keyboard.Listen(Key.R, ButtonState.Pressed, VaihdaKenttaa, "Aloita kenttä alusta");
135
136        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
137        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
138        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
139
140        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
141
142        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
143        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
144        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
145
146        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
147    }
148
149    void Liikuta(PlatformCharacter hahmo, double nopeus)
150    {
151        hahmo.Walk(nopeus);
152    }
153
154    void Hyppaa(PlatformCharacter hahmo, double nopeus)
155    {
156        hahmo.Jump(nopeus);
157    }
158
159    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
160    {
161        maaliAani.Play();
162        MessageDisplay.Add("Keräsit tähden!");
163        tahti.Destroy();
164    }
165
166    void TormaaViholliseen(PhysicsObject hahmo, PhysicsObject vihu)
167    {
168        MessageDisplay.Add("Osuit viholliseen!");
169        ((Pelaaja)hahmo).Elamalaskuri.Value -= 1;
170        if (((Pelaaja)hahmo).Elamalaskuri.Value == ((Pelaaja)hahmo).Elamalaskuri.MinValue)
171        {
172            Timer.SingleShot(5.0, VaihdaKenttaa);
173        }
174    }
175}
Note: See TracBrowser for help on using the repository browser.