source: 2012/kerho/AkiP/Kirkle/Kirkle/Kirkle.cs @ 3950

Revision 3950, 9.4 KB checked in by jypeleht, 8 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 Kirkle : PhysicsGame
10{
11    const double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    PlatformCharacter pelaaja1;
16
17    Image pelaajanKuva = LoadImage("1-KirkleIdle");
18
19    private Image[] kirkleKavely = LoadImages("1-KirkleWalking1", "1-KirkleIdle", "1-KirkleWalking2", "1-KirkleIdle");
20    private Image[] kirkleHyppy = LoadImages("1-KirkleJump");
21    private Image[] kirklePudotus = LoadImages("1-KirkleLanding");
22    private Image[] KirkleIdle = LoadImages("1-KirkleIdle");
23
24    Image tahtiKuva = LoadImage("Kolikko");
25    Image sydanKuva = LoadImage("");
26    Image palikkaKuva = LoadImage("Palikka");
27    Image kytkinKuva = LoadImage("Kytkin");
28    Image ruohoKuva = LoadImage("Ruoho");
29    Image maaKuva = LoadImage("Maa");
30    Image tiiliRuskeaKuva = LoadImage("TiiliRuskea");
31    Image tiiliHarmaaKuva = LoadImage("TiiliHarmaa");
32    Image tiiliSininenKuva = LoadImage("TiiliSininen");
33    Image secretTiiliKuva = LoadImage("SecretTiili");
34    Image laavaKuva = LoadImage("Laava");
35    Image laavaKeskiKuva = LoadImage("LaavaKeski");
36
37    SoundEffect maaliAani = LoadSoundEffect("maali");
38
39    int kenttaNro = 1;
40
41    public override void Begin()
42    {
43        SeuraavaKentta();
44    }
45
46    void SeuraavaKentta()
47    {
48        ClearAll();
49
50        Gravity = new Vector(0, -1000);
51        if (kenttaNro == 1) LuoKentta("kentta1");
52        else if (kenttaNro == 2) LuoKentta("kentta2");
53        else if (kenttaNro > 2) Exit();
54
55        Camera.Follow(pelaaja1);
56        Camera.StayInLevel = true;
57
58        LisaaNappaimet();
59    }
60
61    void LuoKentta(String kentanNimi)
62    {
63        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
64        kentta.SetTileMethod('/', LisaaTaso);
65        kentta.SetTileMethod('#', LisaaMaa);
66        kentta.SetTileMethod('%', LisaaTiili);
67        kentta.SetTileMethod('(', LisaaRuskeaTiili);
68        kentta.SetTileMethod('>', LisaaVanishTiili);
69        kentta.SetTileMethod('U', LisaaSecretTiili);
70        kentta.SetTileMethod('!', LisaaPalikka);
71        kentta.SetTileMethod('S', LisaaKytkin);
72        kentta.SetTileMethod('@', LisaaLaava);
73        kentta.SetTileMethod('&', LisaaLaavaKeski);
74        kentta.SetTileMethod('*', LisaaTahti);
75        kentta.SetTileMethod('G', LisaaMaali);
76        kentta.SetTileMethod('N', LisaaPelaaja);
77        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
78        Level.CreateBorders();
79        if (kentanNimi.Equals("kentta1"))
80            Level.BackgroundColor = Color.SkyBlue;
81        if (kentanNimi.Equals("kentta2"))
82            Level.BackgroundColor = Color.Black;
83    }
84
85    void LisaaTaso(Vector paikka, double leveys, double korkeus)
86    {
87        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
88        taso.Position = paikka;
89        taso.Color = Color.Green;
90        taso.Image = ruohoKuva;
91        taso.CollisionIgnoreGroup = 1;
92        Add(taso);
93    }
94
95    void LisaaMaa(Vector paikka, double leveys, double korkeus)
96    {
97        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
98        maa.Position = paikka;
99        maa.Color = Color.DarkBrown;
100        maa.Image = maaKuva;
101        maa.CollisionIgnoreGroup = 1;
102        Add(maa);
103    }
104
105    void LisaaTiili(Vector paikka, double leveys, double korkeus)
106    {
107        PhysicsObject tiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
108        tiili.Position = paikka;
109        tiili.CollisionIgnoreGroup = 1;
110        tiili.Color = Color.Brown;
111        tiili.Image = tiiliHarmaaKuva;
112        Add(tiili);
113    }
114
115    void LisaaRuskeaTiili(Vector paikka, double leveys, double korkeus)
116    {
117        PhysicsObject ruskeaTiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
118        ruskeaTiili.Position = paikka;
119        ruskeaTiili.CollisionIgnoreGroup = 1;
120        ruskeaTiili.Color = Color.Brown;
121        ruskeaTiili.Image = tiiliRuskeaKuva;
122        Add(ruskeaTiili);
123    }
124    void LisaaVanishTiili(Vector paikka, double leveys, double korkeus)
125    {
126        PhysicsObject vanishtiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
127        vanishtiili.Position = paikka;
128        vanishtiili.CollisionIgnoreGroup = 1;
129        vanishtiili.Color = Color.Crimson;
130        vanishtiili.Image = tiiliSininenKuva; 
131        vanishtiili.IsVisible = false;
132        Add(vanishtiili);
133    }
134
135    void LisaaSecretTiili(Vector paikka, double leveys, double korkeus)
136    {
137        PhysicsObject secretTiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
138        secretTiili.Position = paikka;
139        secretTiili.CollisionIgnoreGroup = 2;
140        secretTiili.Color = Color.Brown;
141        secretTiili.Image = secretTiiliKuva;
142        Add(secretTiili, 1);
143    }
144
145    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
146    {
147        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
148        palikka.Position = paikka;
149        palikka.CollisionIgnoreGroup = 1;
150        palikka.Color = Color.Yellow;
151        palikka.Image = palikkaKuva;
152        Add(palikka);
153    }
154
155    void LisaaKytkin(Vector paikka, double leveys, double korkeus)
156    {
157        PhysicsObject kytkin = PhysicsObject.CreateStaticObject(leveys, korkeus);
158        kytkin.Position = paikka;
159        kytkin.CollisionIgnoreGroup = 1;
160        kytkin.Color = Color.Red;
161        kytkin.Image = kytkinKuva;
162        Add(kytkin);
163    }
164
165    void LisaaLaava(Vector paikka, double leveys, double korkeus)
166    {
167        PhysicsObject laava = PhysicsObject.CreateStaticObject(leveys, korkeus);
168        laava.Position = paikka;
169        laava.Color = Color.Red;
170        laava.Image = laavaKuva;
171        laava.CollisionIgnoreGroup = 1;
172        laava.Tag = "laava";
173        Add(laava);
174    }
175
176    void LisaaLaavaKeski(Vector paikka, double leveys, double korkeus)
177    {
178        PhysicsObject laavaKeski = PhysicsObject.CreateStaticObject(leveys, korkeus);
179        laavaKeski.Position = paikka;
180        laavaKeski.Color = Color.Red;
181        laavaKeski.Image = laavaKeskiKuva;
182        laavaKeski.CollisionIgnoreGroup = 1;
183        Add(laavaKeski);
184    }
185
186    void LisaaTahti(Vector paikka, double leveys, double korkeus)
187    {
188        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
189        tahti.IgnoresCollisionResponse = true;
190        tahti.Position = paikka;
191        tahti.Image = tahtiKuva;
192        tahti.Tag = "tahti";
193        Add(tahti);
194    }
195
196    void LisaaMaali(Vector paikka, double leveys, double korkeus)
197    {
198        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
199        maali.Position = paikka;
200        maali.Color = Color.Magenta;
201        maali.CollisionIgnoreGroup = 1;
202        maali.Tag = "maali";
203        Add(maali);
204    }
205
206    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
207    {
208        pelaaja1 = new PlatformCharacter(leveys, korkeus);
209        pelaaja1.AnimWalk = new Animation(kirkleKavely);
210        pelaaja1.AnimJump = new Animation(kirkleHyppy);
211        pelaaja1.AnimFall = new Animation(kirklePudotus);
212        pelaaja1.AnimIdle = new Animation(KirkleIdle);
213        //pelaaja1.Animation.Start();
214        //pelaaja1.Animation.Stop();
215        pelaaja1.AnimWalk.FPS = 7;
216        pelaaja1.Position = paikka;
217        pelaaja1.Mass = 4.0;
218        pelaaja1.Image = pelaajanKuva;
219        pelaaja1.CollisionIgnoreGroup = 2;
220        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
221        //AddCollisionHandler(pelaaja1, "laava", TormaaLaavaan);
222        AddCollisionHandler(pelaaja1, "maali", delegate(PhysicsObject p, PhysicsObject p2)
223        {
224            kenttaNro++;
225            SeuraavaKentta();
226        });
227        Add(pelaaja1);
228    }
229
230    void LisaaNappaimet()
231    {
232        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
233        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
234
235        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
236        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
237        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
238
239        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
240
241        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
242        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
243        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
244
245        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
246    }
247
248    void Liikuta(PlatformCharacter hahmo, double nopeus)
249    {
250        hahmo.Walk(nopeus);
251    }
252
253    void Hyppaa(PlatformCharacter hahmo, double nopeus)
254    {
255        hahmo.Jump(nopeus);
256        //pelaaja1.Image =
257    }
258
259    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
260    {
261        maaliAani.Play();
262        MessageDisplay.Add("Keräsit tähden!");
263        tahti.Destroy();
264    }
265
266    void TormaaLaavaan(PhysicsObject hahmo, PhysicsObject laava)
267    {
268
269    }
270}
Note: See TracBrowser for help on using the repository browser.