source: 2012/24/AkiR/Fight the Rambo/Fight the Rambo/Fight the Rambo/Peli.cs @ 2966

Revision 2966, 15.7 KB checked in by akosrahi, 8 years ago (diff)

Tein kotona vähän lisäyksiä ja muutama ongelmallinen kohtakin tuli spotattua :D

Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9
10public class Peli : PhysicsGame
11{
12    const double nopeus = 300;
13    const double hyppyNopeus = 750;
14    const int RUUDUN_KOKO = 30;
15    PlatformCharacter pelaaja1;
16    GameObject pelaajanpaikka;
17    PlatformCharacter vihollinen;
18    PlatformCharacter Maali;
19    PlatformCharacter Piikkilanka;
20    List<Label> valikonKohdat;
21    IntMeter ammusLaskuri;
22    Image tekstinkuva = LoadImage("TEKSTI");
23    Image piikkilangankuva = LoadImage("spikewire");
24    Image pelaajanKuva = LoadImage("rambo2");
25    Image vihollisenkuva = LoadImage("Nuhasotilas");
26    Image maalinkuva = LoadImage("goal");
27    Image LisaaPelaaajanKentallekuvan = LoadImage("sponer");
28    Image maankuva = LoadImage("ground");
29    Image aidankuva = LoadImage("fence");
30    Image KullanKuva = LoadImage("Kulta");
31    Image AmmuksenKuva = LoadImage("Ammus");
32   
33
34    Image paikallaanVasemmalle = LoadImage("rambo2");
35    Image paikallaanOikealle;
36    Image[] kavelyVasemmalle = LoadImages("rambo2");
37    Image[] kavelyOikealle;
38
39    Image VihollinenpaikallaanVasemmalle = LoadImage("Nuhasotilas");
40    Image VihollinenpaikallaanOikealle;
41    Image[] VihollinenKavelyVasemmalle = LoadImages("Nuhasotilas");
42    Image[] VihollinenKavelyOikealle;
43
44    IntMeter pisteLaskuri;
45
46    DoubleMeter voimaMittari;
47
48    int kenttaNro = 1;
49
50    public override void Begin()
51    {
52
53        ClearAll();
54        Valikko();
55
56
57        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
58        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
59
60        VihollinenpaikallaanOikealle = Image.Mirror(VihollinenpaikallaanVasemmalle);
61        VihollinenKavelyOikealle = Image.Mirror(VihollinenKavelyVasemmalle);
62
63
64
65
66         
67       
68    }
69
70    void SeuraavaKentta(int kentanNro)
71    {
72        ClearAll();
73        Gravity = new Vector(0, -1000);
74        MediaPlayer.Play("GameStarts");
75        LuoLaskuri();
76        if (kentanNro == 1) luoKentta1();
77        else if (kentanNro == 2) LuoKentta2();
78        else if (kentanNro == 3) LuoKentta3();
79        else if (kentanNro > 3) LuoKentta4();
80        else if (kentanNro > 4) Valikko();
81        lisaaNappaimet();
82        LuoAmmusLaskuri();
83        LisaavoimaMittari();
84        Camera.Follow(pelaaja1);
85        Camera.ZoomFactor = 2.0;
86        Camera.StayInLevel = true;
87
88       
89    }
90
91    void luoKentta1()
92    {
93        lisaaPelaaja(20);
94   
95        TileMap kentta = TileMap.FromFile("kentta1.txt");
96        kentta['G'] = lisaaMaali;
97        kentta['E'] = lisaaVihollinen;
98        kentta['#'] = lisaaTaso;
99        kentta['N'] = lisaapelaajanPaikka;
100        kentta['S'] = LisaaPiikkilanka;
101        kentta['M'] = Lisaamaa;
102        kentta['F'] = LisaaAita;
103        kentta['A'] = LisaaAmmusPaketti;
104        kentta['T'] = LisaaKulta;
105        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
106
107        pelaaja1.Position = pelaajanpaikka.Position;
108
109        Level.CreateBorders();
110        Level.Background.CreateGradient(Color.Brown, Color.Blue);
111    }
112    void LuoKentta2()
113    {
114        lisaaPelaaja(20);
115
116        TileMap kentta = TileMap.FromFile("TextFile2.txt");
117        kentta['G'] = lisaaMaali;
118        kentta['E'] = lisaaVihollinen;
119        kentta['#'] = Lisaamaa;
120        kentta['N'] = lisaapelaajanPaikka;
121        kentta['S'] = LisaaPiikkilanka;
122        kentta['F'] = LisaaAita;
123        kentta['A'] = LisaaAmmusPaketti;
124        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
125
126        pelaaja1.Position = pelaajanpaikka.Position;
127
128        Level.CreateBorders();
129        Level.Background.CreateGradient(Color.Brown, Color.Blue);
130    }
131   
132
133    void LuoKentta3()
134    {
135        lisaaPelaaja(20);
136
137        TileMap kentta = TileMap.FromFile("TextFile3.txt");
138        kentta['G'] = lisaaMaali;
139        kentta['E'] = lisaaVihollinen;
140        kentta['#'] = Lisaamaa;
141        kentta['N'] = lisaapelaajanPaikka;
142        kentta['S'] = LisaaPiikkilanka;
143        kentta['F'] = LisaaAita;
144        kentta['A'] = LisaaAmmusPaketti;
145        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
146
147        pelaaja1.Position = pelaajanpaikka.Position;
148
149        Level.CreateBorders();
150        Level.Background.CreateGradient(Color.Brown, Color.Blue);
151    }
152    void LuoKentta4()
153    {
154        lisaaPelaaja(20);
155
156        TileMap kentta = TileMap.FromFile("TextFile1.txt");
157        kentta['G'] = lisaaMaali;
158        kentta['E'] = lisaaVihollinen;
159        kentta['#'] = Lisaamaa;
160        kentta['N'] = lisaapelaajanPaikka;
161        kentta['S'] = LisaaPiikkilanka;
162        kentta['F'] = LisaaAita;
163        kentta['A'] = LisaaAmmusPaketti;
164        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
165
166        pelaaja1.Position = pelaajanpaikka.Position;
167
168        Level.CreateBorders();
169        Level.Background.CreateGradient(Color.Blue, Color.Black);
170    }
171    GameObject lisaapelaajanPaikka()
172    {
173        pelaajanpaikka = new GameObject(100, 150);
174        pelaajanpaikka.Image = LisaaPelaaajanKentallekuvan;
175        return pelaajanpaikka;
176    }
177
178    PhysicsObject lisaaTaso()
179    {
180        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
181        taso.Color = Color.Black;
182        return taso;
183    }
184
185    PlatformCharacter lisaaPelaaja(int ammukset)
186    {
187        pelaaja1 = new PlatformCharacter(40, 60);
188        pelaaja1.Mass = 4.0;
189        pelaaja1.Image = pelaajanKuva;
190
191        pelaaja1.Weapon = new AssaultRifle(50, 20);
192        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
193        pelaaja1.Weapon.Ammo.Value = ammukset;
194        pelaaja1.Weapon.Y = -5;
195        pelaaja1.Weapon.X = 0.5;
196
197        pelaaja1.RightIdleAnimation = new Animation(paikallaanVasemmalle);
198        pelaaja1.LeftIdleAnimation = new Animation(paikallaanOikealle);
199        pelaaja1.RightWalkingAnimation = new Animation(kavelyVasemmalle);
200        pelaaja1.LeftWalkingAnimation = new Animation(kavelyOikealle);
201        Add(pelaaja1, 1);
202
203        AddCollisionHandler(pelaaja1, VihollinenOsui);
204
205        return pelaaja1;
206    }
207
208    void lisaaNappaimet()
209    {
210        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
211        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu pelistä");
212
213        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
214        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
215        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
216        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
217        Keyboard.Listen(Key.W, ButtonState.Down, TahtaaYlos, "Tähtää ylös rynnäkkökiväärillä");
218        Keyboard.Listen(Key.S, ButtonState.Down, TahtaaAlas, "Tähtää alas rynnäkkökiväärillä");
219    }
220
221    void liikuta(PlatformCharacter hahmo, double nopeus)
222    {
223        hahmo.Walk(nopeus);
224    }
225
226    void hyppaa(PlatformCharacter hahmo, double nopeus)
227    {
228        hahmo.Jump(nopeus);
229    }
230
231
232
233    void AmmuAseella()
234    {
235            PhysicsObject Ammus = pelaaja1.Weapon.Shoot();
236            if (Ammus != null)
237            {
238                Ammus.Size *= 1;
239                Ammus.IgnoresGravity = true;
240                Ammus.MaximumLifetime = TimeSpan.FromSeconds(4.1);
241                AddCollisionHandler(Ammus, KasitteleVihollinenKuoli);
242            }
243    }
244    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
245    {
246       
247        Explosion rajahdys = new Explosion(50);
248        rajahdys.Position = Ammus.Position;
249        Ammus.Destroy();
250    }
251
252   
253   
254
255
256    PlatformCharacter lisaaVihollinen()
257    {
258        PlatformCharacter vihollinen = new PlatformCharacter(40, 80);
259        vihollinen.Mass = 0.05;
260        vihollinen.Image = vihollisenkuva;
261        vihollinen.Tag = ("vihollinen");
262        vihollinen.IgnoresGravity = false;
263
264        vihollinen.LeftIdleAnimation = new Animation(VihollinenpaikallaanVasemmalle);
265        vihollinen.RightIdleAnimation = new Animation(VihollinenpaikallaanOikealle);
266        vihollinen.LeftWalkingAnimation = new Animation(VihollinenKavelyVasemmalle);
267        vihollinen.RightWalkingAnimation = new Animation(VihollinenKavelyOikealle);
268        vihollinen.CanMoveOnAir = true;
269
270
271
272        FollowerBrain seuraajanAivot = new FollowerBrain();
273        seuraajanAivot.Target = pelaaja1;
274        seuraajanAivot.Speed = 100;
275        seuraajanAivot.StopWhenTargetClose = false;
276        seuraajanAivot.TargetFollowDistance = 50;
277        seuraajanAivot.FollowAlways = true;
278        seuraajanAivot.Active = true;
279        vihollinen.Brain = seuraajanAivot;
280
281        AddCollisionHandler(vihollinen, VihollinenOsui);
282        return vihollinen;
283    }
284
285    void VihollinenOsui(PhysicsObject vihollinen, PhysicsObject kohde)
286    {
287        if (kohde == pelaaja1)
288        {
289            pelaaja1.Destroy();
290
291            Begin();
292        }
293    }
294   
295    void KasitteleVihollinenKuoli(PhysicsObject Ammus, PhysicsObject kohde)
296    {
297        if (kohde.Tag.ToString() == "vihollinen")
298        {
299            MediaPlayer.Play("kill");
300            kohde.Destroy();
301
302        }
303
304    }
305    PhysicsObject lisaaMaali()
306    {
307        PhysicsObject Maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
308        Maali.Image = maalinkuva;
309        AddCollisionHandler(Maali, KasitteleMaaliinTulo);
310        return Maali;
311
312    }
313
314    PhysicsObject LisaaAmmusPaketti()
315    {
316       PhysicsObject AmmusPaketti = new PhysicsObject(20, 20);
317        AmmusPaketti.Image = AmmuksenKuva;
318        AmmusPaketti.Mass = (50);
319       AddCollisionHandler(pelaaja1, AmmusPaketti, KeraaAmmus);
320
321
322        return AmmusPaketti;
323
324    }
325
326    PhysicsObject LisaaKulta()
327    {
328        PhysicsObject Kulta = new PhysicsObject(50, 50);
329        Kulta.Image = KullanKuva;
330        Kulta.Mass = (50);
331        //KYSY APUA!!
332        //AddCollisionHandler(pelaaja1, Kulta, Keraakulta);
333
334        return Kulta;
335    }
336
337    void KeraaAmmus(IPhysicsObject pelaaja1, IPhysicsObject AmmusPaketti)
338    {
339        (pelaaja1 as PlatformCharacter).Weapon.Ammo.Value += 5;
340        AmmusPaketti.Destroy();
341       
342    }
343
344   //KYSY APUA!!
345
346   // void Keraakulta(IPhysicsObject pelaaja1, IPhysicsObject Kulta)
347   // {
348     // (pelaaja1 as PlatformCharacter)?.Value += 100;
349  // }
350
351    void KasitteleMaaliinTulo(PhysicsObject Maali, PhysicsObject kohde)
352    {
353        if (kohde == pelaaja1)
354        {
355            kenttaNro++;
356            SeuraavaKentta(kenttaNro);
357        }
358    }
359    void Valikko()
360    {
361        ClearAll();
362
363        Level.Background.Image = tekstinkuva;
364        valikonKohdat = new List<Label>();
365
366        Label kohta1 = new Label("Aloita kenttä");
367        kohta1.Position = new Vector(300, -20);
368        valikonKohdat.Add(kohta1);
369
370        Label kohta2 = new Label("Lopeta");
371        kohta2.Position = new Vector(300, -60);
372        valikonKohdat.Add(kohta2);
373        MediaPlayer.Play("the_matrix_-_theme_song_clubbed_to_death-gt3OptaZ20Q_fmt34");
374
375        foreach (Label valikonKohta in valikonKohdat)
376        {
377            Add(valikonKohta);
378        }
379
380        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, SeuraavaKentta, null, kenttaNro);
381        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
382
383        Mouse.IsCursorVisible = true;
384        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
385        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
386    }
387
388    void ValikossaLiikkuminen(AnalogState hiirenTila)
389    {
390        foreach (Label kohta in valikonKohdat)
391        {
392            if (Mouse.IsCursorOn(kohta))
393            {
394                kohta.TextColor = Color.Yellow;
395            }
396            else
397            {
398                kohta.TextColor = Color.YellowGreen;
399            }
400
401        }
402    }
403    void AloitaPeli()
404    {
405        ClearAll();
406        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
407
408    }
409    PhysicsObject LisaaPiikkilanka()
410    {
411        PhysicsObject Piikkilanka = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
412        Piikkilanka.Image = piikkilangankuva;
413        AddCollisionHandler(Piikkilanka, PiikkilankaanTormays);
414        return Piikkilanka;
415    }
416
417    PhysicsObject Lisaamaa()
418    {
419        PhysicsObject maa = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
420        maa.Image = maankuva;
421        return maa;
422    }
423
424    PhysicsObject LisaaAita()
425    {
426        PhysicsObject Aita = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
427        Aita.Image = aidankuva;
428        Aita.IgnoresCollisionResponse = true;
429        Aita.MakeStatic();
430        return Aita;
431    }
432
433    void PiikkilankaanTormays(PhysicsObject Piikkilanka, PhysicsObject kohde)
434    {
435        if (kohde == pelaaja1)
436        {
437            Explosion rajahdys = new Explosion(100);
438            rajahdys.Position = pelaaja1.Position;
439            Add(rajahdys);
440            rajahdys.Speed = 250.0;
441            rajahdys.Force = 10000;
442            rajahdys.ShockwaveColor = Color.Red;
443            kohde.Destroy();
444            Begin();
445
446        }
447    }
448
449    void TahtaaYlos()
450    {
451        if (pelaaja1.FacingDirection == Direction.Right)
452        {
453            pelaaja1.Weapon.Angle += Angle.FromDegrees(6);
454        }
455        if (pelaaja1.FacingDirection == Direction.Left)
456        {
457            pelaaja1.Weapon.Angle += Angle.FromDegrees(-6);
458        }
459    }
460
461    void TahtaaAlas()
462    {
463        if (pelaaja1.FacingDirection == Direction.Right)
464        {
465            pelaaja1.Weapon.Angle += Angle.FromDegrees(-6);
466        }
467        if (pelaaja1.FacingDirection == Direction.Left)
468        {
469            pelaaja1.Weapon.Angle += Angle.FromDegrees(6);
470        }
471    }
472
473    void LuoAmmusLaskuri()
474    {
475        ammusLaskuri = new IntMeter(0);
476
477        Label ammusNaytto = new Label();
478        ammusNaytto.X = Screen.Right - 100;
479        ammusNaytto.Y = Screen.Top - 100;
480        ammusNaytto.TextColor = Color.Black;
481        ammusNaytto.BindTo(pelaaja1.Weapon.Ammo);     
482        Add(ammusNaytto);
483
484        Label ammusTeksti = new Label("Ammuksia jäljellä: ");
485        ammusTeksti.X = Screen.Right - 200;
486        ammusTeksti.Y = Screen.Top - 100;
487        ammusTeksti.TextColor = Color.Black;
488        Add(ammusTeksti);
489    }
490   
491
492    void LuoLaskuri()
493    {
494        pisteLaskuri = new IntMeter(0);
495        Label pisteNaytto = new Label();
496        pisteNaytto.X = Screen.Left + 200;
497        pisteNaytto.Y = Screen.Top - 100;
498        pisteNaytto.TextColor = Color.Black;
499        pisteNaytto.BindTo(pisteLaskuri);
500        Add(pisteNaytto);
501
502        Label pisteTeksti = new Label("Pisteet: ");
503        pisteTeksti.X = Screen.Left + 150;
504        pisteTeksti.Y = Screen.Top - 100;
505        pisteTeksti.TextColor = Color.Black;
506        Add(pisteTeksti);
507    }
508
509    void LisaavoimaMittari()
510    {
511
512        voimaMittari = new DoubleMeter(10);
513        voimaMittari.MaxValue = 10;
514        ProgressBar voimaPalkki = new ProgressBar(150, 10);
515        voimaPalkki.BindTo(voimaMittari);
516        Add(voimaPalkki);
517
518
519        voimaPalkki.X = Screen.Right - 700;
520        voimaPalkki.Y = Screen.Top - 100;
521        voimaPalkki.Angle = Angle.RightAngle;
522        voimaPalkki.BarColor = Color.Green;
523        voimaPalkki.BorderColor = Color.White;
524        voimaPalkki.Angle = Angle.FromDegrees(180);
525
526        Label voimaTeksti = new Label(" Terveys: ");
527        voimaTeksti.X = Screen.Right - 850;
528        voimaTeksti.Y = Screen.Top - 100;
529        voimaTeksti.TextColor = Color.Black;
530        Add(voimaTeksti);
531
532    }
533
534
535}
Note: See TracBrowser for help on using the repository browser.