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

Revision 2624, 12.4 KB checked in by akosrahi, 10 years ago (diff)

joo jotai sääätöö:DDDDD
ja vielä pientä laittoa

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