source: 2013/27/AkiP/Kirkle/Kirkle/Abilly.cs @ 4401

Revision 4401, 16.7 KB checked in by akeepylv, 8 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Pelaaja : PlatformCharacter
10{
11    public double Liikkumisnopeus { get; set; }
12    public double Hyppynopeus { get; set; }
13    public bool VoiLiidella = false;
14    public Pelaaja(double leveys, double korkeus)
15        : base(leveys, korkeus)
16    {
17
18    }
19
20}
21
22public class Abilly : PhysicsGame
23{
24    const int RUUDUN_KOKO = 40;
25
26    Pelaaja pelaaja1;
27
28    IntMeter pisteLaskuri;
29    IntMeter hedelmaLaskuri;
30    //DoubleMeter elamaLaskuri;
31   
32    Image pelaajanKuva = LoadImage("AbillyIdle");
33
34    private Image[] AbillyKavely = LoadImages("AbillyWalking-1", "AbillyWalking-2", "AbillyWalking-3", "AbillyWalking-4");
35    private Image[] AbillyHyppy = LoadImages("AbillyJump-1", "AbillyJump-2");
36    private Image[] AbillyPudotus = LoadImages("AbillyFall-1", "AbillyFall-2");
37    private Image[] AbillyIdle = LoadImages("AbillyIdle");
38    private Image[] AbillyKyyristys = LoadImages("AbillyCrouch");
39    private Image[] kirkleKipu = LoadImages("KirkleKipu2", "KirkleKipu1", "KirkleKipu2", "KirkleKipu1", "KirkleKipu2", "KirkleKipu1", "KirkleKipu2");
40    private Image[] HuiviPropelliLiike = LoadImages("ScarfPropeller-1", "ScarfPropeller-2");
41
42    private Image[] kasviVihuWalk = LoadImages("KasviVihuKavely1", "KasviVihuKavely2", "KasviVihuKavely1", "KasviVihuKavely3");
43    private Image[] EvilKirkleWalk = LoadImages("EvilKirkleWalking-1", "EvilKirkleWalking-2", "EvilKirkleWalking-1", "EvilKirkleWalking-3");
44   
45    private Image[] maalianimaatio = LoadImages("Maali1", "Maali2", "Maali3");
46
47    Image hyokkaysKuva = LoadImage("AbillyAttack");
48    Image huivinKuva = LoadImage("ScarfWhip");
49
50    Image tahtiKuva = LoadImage("Fruit");
51    Image laatikkoKuva = LoadImage("Box");
52    Image sydanKuva = LoadImage("");
53
54    Image ruohoKuva = LoadImage("Ruoho2");
55    Image ruohoOikeaYlaKuva = LoadImage("RuohoOikeaYla");
56    Image ruohoVasenYlaKuva = LoadImage("RuohoVasenYla");
57    Image ruohoKattoKuva = LoadImage("RuohoKatto");
58    Image ruohoKattoVasenKuva = LoadImage("RuohoKattoVasen");
59    Image ruohoKattoOikeaKuva = LoadImage("RuohoKattoOikea");
60    Image ruohoSeinaKuva = LoadImage("RuohoSeina");
61
62    Image maaKuva = LoadImage("Maa2");
63    Image maaVasenReunaKuva = LoadImage("MaaVasenReuna");
64    Image maaOikeaReunaKuva = LoadImage("MaaOikeaReuna");
65    Image maaVasenAlaKulmaKuva = LoadImage("MaaVasenAlaKulma");
66    Image maaOikeaAlaKulmaKuva = LoadImage("MaaOikeaAlaKulma");
67    Image maaAlaReunaKuva = LoadImage("MaaAlaReuna");
68    Image maaSeinaKuva = LoadImage("MaaSeina");
69
70    Image piikkiKuva = LoadImage("Spike");
71
72    Image puuYlaKuva = LoadImage("PuuYla");
73    Image puuKeskiKuva = LoadImage("PuuKeski");
74    Image puuAlaKuva = LoadImage("PuuAla");
75
76    SoundEffect maaliAani = LoadSoundEffect("maali");
77
78    int kenttaNro = 1;
79
80    public override void Begin()
81    {
82        SeuraavaKentta();
83
84        //LuoElamaLaskuri();
85        LuoPisteLaskuri();
86        LuoHedelmaLaskuri();
87    }
88
89    void SeuraavaKentta()
90    {
91        ClearAll();
92
93        Gravity = new Vector(0, -1500);
94        if (kenttaNro == 1) LuoKentta("kentta1");
95        else if (kenttaNro == 2) LuoKentta("kentta2");
96        else if (kenttaNro > 2) Exit();
97
98        Camera.Follow(pelaaja1);
99        Camera.Zoom(2.1);
100        Camera.StayInLevel = true;
101
102        //LisaaElamaLaskuri();
103        LisaaNappaimet();
104    }
105
106    void LuoKentta(String kentanNimi)
107    {
108        TileMap kentta = TileMap.FromLevelAsset(kentanNimi);
109        kentta.SetTileMethod('/', LisaaTaso, ruohoKuva);
110        kentta.SetTileMethod('J', LisaaTaso, ruohoOikeaYlaKuva);
111        kentta.SetTileMethod('E', LisaaTaso, ruohoVasenYlaKuva);
112        kentta.SetTileMethod('T', LisaaTaso, ruohoKattoKuva);
113        kentta.SetTileMethod('I', LisaaTaso, ruohoKattoOikeaKuva);
114        kentta.SetTileMethod('P', LisaaTaso, ruohoKattoVasenKuva);
115        kentta.SetTileMethod('L', LisaaTaso, ruohoSeinaKuva);
116
117        kentta.SetTileMethod('#', LisaaMaa, maaKuva);
118        kentta.SetTileMethod('Q', LisaaMaa, maaVasenReunaKuva);
119        kentta.SetTileMethod('A', LisaaMaa, maaOikeaReunaKuva);
120        kentta.SetTileMethod('Z', LisaaMaa, maaVasenAlaKulmaKuva);
121        kentta.SetTileMethod('X', LisaaMaa, maaOikeaAlaKulmaKuva);
122        kentta.SetTileMethod('V', LisaaMaa, maaAlaReunaKuva);
123        kentta.SetTileMethod('O', LisaaMaa, maaSeinaKuva);
124
125        kentta.SetTileMethod('S', LisaaPiikki);
126        kentta.SetTileMethod('*', LisaaTahti);
127        kentta.SetTileMethod('B', LisaaLaatikko);
128        kentta.SetTileMethod('G', LisaaMaali);
129
130        kentta.SetTileMethod('H', LisaaTaustaobjekti, puuYlaKuva);
131        kentta.SetTileMethod('C', LisaaTaustaobjekti, puuKeskiKuva);
132        kentta.SetTileMethod('D', LisaaTaustaobjekti, puuAlaKuva);
133
134        kentta.SetTileMethod('N', LisaaPelaaja);
135        kentta.SetTileMethod('1', LisaaOcto);
136        kentta.SetTileMethod('2', LisaaEvilKirkle);
137        kentta.SetTileMethod('3', LisaaVartija);
138
139        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
140        Level.CreateBorders();
141        if (kentanNimi.Equals("kentta1"))
142            Level.Background.Color = Color.LightBlue;
143        if (kentanNimi.Equals("kentta2"))
144            Level.Background.Color = Color.Black;
145    }
146
147    void LisaaTaso(Vector paikka, double leveys, double korkeus, Image lisattavaKuva)
148    {
149        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
150        taso.Position = paikka;
151        taso.Color = Color.Green;
152        taso.Image = lisattavaKuva;
153        taso.CollisionIgnoreGroup = 1;
154        Add(taso);
155    }
156
157    void LisaaMaa(Vector paikka, double leveys, double korkeus, Image lisattavaKuva)
158    {
159        PhysicsObject maa = PhysicsObject.CreateStaticObject(leveys, korkeus);
160        maa.Position = paikka;
161        maa.Color = Color.DarkBrown;
162        maa.Image = lisattavaKuva;
163        maa.CollisionIgnoreGroup = 1;
164        Add(maa);
165    }
166
167    void LisaaPiikki(Vector paikka, double leveys, double korkeus)
168    {
169        PhysicsObject piikki = PhysicsObject.CreateStaticObject(leveys, korkeus);
170        piikki.Position = paikka;
171        piikki.Color = Color.Gray;
172        piikki.Image = piikkiKuva;
173        piikki.CollisionIgnoreGroup = 1;
174        Add(piikki);
175    }
176
177    void LisaaTahti(Vector paikka, double leveys, double korkeus)
178    {
179        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys * 0.55, korkeus * 0.9);
180        tahti.IgnoresCollisionResponse = true;
181        tahti.Position = paikka;
182        tahti.Image = tahtiKuva;
183        tahti.Tag = "tahti";
184        Add(tahti);
185    }
186
187    void LisaaLaatikko(Vector paikka, double leveys, double korkeus)
188    {
189        PhysicsObject laatikko = new PhysicsObject(leveys * 3, korkeus * 3);
190        laatikko.Position = paikka;
191        laatikko.Mass = 10.0;
192        laatikko.Color = Color.DarkBrown;
193        laatikko.Image = laatikkoKuva;
194        Add(laatikko);
195    }
196
197    void LisaaMaali(Vector paikka, double leveys, double korkeus)
198    {
199        PhysicsObject maali = PhysicsObject.CreateStaticObject(leveys, korkeus);
200        maali.Position = paikka;
201        maali.Color = Color.Magenta;
202        maali.Animation = new Animation(maalianimaatio);
203        maali.Animation.Start();
204        maali.Animation.FPS = 5;
205        maali.CollisionIgnoreGroup = 1;
206        maali.Tag = "maali";
207        Add(maali);
208    }
209
210    void LisaaTaustaobjekti(Vector paikka, double leveys, double korkeus, Image lisattavaKuva)
211    {
212        PhysicsObject taustaobjekti = PhysicsObject.CreateStaticObject(leveys, korkeus);
213        taustaobjekti.Position = paikka;
214        taustaobjekti.Color = Color.JungleGreen;
215        taustaobjekti.CollisionIgnoreGroup = 2;
216        taustaobjekti.IgnoresGravity = true;
217        taustaobjekti.IgnoresPhysicsLogics = true;
218        taustaobjekti.IgnoresCollisionResponse = true;
219        taustaobjekti.Image = lisattavaKuva;
220        Add(taustaobjekti, -1);
221    }
222
223    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
224    {
225        pelaaja1 = new Pelaaja(leveys * 0.9, korkeus * 2);
226        pelaaja1.Liikkumisnopeus = 250;
227        pelaaja1.Hyppynopeus = 700;
228        pelaaja1.AnimWalk = new Animation(AbillyKavely);
229        pelaaja1.AnimJump = new Animation(AbillyHyppy);
230        pelaaja1.AnimFall = new Animation(AbillyPudotus);
231        pelaaja1.AnimIdle = new Animation(AbillyIdle);
232        //pelaaja1.Animation.Start();
233        //pelaaja1.Animation.Stop();
234        pelaaja1.AnimWalk.FPS = 7;
235        pelaaja1.AnimJump.FPS = 10;
236        pelaaja1.AnimFall.FPS = 10;
237        pelaaja1.Position = paikka;
238        pelaaja1.Mass = 4.0;
239        pelaaja1.Restitution = 0.1;
240        pelaaja1.Image = pelaajanKuva;
241        //pelaaja1.CollisionIgnoreGroup = 2;
242        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
243        AddCollisionHandler(pelaaja1, "vihollinen", TormaaVihuun);
244        AddCollisionHandler(pelaaja1, "maali", delegate(PhysicsObject p, PhysicsObject p2)
245        {
246            kenttaNro++;
247            SeuraavaKentta();
248        });
249        Add(pelaaja1);
250
251        //LisaaHuiviRuoska(Vector.Zero, leveys, korkeus);
252    }
253
254    void LisaaHuiviRuoska(double leveys, double korkeus)
255    {
256        PhysicsObject huiviRuoska = new PhysicsObject(leveys * 2, korkeus * 0.55);
257        huiviRuoska.X = pelaaja1.X + pelaaja1.Width / 2 + huiviRuoska.Width / 2;
258        huiviRuoska.Y = pelaaja1.Y + 7;
259        huiviRuoska.Image = huivinKuva;
260        huiviRuoska.Color = Color.Yellow;
261        huiviRuoska.LifetimeLeft = TimeSpan.FromMilliseconds(250);
262        huiviRuoska.IgnoresGravity = true;
263        huiviRuoska.IgnoresCollisionResponse = true;
264        Add(huiviRuoska);
265    }
266
267    /*void LisaaHuiviPropelli(double leveys, double korkeus)
268    {
269        PhysicsObject huiviPropelli = new PhysicsObject(leveys * 2, korkeus * 0.65);
270        huiviPropelli.Color = Color.DarkYellow;
271        huiviPropelli.IgnoresGravity = true;
272        huiviPropelli.IgnoresCollisionResponse = true;
273        Add(huiviPropelli);
274    }*/
275
276    void LisaaOcto(Vector paikka, double leveys, double korkeus)
277    {
278        Vihu octo = new Vihu(leveys, korkeus * 2);
279        octo.Position = paikka;
280        octo.Color = Color.Red;
281        //octo.Animation = new Animation(OctoWalk);
282        //octo.Animation.Start();
283        //octo.Animation.FPS = 7;
284        octo.CollisionIgnoreGroup = 2;
285        octo.Tag = "vihollinen";
286        Add(octo);
287
288        PlatformWandererBrain tasoAivot1 = new PlatformWandererBrain();
289        tasoAivot1.Speed = 75;
290        tasoAivot1.FallsOffPlatforms = false;
291        //tasoAivot1.TurnWhileMoving = false;
292
293        octo.Brain = tasoAivot1;
294    }
295
296    void LisaaEvilKirkle(Vector paikka, double leveys, double korkeus)
297    {
298        Vihu evilKirkle = new Vihu(leveys * 1.1, korkeus * 0.85);
299        evilKirkle.Position = paikka;
300        evilKirkle.Color = Color.Purple;
301        evilKirkle.Animation = new Animation(EvilKirkleWalk);
302        evilKirkle.Animation.Start();
303        evilKirkle.Animation.FPS = 7;
304        evilKirkle.Tag = "vihollinen";
305        Add(evilKirkle);
306
307        PlatformWandererBrain tasoAivot2 = new PlatformWandererBrain();
308        tasoAivot2.Speed = 100;
309        tasoAivot2.FallsOffPlatforms = false;
310        //tasoAivot2.TurnWhileMoving = false;
311
312        evilKirkle.Brain = tasoAivot2;
313    }
314
315    void LisaaVartija(Vector paikka, double leveys, double korkeus)
316    {
317        Vihu vartija = new Vihu(leveys * 3, korkeus * 3);
318        vartija.Position = paikka;
319        vartija.Color = Color.GreenYellow;
320        vartija.Tag = "vihollinen";
321        Add(vartija);
322    }
323
324    void LuoPisteLaskuri()
325    {
326        pisteLaskuri = new IntMeter(0);
327
328        Label pisteNaytto = new Label();
329        pisteNaytto.Title = "Score: {0:D6}";
330        pisteNaytto.X = Screen.Right - 200;
331        pisteNaytto.Y = Screen.Top - 50;
332        pisteNaytto.TextColor = Color.White;
333        pisteNaytto.Color = Color.Transparent;
334        pisteNaytto.BindTo(pisteLaskuri);
335        Add(pisteNaytto);
336    }
337
338    void LuoHedelmaLaskuri()
339    {
340        hedelmaLaskuri = new IntMeter(0);
341
342        Label hedelmaNaytto = new Label();
343        hedelmaNaytto.Title = "Fruits";
344        hedelmaNaytto.X = Screen.Right -600;
345        hedelmaNaytto.Y = Screen.Top - 50;
346        hedelmaNaytto.TextColor = Color.White;
347        hedelmaNaytto.Color = Color.Transparent;
348        hedelmaNaytto.BindTo(hedelmaLaskuri);
349        Add(hedelmaNaytto);
350    }
351
352    /*void LuoElamaLaskuri()
353    {
354        elamaLaskuri = new DoubleMeter(5);
355        elamaLaskuri.MaxValue = 5;
356        //elamaLaskuri.LowerLimit += ElamaLoppui;
357
358        Label elamapalkki = new Label();
359        ProgressBar elamaPalkki = new ProgressBar(150, 30);
360        elamaPalkki.X = Screen.Left + 100;
361        elamaPalkki.Y = Screen.Top - 100;
362        elamaPalkki.Angle = Angle.RightAngle;
363        elamaPalkki.BorderColor = Color.Black;
364        elamaPalkki.BarColor = Color.Red;
365        elamaPalkki.BindTo(elamaLaskuri);
366        Add(elamaPalkki, 3);
367    }*/
368
369    void LisaaNappaimet()
370    {
371        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
372        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
373
374        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -1);
375        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, 1);
376        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
377        Keyboard.Listen(Key.Up, ButtonState.Down, Liitele, "Pelaaja hyppää", pelaaja1);
378        Keyboard.Listen(Key.Up, ButtonState.Released, LopetaLiitely, "Liitelee huivipropellilla", pelaaja1);
379        Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyokkaa, "Iskee huiviruoskalla", pelaaja1);
380        //Keyboard.Listen(Key.Space, ButtonState.Released, RuoskaKatoaa, null, pelaaja1);
381        Keyboard.Listen(Key.Down, ButtonState.Pressed, Kyyristy, "Pelaaja kyyristyy", pelaaja1);
382        Keyboard.Listen(Key.Down, ButtonState.Released, Nouse, "Pelaaja kyyristyy", pelaaja1);
383        //Keyboard.Listen(Key.Down + Key.Left, ButtonState.Down, Ryomi, "Ryömii vasemmalle", pelaaja1, -nopeus);
384
385
386        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
387
388        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -1);
389        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, 1);
390        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1);
391        //ControllerOne.Listen(Button.A, ButtonState.Down, Liitele, "Liitelee huivipropellilla", pelaaja1);
392        ControllerOne.Listen(Button.Y, ButtonState.Pressed, Hyokkaa, "Iskee huiviruoskalla", pelaaja1);
393        ControllerOne.Listen(Button.DPadDown, ButtonState.Pressed, Kyyristy, "Pelaaja kyyristyy", pelaaja1);
394        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, Nouse, "Pelaaja kyyristyy", pelaaja1);
395        //ControllerOne.Listen();
396
397        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
398    }
399
400    void Liikuta(Pelaaja hahmo, int suunta)
401    {
402        hahmo.Walk(suunta * hahmo.Liikkumisnopeus);
403    }
404
405    void Hyppaa(Pelaaja hahmo)
406    {
407        hahmo.VoiLiidella = true;
408        hahmo.Jump(hahmo.Hyppynopeus);
409    }
410
411
412
413    void Hyokkaa(Pelaaja hahmo)
414    {
415        LisaaHuiviRuoska(RUUDUN_KOKO, RUUDUN_KOKO);
416        //pelaaja1.Image = hyokkaysKuva;
417    }
418
419    void Kyyristy(Pelaaja hahmo)
420    {
421        hahmo.Liikkumisnopeus /= 1.5;
422        hahmo.Size = new Vector(hahmo.Width * 1.7, hahmo.Height * 0.5);
423        hahmo.Animation = new Animation(AbillyKyyristys);
424        //hahmo.Animation.Start();
425    }
426    void Nouse(Pelaaja hahmo)
427    {
428        hahmo.Liikkumisnopeus *= 1.5;
429        hahmo.Size = new Vector(hahmo.Width / 1.7, hahmo.Height / 0.5);
430    }
431
432    void Liitele(Pelaaja hahmo)
433    {
434        if(hahmo.VoiLiidella && hahmo.Velocity.Y < 0)
435            hahmo.LinearDamping = 0.7;
436       
437    }
438
439    void LopetaLiitely(Pelaaja hahmo)
440    {
441        hahmo.LinearDamping = 1.0;
442    }
443
444    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
445    {
446        maaliAani.Play();
447        MessageDisplay.Add("Keräsit hedelmän!");
448        hedelmaLaskuri.Value += 1;
449        pisteLaskuri.Value += 100;
450        tahti.Destroy();
451    }
452
453    void TormaaVihuun(PhysicsObject hahmo, PhysicsObject Vihu)
454    {
455        //pelaaja1.Animation.FPS = 7;
456        //pelaaja1.PlayAnimation(new Animation(kirkleKipu));
457    }
458}
Note: See TracBrowser for help on using the repository browser.