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

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