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

Revision 3953, 15.1 KB checked in by jotapoti, 8 years ago (diff)

Pelin versio 27.4.2013.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10
11public class Kirkle : PhysicsGame
12{
13    const double nopeus = 200;
14    const double hyppyNopeus = 750;
15    const int RUUDUN_KOKO = 40;
16
17    PlatformCharacter pelaaja1;
18
19    DoubleMeter elamaLaskuri;
20    IntMeter kolikkoLaskuri;
21
22    Image pelaajanKuva = LoadImage("1-KirkleIdle");
23
24    private Image[] kirkleKavely = LoadImages("1-KirkleWalking1", "1-KirkleIdle", "1-KirkleWalking2", "1-KirkleIdle");
25    private Image[] kirkleHyppy = LoadImages("1-KirkleJump");
26    private Image[] kirklePudotus = LoadImages("1-KirkleLanding");
27    private Image[] KirkleIdle = LoadImages("1-KirkleIdle");
28    private Image[] kirkleKipu = LoadImages("KirkleKipu1", "KirkleKipu2", "KirkleKipu1", "KirkleKipu2", "KirkleKipu1", "KirkleKipu2");
29    private Image[] kasviVihuWalk = LoadImages("KasviVihuKavely1", "KasviVihuKavely2", "KasviVihuKavely1", "KasviVihuKavely3");
30    private Image[] pahaKirkleWalk = LoadImages("PahaKirkleKavely1", "PahaKirkleKavely2", "PahaKirkleKavely1", "PahaKirkleKavely3");
31    private Image[] kynttilanvalo = LoadImages("Kynttilanvalo1", "kynttilanvalo2");
32    private Image[] laavaPintaKuplii = LoadImages("Laava1", "Laava2", "Laava3", "Laava4", "Laava5", "Laava6", "Laava7", "Laava8", "Laava9", "Laava10");
33    private Image[] laavaKuplii = LoadImages("LaavaKeski1", "LaavaKeski2", "LaavaKeski3", "LaavaKeski4", "LaavaKeski5", "LaavaKeski6", "LaavaKeski7", "LaavaKeski8", "LaavaKeski9", "LaavaKeski10");
34    private Image[] maalianimaatio = LoadImages("Maali1", "Maali2", "Maali3");
35
36    Image tahtiKuva = LoadImage("Kolikko");
37    Image sydanKuva = LoadImage("");
38    Image palikkaKuva = LoadImage("Palikka");
39    Image kytkinKuva = LoadImage("Kytkin");
40    Image ruohoKuva = LoadImage("Ruoho2");
41    Image maaKuva = LoadImage("Maa2");
42    Image tiiliRuskeaKuva = LoadImage("TiiliRuskea");
43    Image tiiliHarmaaKuva = LoadImage("TiiliHarmaa");
44    Image tiiliSininenKuva = LoadImage("TiiliSininen");
45    Image secretTiiliKuva = LoadImage("SecretTiili");
46    Image laavaKuva = LoadImage("Laava");
47    Image laavaKeskiKuva = LoadImage("LaavaKeski");
48    Image puuYlaKuva = LoadImage("PuuYla");
49    Image puuKeskiKuva = LoadImage("PuuKeski");
50    Image puuAlaKuva = LoadImage("PuuAla");
51
52    SoundEffect maaliAani = LoadSoundEffect("maali");
53
54    int kenttaNro = 1;
55
56    public override void Begin()
57    {
58        SeuraavaKentta();
59    }
60
61    void SeuraavaKentta()
62    {
63        ClearAll();
64
65        Gravity = new Vector(0, -1000);
66        if (kenttaNro == 1) LuoKentta("kentta1");
67        else if (kenttaNro == 2) LuoKentta("kentta2");
68        else if (kenttaNro > 2) Exit();
69
70        Camera.Follow(pelaaja1);
71        Camera.StayInLevel = true;
72
73        LisaaElamaLaskuri();
74        LisaaNappaimet();
75    }
76
77    void LuoKentta(String kentanNimi)
78    {
79        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
80        kentta.SetTileMethod('/', LisaaTaso);
81        kentta.SetTileMethod('#', LisaaMaa);
82        kentta.SetTileMethod('%', LisaaTiili);
83        kentta.SetTileMethod('(', LisaaRuskeaTiili);
84        kentta.SetTileMethod('>', LisaaVanishTiili);
85        kentta.SetTileMethod('U', LisaaSecretTiili);
86        kentta.SetTileMethod('!', LisaaPalikka);
87        kentta.SetTileMethod('S', LisaaKytkin);
88        kentta.SetTileMethod('@', LisaaLaava);
89        kentta.SetTileMethod('&', LisaaLaavaKeski);
90        kentta.SetTileMethod('*', LisaaTahti);
91        kentta.SetTileMethod('G', LisaaMaali);
92        kentta.SetTileMethod('H', LisaaTaustaobjekti, puuYlaKuva);
93        kentta.SetTileMethod('C', LisaaTaustaobjekti, puuKeskiKuva);
94        kentta.SetTileMethod('D', LisaaTaustaobjekti, puuAlaKuva);
95        kentta.SetTileMethod('K', LisaaKynttila);
96        kentta.SetTileMethod('N', LisaaPelaaja);
97        kentta.SetTileMethod('1', LisaaKasviVihu);
98        kentta.SetTileMethod('2', LisaaPahaKirkle);
99        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
100        Level.CreateBorders();
101        if (kentanNimi.Equals("kentta1"))
102            Level.BackgroundColor = Color.LightBlue;
103        if (kentanNimi.Equals("kentta2"))
104            Level.BackgroundColor = Color.Black;
105    }
106
107    void LisaaTaso(Vector paikka, double leveys, double korkeus)
108    {
109        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
110        taso.Position = paikka;
111        taso.Color = Color.Green;
112        taso.Image = ruohoKuva;
113        taso.CollisionIgnoreGroup = 1;
114        Add(taso);
115    }
116
117    void LisaaMaa(Vector paikka, double leveys, double korkeus)
118    {
119        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
120        maa.Position = paikka;
121        maa.Color = Color.DarkBrown;
122        maa.Image = maaKuva;
123        maa.CollisionIgnoreGroup = 1;
124        Add(maa);
125    }
126
127    void LisaaTiili(Vector paikka, double leveys, double korkeus)
128    {
129        PhysicsObject tiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
130        tiili.Position = paikka;
131        tiili.CollisionIgnoreGroup = 1;
132        tiili.Color = Color.Brown;
133        tiili.Image = tiiliHarmaaKuva;
134        Add(tiili);
135    }
136
137    void LisaaRuskeaTiili(Vector paikka, double leveys, double korkeus)
138    {
139        PhysicsObject ruskeaTiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
140        ruskeaTiili.Position = paikka;
141        ruskeaTiili.CollisionIgnoreGroup = 1;
142        ruskeaTiili.Color = Color.Brown;
143        ruskeaTiili.Image = tiiliRuskeaKuva;
144        Add(ruskeaTiili);
145    }
146    void LisaaVanishTiili(Vector paikka, double leveys, double korkeus)
147    {
148        PhysicsObject vanishtiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
149        vanishtiili.Position = paikka;
150        vanishtiili.CollisionIgnoreGroup = 1;
151        vanishtiili.Color = Color.Crimson;
152        vanishtiili.Image = tiiliSininenKuva; 
153        vanishtiili.IsVisible = false;
154        Add(vanishtiili);
155    }
156
157    void LisaaSecretTiili(Vector paikka, double leveys, double korkeus)
158    {
159        PhysicsObject secretTiili = PhysicsObject.CreateStaticObject(leveys, korkeus);
160        secretTiili.Position = paikka;
161        secretTiili.CollisionIgnoreGroup = 2;
162        secretTiili.IgnoresGravity = true;
163        secretTiili.IgnoresPhysicsLogics = true;
164        secretTiili.IgnoresCollisionResponse = true;
165        secretTiili.Color = Color.Brown;
166        secretTiili.Image = secretTiiliKuva;
167        Add(secretTiili, 1);
168    }
169
170    void LisaaPalikka(Vector paikka, double leveys, double korkeus)
171    {
172        PhysicsObject palikka = PhysicsObject.CreateStaticObject(leveys, korkeus);
173        palikka.Position = paikka;
174        palikka.CollisionIgnoreGroup = 1;
175        palikka.Color = Color.Yellow;
176        palikka.Image = palikkaKuva;
177        Add(palikka);
178    }
179
180    void LisaaKytkin(Vector paikka, double leveys, double korkeus)
181    {
182        PhysicsObject kytkin = PhysicsObject.CreateStaticObject(leveys, korkeus);
183        kytkin.Position = paikka;
184        kytkin.CollisionIgnoreGroup = 1;
185        kytkin.Color = Color.Red;
186        kytkin.Image = kytkinKuva;
187        Add(kytkin);
188    }
189
190    void LisaaLaava(Vector paikka, double leveys, double korkeus)
191    {
192        PhysicsObject laava = PhysicsObject.CreateStaticObject(leveys, korkeus);
193        laava.Position = paikka;
194        laava.Color = Color.Red;
195        laava.Animation = new Animation(laavaPintaKuplii);
196        laava.Animation.Start();
197        laava.Animation.FPS = 10;
198        laava.CollisionIgnoreGroup = 1;
199        laava.Tag = "laava";
200        Add(laava);
201    }
202
203    void LisaaLaavaKeski(Vector paikka, double leveys, double korkeus)
204    {
205        PhysicsObject laavaKeski = PhysicsObject.CreateStaticObject(leveys, korkeus);
206        laavaKeski.Position = paikka;
207        laavaKeski.Color = Color.Red;
208        laavaKeski.Animation = new Animation(laavaKuplii);
209        laavaKeski.Animation.Start();
210        laavaKeski.Animation.FPS = 10;
211        laavaKeski.CollisionIgnoreGroup = 1;
212        Add(laavaKeski);
213    }
214
215    void LisaaTahti(Vector paikka, double leveys, double korkeus)
216    {
217        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
218        tahti.IgnoresCollisionResponse = true;
219        tahti.Position = paikka;
220        tahti.Image = tahtiKuva;
221        tahti.Tag = "tahti";
222        Add(tahti);
223    }
224
225    void LisaaMaali(Vector paikka, double leveys, double korkeus)
226    {
227        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
228        maali.Position = paikka;
229        maali.Color = Color.Magenta;
230        maali.Animation = new Animation(maalianimaatio);
231        maali.Animation.Start();
232        maali.Animation.FPS = 5;
233        maali.CollisionIgnoreGroup = 1;
234        maali.Tag = "maali";
235        Add(maali);
236    }
237
238    void LisaaTaustaobjekti(Vector paikka, double leveys, double korkeus, Image lisattavaKuva)
239    {
240        PhysicsObject taustaobjekti = PhysicsObject.CreateStaticObject(leveys, korkeus);
241        taustaobjekti.Position = paikka;
242        taustaobjekti.Color = Color.JungleGreen;
243        taustaobjekti.CollisionIgnoreGroup = 2;
244        taustaobjekti.IgnoresGravity = true;
245        taustaobjekti.IgnoresPhysicsLogics = true;
246        taustaobjekti.IgnoresCollisionResponse = true;
247        taustaobjekti.Image = lisattavaKuva;
248        Add(taustaobjekti, -1);
249    }
250   
251    void LisaaKynttila(Vector paikka, double leveys, double korkeus)
252    {
253        PhysicsObject kynttila = PhysicsObject.CreateStaticObject(leveys, korkeus);
254        kynttila.Position = paikka;
255        kynttila.Color = Color.Orange;
256        kynttila.CollisionIgnoreGroup = 2;
257        kynttila.IgnoresGravity = true;
258        kynttila.IgnoresPhysicsLogics = true;
259        kynttila.IgnoresCollisionResponse = true;
260        kynttila.Animation = new Animation(kynttilanvalo);
261        kynttila.Animation.Start();
262        kynttila.Animation.FPS = 8;
263        Add(kynttila, -1);
264
265    }
266
267    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
268    {
269        pelaaja1 = new PlatformCharacter(leveys, korkeus);
270        pelaaja1.AnimWalk = new Animation(kirkleKavely);
271        pelaaja1.AnimJump = new Animation(kirkleHyppy);
272        pelaaja1.AnimFall = new Animation(kirklePudotus);
273        pelaaja1.AnimIdle = new Animation(KirkleIdle);
274        //pelaaja1.Animation.Start();
275        //pelaaja1.Animation.Stop();
276        pelaaja1.AnimWalk.FPS = 7;
277        pelaaja1.Position = paikka;
278        pelaaja1.Mass = 4.0;
279        pelaaja1.Restitution = 0.1; 
280        pelaaja1.Image = pelaajanKuva;
281        //pelaaja1.CollisionIgnoreGroup = 2;
282        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
283        AddCollisionHandler(pelaaja1, "vihollinen", TormaaVihuun);
284        AddCollisionHandler(pelaaja1, "laava", TormaaLaavaan);
285        AddCollisionHandler(pelaaja1, "maali", delegate(PhysicsObject p, PhysicsObject p2)
286        {
287            kenttaNro++;
288            SeuraavaKentta();
289        });
290        Add(pelaaja1);
291    }
292
293    void LisaaKasviVihu(Vector paikka, double leveys, double korkeus)
294    {
295        Vihu kasviVihu = new Vihu(leveys, korkeus);
296        kasviVihu.Position = paikka;
297        kasviVihu.Color = Color.Green;
298        kasviVihu.Animation = new Animation(kasviVihuWalk);
299        kasviVihu.Animation.Start();
300        kasviVihu.Animation.FPS = 7;
301        kasviVihu.CollisionIgnoreGroup = 2;
302        kasviVihu.Tag = "vihollinen";
303        Add(kasviVihu);
304
305        PlatformWandererBrain tasoAivot1 = new PlatformWandererBrain();
306        tasoAivot1.Speed = 75;
307        tasoAivot1.FallsOffPlatforms = false;
308        //tasoAivot1.TurnWhileMoving = false;
309
310        kasviVihu.Brain = tasoAivot1;
311    }
312
313    void LisaaPahaKirkle(Vector paikka, double leveys, double korkeus)
314    {
315        Vihu pahaKirkle = new Vihu(leveys, korkeus);
316        pahaKirkle.Position = paikka;
317        pahaKirkle.Color = Color.Purple;
318        pahaKirkle.Animation = new Animation(pahaKirkleWalk);
319        pahaKirkle.Animation.Start();
320        pahaKirkle.Animation.FPS = 7;
321        pahaKirkle.Tag = "vihollinen";
322        Add(pahaKirkle);
323
324        PlatformWandererBrain tasoAivot2 = new PlatformWandererBrain();
325        tasoAivot2.Speed = 100;
326        tasoAivot2.FallsOffPlatforms = false;
327        //tasoAivot1.TurnWhileMoving = false;
328
329        pahaKirkle.Brain = tasoAivot2;
330    }
331
332    void LisaaElamaLaskuri()
333    {
334        elamaLaskuri = new DoubleMeter(5);
335        elamaLaskuri.MaxValue = 5;
336        //elamaLaskuri.LowerLimit += ElamaLoppui;
337
338        ProgressBar elamaPalkki = new ProgressBar(150, 30);
339        elamaPalkki.X = Screen.Left + 20;
340        elamaPalkki.Y = Screen.Top - 20;
341        elamaPalkki.Angle = Angle.RightAngle;
342        elamaPalkki.Color = Color.Black;
343        elamaPalkki.BarColor = Color.Red;
344        elamaPalkki.BindTo(elamaLaskuri);
345        Add(elamaPalkki,3);
346    }
347
348    void LisaaKolikkoLaskuri()
349    {
350        kolikkoLaskuri = new IntMeter(0);
351
352        Label kolikkoNaytto = new Label();
353        kolikkoNaytto.Title = "Coin";
354        //kolikkoNaytto.InFormatString = "Coin: {0:D2}";
355        kolikkoNaytto.X = Screen.Right - 80;
356        kolikkoNaytto.Y = Screen.Top - 20;
357        kolikkoNaytto.TextColor = Color.White;
358        kolikkoNaytto.Color = Color.Transparent;
359
360        kolikkoNaytto.BindTo(kolikkoLaskuri);
361        Add(kolikkoNaytto);
362    }
363
364    void LisaaNappaimet()
365    {
366        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
367        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
368
369        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
370        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
371        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
372
373        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
374
375        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
376        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
377        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
378
379        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
380    }
381
382    void Liikuta(PlatformCharacter hahmo, double nopeus)
383    {
384        hahmo.Walk(nopeus);
385    }
386
387    void Hyppaa(PlatformCharacter hahmo, double nopeus)
388    {
389        hahmo.Jump(nopeus);
390        //pelaaja1.Image =
391    }
392
393    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
394    {
395        maaliAani.Play();
396        MessageDisplay.Add("Keräsit tähden!");
397        tahti.Destroy();
398    }
399
400    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject Vihu)
401    {
402        pelaaja1.Animation.FPS = 7;
403        pelaaja1.PlayAnimation(new Animation(kirkleKipu));
404    }
405
406    void TormaaLaavaan(PhysicsObject hahmo, PhysicsObject laava)
407    {
408
409    }
410}
Note: See TracBrowser for help on using the repository browser.