source: 2011/24/AkiR/Fight the Rambo/Fight the Rambo/Fight the Rambo/Peli.cs @ 10335

Revision 2924, 12.5 KB checked in by akosrahi, 7 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
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
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   
31
32    Image paikallaanVasemmalle = LoadImage("rambo2");
33    Image paikallaanOikealle;
34    Image[] kavelyVasemmalle = LoadImages("rambo2");
35    Image[] kavelyOikealle;
36
37    Image VihollinenpaikallaanVasemmalle = LoadImage("Nuhasotilas");
38    Image VihollinenpaikallaanOikealle;
39    Image[] VihollinenKavelyVasemmalle = LoadImages("Nuhasotilas");
40    Image[] VihollinenKavelyOikealle;
41
42    int kenttaNro = 1;
43
44    public override void Begin()
45    {
46
47        ClearAll();
48        Valikko();
49
50
51        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
52        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
53
54        VihollinenpaikallaanOikealle = Image.Mirror(VihollinenpaikallaanVasemmalle);
55        VihollinenKavelyOikealle = Image.Mirror(VihollinenKavelyVasemmalle);
56       
57
58
59
60    }
61
62    void SeuraavaKentta(int kentanNro)
63    {
64        ClearAll();
65        Gravity = new Vector(0, -1000);
66        MediaPlayer.Play("GameStarts");
67        if (kentanNro == 1) luoKentta1();
68        else if (kentanNro == 2) LuoKentta2();
69        else if (kentanNro == 3) LuoKentta3();
70        else if (kentanNro > 3) LuoKentta4();
71        else if (kentanNro > 4) Valikko();
72        lisaaNappaimet();
73        Camera.Follow(pelaaja1);
74        Camera.ZoomFactor = 2.0;
75        Camera.StayInLevel = true;
76
77
78    }
79
80
81
82
83
84
85    void luoKentta1()
86    {
87        lisaaPelaaja();
88   
89        TileMap kentta = TileMap.FromFile("kentta1.txt");
90        kentta['G'] = lisaaMaali;
91        kentta['E'] = lisaaVihollinen;
92        kentta['#'] = lisaaTaso;
93        kentta['N'] = lisaapelaajanPaikka;
94        kentta['S'] = LisaaPiikkilanka;
95        kentta['M'] = Lisaamaa;
96        kentta['F'] = LisaaAita;
97        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
98
99        pelaaja1.Position = pelaajanpaikka.Position;
100
101        Level.CreateBorders();
102        Level.Background.CreateGradient(Color.Brown, Color.Blue);
103    }
104    void LuoKentta2()
105    {
106        lisaaPelaaja();
107
108        TileMap kentta = TileMap.FromFile("TextFile2.txt");
109        kentta['G'] = lisaaMaali;
110        kentta['E'] = lisaaVihollinen;
111        kentta['#'] = Lisaamaa;
112        kentta['N'] = lisaapelaajanPaikka;
113        kentta['S'] = LisaaPiikkilanka;
114        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
115
116        pelaaja1.Position = pelaajanpaikka.Position;
117
118        Level.CreateBorders();
119        Level.Background.CreateGradient(Color.Brown, Color.Blue);
120    }
121   
122
123    void LuoKentta3()
124    {
125        lisaaPelaaja();
126
127        TileMap kentta = TileMap.FromFile("TextFile3.txt");
128        kentta['G'] = lisaaMaali;
129        kentta['E'] = lisaaVihollinen;
130        kentta['#'] = Lisaamaa;
131        kentta['N'] = lisaapelaajanPaikka;
132        kentta['S'] = LisaaPiikkilanka;
133        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
134
135        pelaaja1.Position = pelaajanpaikka.Position;
136
137        Level.CreateBorders();
138        Level.Background.CreateGradient(Color.Brown, Color.Blue);
139    }
140    void LuoKentta4()
141    {
142        lisaaPelaaja();
143
144        TileMap kentta = TileMap.FromFile("TextFile1.txt");
145        kentta['G'] = lisaaMaali;
146        kentta['E'] = lisaaVihollinen;
147        kentta['#'] = Lisaamaa;
148        kentta['N'] = lisaapelaajanPaikka;
149        kentta['S'] = LisaaPiikkilanka;
150        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
151
152        pelaaja1.Position = pelaajanpaikka.Position;
153
154        Level.CreateBorders();
155        Level.Background.CreateGradient(Color.Blue, Color.Black);
156    }
157    GameObject lisaapelaajanPaikka()
158    {
159        pelaajanpaikka = new GameObject(100, 150);
160        pelaajanpaikka.Image = LisaaPelaaajanKentallekuvan;
161        return pelaajanpaikka;
162    }
163
164    PhysicsObject lisaaTaso()
165    {
166        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
167        taso.Color = Color.Black;
168        return taso;
169    }
170
171    PlatformCharacter lisaaPelaaja()
172    {
173        pelaaja1 = new PlatformCharacter(40, 60);
174        pelaaja1.Mass = 4.0;
175        pelaaja1.Image = pelaajanKuva;
176
177        pelaaja1.Weapon = new AssaultRifle(50, 20);
178        pelaaja1.Weapon.Ammo.Value = 10;
179        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
180        pelaaja1.Weapon.Y = -5;
181        pelaaja1.Weapon.X = 0.5;
182
183        pelaaja1.RightIdleAnimation = new Animation(paikallaanVasemmalle);
184        pelaaja1.LeftIdleAnimation = new Animation(paikallaanOikealle);
185        pelaaja1.RightWalkingAnimation = new Animation(kavelyVasemmalle);
186        pelaaja1.LeftWalkingAnimation = new Animation(kavelyOikealle);
187        Add(pelaaja1, 1);
188
189        return pelaaja1;
190    }
191
192    void lisaaNappaimet()
193    {
194        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
195        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu pelistä");
196
197        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
198        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
199        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
200        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
201        Keyboard.Listen(Key.W, ButtonState.Down, TahtaaYlos, "Tähtää ylös rynnäkkökiväärillä");
202        Keyboard.Listen(Key.S, ButtonState.Down, TahtaaAlas, "Tähtää alas rynnäkkökiväärillä");
203    }
204
205    void liikuta(PlatformCharacter hahmo, double nopeus)
206    {
207        hahmo.Walk(nopeus);
208    }
209
210    void hyppaa(PlatformCharacter hahmo, double nopeus)
211    {
212        hahmo.Jump(nopeus);
213    }
214
215
216
217    void AmmuAseella()
218    {
219        PhysicsObject Ammus = pelaaja1.Weapon.Shoot();
220        if (Ammus != null)
221        {
222            Ammus.Size *= 1;
223            Ammus.IgnoresGravity = true;
224            Ammus.MaximumLifetime = TimeSpan.FromSeconds(3.1);
225            AddCollisionHandler(Ammus, KasitteleVihollinenKuoli);
226        }
227    }
228    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
229    {
230        Ammus.Destroy();
231        Explosion rajahdys = new Explosion(10);
232        rajahdys.Position = Ammus.Position;
233
234    }
235
236
237
238    PlatformCharacter lisaaVihollinen()
239    {
240        PlatformCharacter vihollinen = new PlatformCharacter(40, 80);
241        vihollinen.Mass = 0.05;
242        vihollinen.Image = vihollisenkuva;
243        vihollinen.Tag = ("vihollinen");
244        vihollinen.IgnoresGravity = false;
245
246        vihollinen.LeftIdleAnimation = new Animation(VihollinenpaikallaanVasemmalle);
247        vihollinen.RightIdleAnimation = new Animation(VihollinenpaikallaanOikealle);
248        vihollinen.LeftWalkingAnimation = new Animation(VihollinenKavelyVasemmalle);
249        vihollinen.RightWalkingAnimation = new Animation(VihollinenKavelyOikealle);
250        vihollinen.CanMoveOnAir = true;
251
252
253
254        FollowerBrain seuraajanAivot = new FollowerBrain();
255        seuraajanAivot.Target = pelaaja1;
256        seuraajanAivot.Speed = 100;
257        seuraajanAivot.StopWhenTargetClose = false;
258        seuraajanAivot.TargetFollowDistance = 50;
259        seuraajanAivot.FollowAlways = true;
260        seuraajanAivot.Active = true;
261        vihollinen.Brain = seuraajanAivot;
262
263        AddCollisionHandler(vihollinen, VihollinenOsui);
264        return vihollinen;
265    }
266
267    void VihollinenOsui(PhysicsObject vihollinen, PhysicsObject kohde)
268    {
269        if (kohde == pelaaja1)
270        {
271            Explosion rajahdys = new Explosion(100);
272            rajahdys.Position = pelaaja1.Position;
273            Add(rajahdys);
274            rajahdys.Speed = 250.0;
275            rajahdys.Force = 10000;
276            rajahdys.ShockwaveColor = Color.Red;
277            pelaaja1.Destroy();
278            Begin();
279        }
280    }
281    void KasitteleVihollinenKuoli(PhysicsObject Ammus, PhysicsObject kohde)
282    {
283        if (kohde.Tag.ToString() == "vihollinen")
284        {
285            MediaPlayer.Play("kill");
286            kohde.Destroy();
287
288        }
289
290    }
291    PhysicsObject lisaaMaali()
292    {
293        PhysicsObject Maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
294        Maali.Image = maalinkuva;
295        AddCollisionHandler(Maali, KasitteleMaaliinTulo);
296        return Maali;
297
298    }
299
300    void KasitteleMaaliinTulo(PhysicsObject Maali, PhysicsObject kohde)
301    {
302        if (kohde == pelaaja1)
303        {
304            kenttaNro++;
305            SeuraavaKentta(kenttaNro);
306        }
307    }
308    void Valikko()
309    {
310        ClearAll();
311
312        Level.Background.Image = tekstinkuva;
313        valikonKohdat = new List<Label>();
314
315        Label kohta1 = new Label("Aloita kenttä");
316        kohta1.Position = new Vector(300, -20);
317        valikonKohdat.Add(kohta1);
318
319        Label kohta2 = new Label("Lopeta");
320        kohta2.Position = new Vector(300, -60);
321        valikonKohdat.Add(kohta2);
322        MediaPlayer.Play("the_matrix_-_theme_song_clubbed_to_death-gt3OptaZ20Q_fmt34");
323
324        foreach (Label valikonKohta in valikonKohdat)
325        {
326            Add(valikonKohta);
327        }
328
329        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, SeuraavaKentta, null, kenttaNro);
330        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
331
332        Mouse.IsCursorVisible = true;
333        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
334        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
335    }
336
337    void ValikossaLiikkuminen(AnalogState hiirenTila)
338    {
339        foreach (Label kohta in valikonKohdat)
340        {
341            if (Mouse.IsCursorOn(kohta))
342            {
343                kohta.TextColor = Color.Yellow;
344            }
345            else
346            {
347                kohta.TextColor = Color.YellowGreen;
348            }
349
350        }
351    }
352    void AloitaPeli()
353    {
354        ClearAll();
355        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
356
357    }
358    PhysicsObject LisaaPiikkilanka()
359    {
360        PhysicsObject Piikkilanka = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
361        Piikkilanka.Image = piikkilangankuva;
362        AddCollisionHandler(Piikkilanka, PiikkilankaanTormays);
363        return Piikkilanka;
364    }
365
366    PhysicsObject Lisaamaa()
367    {
368        PhysicsObject maa = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
369        maa.Image = maankuva;
370        return maa;
371    }
372
373    PhysicsObject LisaaAita()
374    {
375        PhysicsObject Aita = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
376        Aita.Image = aidankuva;
377        Aita.IgnoresCollisionResponse = true;
378        //Add(Aita, -2);
379        return Aita;
380    }
381
382    void PiikkilankaanTormays(PhysicsObject Piikkilanka, PhysicsObject kohde)
383    {
384        if (kohde == pelaaja1)
385        {
386            Explosion rajahdys = new Explosion(100);
387            rajahdys.Position = pelaaja1.Position;
388            Add(rajahdys);
389            rajahdys.Speed = 250.0;
390            rajahdys.Force = 10000;
391            rajahdys.ShockwaveColor = Color.Red;
392            kohde.Destroy();
393            Begin();
394
395        }
396    }
397
398    void TahtaaYlos()
399    {
400        if (pelaaja1.FacingDirection == Direction.Right)
401        {
402            pelaaja1.Weapon.Angle += Angle.FromDegrees(6);
403        }
404        if (pelaaja1.FacingDirection == Direction.Left)
405        {
406            pelaaja1.Weapon.Angle += Angle.FromDegrees(-6);
407        }
408    }
409
410    void TahtaaAlas()
411    {
412        if (pelaaja1.FacingDirection == Direction.Right)
413        {
414            pelaaja1.Weapon.Angle += Angle.FromDegrees(-6);
415        }
416        if (pelaaja1.FacingDirection == Direction.Left)
417        {
418            pelaaja1.Weapon.Angle += Angle.FromDegrees(6);
419        }
420    }
421}
Note: See TracBrowser for help on using the repository browser.