source: 2014/24/IlmariM/hyppymies/hyppymies/hyppymies/hyppymies.cs @ 4959

Revision 4959, 8.5 KB checked in by sieerinn, 6 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class hyppymies : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16    Vector pelaajanAloitus;
17    int kenttaNro = 1;
18
19
20    Image pelaajanKuva = LoadImage("hyppymies");
21    Image donitsikuva = LoadImage("donitsi");
22    Image pahkinakuva = LoadImage("pahkina");
23    Image lentopahkinakuva = LoadImage("lentopähkinä");
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25    Image mukulakivikuva = LoadImage("coblestone");
26    Image avainkuva = LoadImage("avain");
27    Image ovikuva = LoadImage("ovi");
28    Image mossystonebrick = LoadImage("sammaleinenkivitiili");
29    Image stonebrick = LoadImage("kivitiili");
30
31    public override void Begin()
32    {
33       
34
35       // LuoKentta("kentta2");
36        //LisaaNappaimet();
37        SeuraavaKentta();
38
39       
40    }
41
42    void LuoKentta(string kenttaTiedostonNimi)
43    {
44        TileMap kentta = TileMap.FromLevelAsset(kenttaTiedostonNimi);
45
46        PhysicsObject avain = PhysicsObject.CreateStaticObject(1, 1);
47        PhysicsObject ovi = PhysicsObject.CreateStaticObject(1, 1);
48        avain.Destroyed += ovi.Destroy;
49
50        kentta.SetTileMethod('#', Lisaalattia);
51        kentta.SetTileMethod('o', Lisaadonitsi);
52        kentta.SetTileMethod('m', LisaaPelaaja);
53        kentta.SetTileMethod('d', Lisaadonitsi);
54        kentta.SetTileMethod('p', LisaaPahkina);
55        kentta.SetTileMethod('l', LisaaLentopahkina);
56        kentta.SetTileMethod('c', LisaaMukulakivi);
57        kentta.SetTileMethod('s', LisaaKivitiili);
58        kentta.SetTileMethod('|', LisaaOvi, ovi);
59        kentta.SetTileMethod('k', LisaaMoss);
60        kentta.SetTileMethod('a', LisaaAvain, avain);
61
62
63        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
64        Level.CreateBorders();
65        Level.Background.CreateGradient(Color.White, Color.SkyBlue);
66    }
67
68    void Lisaalattia(Vector paikka, double leveys, double korkeus)
69    {
70        LisaaTaso(paikka, leveys, korkeus, mukulakivikuva);
71    }
72
73    void Lisaadonitsi(Vector paikka, double leveys, double korkeus)
74    {
75        PhysicsObject donitsi = PhysicsObject.CreateStaticObject(leveys, korkeus);
76        donitsi.IgnoresCollisionResponse = true;
77        donitsi.Position = paikka;
78        donitsi.Image = donitsikuva;
79        donitsi.Tag = "donitsi";
80        Add(donitsi);
81    }
82
83    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
84    {
85        pelaaja1 = new PlatformCharacter(leveys, korkeus);
86        pelaaja1.Position = paikka;
87        pelaajanAloitus = paikka;
88        pelaaja1.Mass = 4.0;
89        pelaaja1.Image = pelaajanKuva;
90        AddCollisionHandler(pelaaja1, "donitsi", TormaaTahteen);
91        AddCollisionHandler(pelaaja1, "pahkina", Tormaapahkinaan);
92        AddCollisionHandler(pelaaja1, "lentopahkina", Tormaapahkinaan);
93        AddCollisionHandler(pelaaja1, "avain", CollisionHandler.DestroyTarget);
94        Add(pelaaja1);
95    }
96
97    void LisaaNappaimet()
98    {
99        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
100        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
101
102        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
103        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
104        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
105
106        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
107
108        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
109        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
110        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
111
112        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
113    }
114
115    void Liikuta(PlatformCharacter hahmo, double nopeus)
116    {
117        hahmo.Walk(nopeus);
118    }
119
120    void Hyppaa(PlatformCharacter hahmo, double nopeus)
121    {
122        hahmo.Jump(nopeus);
123    }
124
125    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
126    {
127        maaliAani.Play();
128        MessageDisplay.Add("Sait donitsin!");
129        tahti.Destroy();
130        SeuraavaKentta();
131    }
132    void LisaaPahkina(Vector paikka, double leveys, double korkeus)
133    {
134        PlatformCharacter pahkina = new PlatformCharacter(leveys, korkeus);
135        pahkina.IgnoresCollisionResponse = false;
136        pahkina.Position = paikka;
137        pahkina.Image = pahkinakuva;
138        pahkina.Tag = "pahkina";
139        PlatformWandererBrain tasoAivot = new PlatformWandererBrain();
140        tasoAivot.Speed = 30;
141
142        pahkina.Brain = tasoAivot;
143        Add(pahkina);
144    }
145    void LisaaLentopahkina(Vector paikka, double leveys, double korkeus)
146    {
147        PhysicsObject lentopahkina = new PhysicsObject(leveys, korkeus);
148        lentopahkina.IgnoresGravity = true;
149        FollowerBrain seuraajanAivot = new FollowerBrain(pelaaja1);
150        lentopahkina.Brain = seuraajanAivot;
151        seuraajanAivot.Speed = 70;                 // Millä nopeudella kohdetta seurataan
152        seuraajanAivot.DistanceFar = 300;           // Etäisyys jolla aletaan seurata kohdetta
153        seuraajanAivot.DistanceClose = 100;         // Etäisyys jolloin ollaan lähellä kohdetta
154        seuraajanAivot.StopWhenTargetClose = false;  // Pysähdytään kun ollaan lähellä kohdetta
155        lentopahkina.CanRotate = false;
156       
157        lentopahkina.IgnoresCollisionResponse = false;
158        lentopahkina.Position = paikka;
159        lentopahkina.Image = lentopahkinakuva;
160        lentopahkina.Tag = "lentopahkina";
161        Add(lentopahkina);
162    }
163
164    void Kuoleminen()
165    {
166        MessageDisplay.Add("kuolit :(");
167        pelaaja1.Position = pelaajanAloitus;
168    }
169
170    void Tormaapahkinaan(PhysicsObject hahmo, PhysicsObject pahkina)
171    {
172        Kuoleminen();
173    }
174
175    void LisaaMukulakivi(Vector paikka, double leveys, double korkeus)
176    {
177        LisaaTaso(paikka, leveys, korkeus, mukulakivikuva);
178    }
179
180    void LisaaTaso(Vector paikka, double leveys, double korkeus,Image kuva)
181    {
182        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
183        taso.Position = paikka;
184        taso.Image = kuva;
185        Add(taso);
186    }
187
188    void LisaaAvain(Vector paikka, double leveys, double korkeus, PhysicsObject avain)
189    {
190        avain.Size = new Vector(leveys, korkeus);
191        avain.IgnoresCollisionResponse = true;
192        avain.Position = paikka;
193        avain.Image = avainkuva;
194        avain.Tag = "avain";
195        Add(avain);
196    }
197
198    void LisaaOvi(Vector paikka, double leveys, double korkeus, PhysicsObject ovi)
199    {
200        ovi.Size = new Vector(leveys, korkeus);
201        ovi.IgnoresCollisionResponse = false;
202        ovi.Position = paikka;
203        ovi.Image = ovikuva;
204        ovi.Tag = "ovi";
205        Add(ovi);
206    }
207
208    void LisaaMoss(Vector paikka, double leveys, double korkeus)
209    {
210        PhysicsObject mossystone = PhysicsObject.CreateStaticObject(leveys, korkeus);
211        mossystone.IgnoresCollisionResponse = false;
212        mossystone.Position = paikka;
213        mossystone.Image = mossystonebrick;
214        mossystone.Tag = "sammaleinenkivitiili";
215        Add(mossystone);
216    }
217
218    void LisaaKivitiili(Vector paikka, double leveys, double korkeus)
219    {
220        PhysicsObject kivitiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
221        kivitiili.IgnoresCollisionResponse = false;
222        kivitiili.Position = paikka;
223        kivitiili.Image = stonebrick;
224        kivitiili.Tag = "kivitiili";
225        Add(kivitiili);
226    }
227   
228    void SeuraavaKentta()
229    {
230        ClearAll();
231
232        SmoothTextures = false;
233        Gravity = new Vector(0, -1000);
234       
235
236        if (kenttaNro == 1) LuoKentta("kentta1");
237        else if (kenttaNro == 2) LuoKentta("kentta2");
238        else if (kenttaNro == 3) LuoKentta("kentta3");
239        else if (kenttaNro > 3) Exit();
240
241        LisaaNappaimet();
242        Camera.Follow(pelaaja1);
243        Camera.ZoomFactor = 1.2;
244        Camera.StayInLevel = true;
245        kenttaNro++;
246    }
247   
248}
Note: See TracBrowser for help on using the repository browser.