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

Revision 2130, 10.9 KB checked in by akosrahi, 8 years ago (diff)

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 = 200;
13    const double hyppyNopeus = 1000;
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    SoundEffect maaliAani = LoadSoundEffect("maali");
29
30    Image paikallaanVasemmalle = LoadImage("rambo2");
31    Image paikallaanOikealle;
32    Image[] kavelyVasemmalle = LoadImages("rambo2");
33    Image[] kavelyOikealle;
34
35    Image VihollinenpaikallaanVasemmalle = LoadImage("Nuhasotilas");
36    Image VihollinenpaikallaanOikealle;
37    Image[] VihollinenKavelyVasemmalle = LoadImages("Nuhasotilas");
38    Image[] VihollinenKavelyOikealle;
39
40    int kenttaNro = 1;
41
42    public override void Begin()
43    {
44
45        ClearAll();
46        Valikko();
47
48       
49        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
50        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
51
52        VihollinenpaikallaanOikealle = Image.Mirror(VihollinenpaikallaanVasemmalle);
53        VihollinenKavelyOikealle = Image.Mirror(VihollinenKavelyVasemmalle);
54       
55       
56
57    }
58
59    void SeuraavaKentta(int kentanNro)
60    {
61        ClearAll();
62        Gravity = new Vector(0, -1500);
63        MediaPlayer.Play("GameStarts");
64        if (kentanNro == 1) luoKentta1();
65        else if (kentanNro == 2) LuoKentta2();
66        else if (kentanNro == 3) LuoKentta3();
67        else if (kentanNro > 3) Valikko();
68        lisaaNappaimet(); 
69        Camera.Follow(pelaaja1);
70        Camera.ZoomFactor = 1.5;
71        Camera.StayInLevel = true;
72
73
74    }
75
76
77
78
79
80
81    void luoKentta1()
82    {
83        lisaaPelaaja();
84
85        TileMap kentta = TileMap.FromFile("kentta1.txt");
86        kentta['G'] = lisaaMaali;
87        kentta['E'] = lisaaVihollinen;
88        kentta['#'] = lisaaTaso;
89        kentta['N'] = lisaapelaajanPaikka;
90        kentta['S'] = LisaaPiikkilanka;
91        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
92
93        pelaaja1.Position = pelaajanpaikka.Position;
94
95        Level.CreateBorders();
96        Level.Background.CreateGradient(Color.DarkRed, Color.ForestGreen);
97    }
98    void LuoKentta2()
99    {
100        lisaaPelaaja();
101
102        TileMap kentta = TileMap.FromFile("TextFile2.txt");
103        kentta['G'] = lisaaMaali;
104        kentta['E'] = lisaaVihollinen;
105        kentta['#'] = lisaaTaso;
106        kentta['N'] = lisaapelaajanPaikka;
107        kentta['S'] = LisaaPiikkilanka;
108        kentta.Insert(RUUDUN_KOKO, RUUDUN_KOKO);
109
110        pelaaja1.Position = pelaajanpaikka.Position;
111
112        Level.CreateBorders();
113        Level.Background.CreateGradient(Color.Blue, Color.Black);
114    }
115    GameObject lisaapelaajanPaikka()
116    {
117        pelaajanpaikka = new GameObject(100, 150);
118        pelaajanpaikka.Image = LisaaPelaaajanKentallekuvan;
119        return pelaajanpaikka;
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['#'] = lisaaTaso;
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.Blue, Color.Purple);
138    }
139
140    PhysicsObject lisaaTaso()
141    {
142        PhysicsObject taso = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
143        taso.Color = Color.Black;
144        return taso;
145    }
146
147    PlatformCharacter lisaaPelaaja()
148    {
149        pelaaja1 = new PlatformCharacter(50, 70);
150        pelaaja1.Mass = 4.0;
151        pelaaja1.Image = pelaajanKuva;
152       
153        pelaaja1.Weapon = new AssaultRifle(60, 30);
154        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
155        pelaaja1.Weapon.Y = -20;
156        pelaaja1.Weapon.X = 0.5;
157
158        pelaaja1.RightIdleAnimation = new Animation(paikallaanVasemmalle);
159        pelaaja1.LeftIdleAnimation = new Animation(paikallaanOikealle);
160        pelaaja1.RightWalkingAnimation = new Animation(kavelyVasemmalle);
161        pelaaja1.LeftWalkingAnimation = new Animation(kavelyOikealle);
162        Add(pelaaja1);
163
164        return pelaaja1;
165    }
166
167    void lisaaNappaimet()
168    {
169        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
170        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Poistu pelistä");
171
172        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
173        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu oikealle", pelaaja1, nopeus);
174        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
175        Keyboard.Listen(Key.Space, ButtonState.Down, AmmuAseella, "Ammu");
176
177        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
178
179        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
180        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
181        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
182    }
183
184    void liikuta(PlatformCharacter hahmo, double nopeus)
185    {
186        hahmo.Walk(nopeus);
187    }
188
189    void hyppaa(PlatformCharacter hahmo, double nopeus)
190    {
191        hahmo.Jump(nopeus);
192    }
193
194
195
196    void AmmuAseella()
197    {
198        PhysicsObject Ammus = pelaaja1.Weapon.Shoot();
199        if (Ammus != null)
200        {
201            Ammus.Size *= 2;
202            Ammus.MaximumLifetime = TimeSpan.FromSeconds(3.1);
203            AddCollisionHandler(Ammus, KasitteleVihollinenKuoli);
204        }
205    }
206    void AmmusOsui(PhysicsObject Ammus, PhysicsObject Kohde)
207    {
208        Ammus.Destroy();
209        Explosion rajahdys = new Explosion(10);
210        rajahdys.Position = Ammus.Position;
211
212    }
213
214
215
216    PlatformCharacter lisaaVihollinen()
217    {
218        PlatformCharacter vihollinen = new PlatformCharacter(70, 70);
219        vihollinen.Mass = 0.05;
220        vihollinen.Image = vihollisenkuva;
221        vihollinen.Tag = ("vihollinen");
222        vihollinen.IgnoresGravity = false;
223
224        vihollinen.LeftIdleAnimation = new Animation(VihollinenpaikallaanVasemmalle);
225        vihollinen.RightIdleAnimation = new Animation(VihollinenpaikallaanOikealle);
226        vihollinen.LeftWalkingAnimation = new Animation(VihollinenKavelyVasemmalle);
227        vihollinen.RightWalkingAnimation = new Animation(VihollinenKavelyOikealle);
228        vihollinen.CanMoveOnAir = true;
229
230
231
232        FollowerBrain seuraajanAivot = new FollowerBrain();
233        seuraajanAivot.Target = pelaaja1;
234        seuraajanAivot.Speed = 100;
235        seuraajanAivot.StopWhenTargetClose = false;
236        seuraajanAivot.TargetFollowDistance = 600;
237        seuraajanAivot.FollowAlways = true;
238        seuraajanAivot.Active = true;
239        vihollinen.Brain = seuraajanAivot;
240
241        AddCollisionHandler(vihollinen, VihollinenOsui);
242        return vihollinen;
243    }
244
245    void VihollinenOsui(PhysicsObject vihollinen, PhysicsObject kohde)
246    {
247        if (kohde == pelaaja1)
248        {
249            Explosion rajahdys = new Explosion (100);
250            rajahdys.Position = pelaaja1.Position;
251            Add(rajahdys);
252            rajahdys.Speed = 250.0;
253            rajahdys.Force = 10000;
254            rajahdys.ShockwaveColor = Color.Red;
255            pelaaja1.Destroy();
256            Begin();
257        }
258    }
259    void KasitteleVihollinenKuoli(PhysicsObject Ammus, PhysicsObject kohde)
260    {
261        if (kohde.Tag.ToString() == "vihollinen")
262        {
263            MediaPlayer.Play("kill");
264            kohde.Destroy();
265           
266        }
267
268    }
269    PhysicsObject lisaaMaali()
270    {
271        PhysicsObject Maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
272        Maali.Image = maalinkuva;
273        AddCollisionHandler(Maali, KasitteleMaaliinTulo);
274        return Maali;
275
276    }
277
278    void KasitteleMaaliinTulo(PhysicsObject Maali, PhysicsObject kohde)
279    {
280        if (kohde == pelaaja1)
281        {
282            kenttaNro++;
283            SeuraavaKentta(kenttaNro);
284        }
285    }
286    void Valikko()
287    {
288        ClearAll();
289
290        Level.Background.Image = tekstinkuva;
291        valikonKohdat = new List<Label>();
292         
293        Label kohta1 = new Label("Aloita kenttä");
294        kohta1.Position = new Vector(0, -220);
295        valikonKohdat.Add(kohta1);
296
297        Label kohta2 = new Label("Lopeta");
298        kohta2.Position = new Vector(0, -260);
299        valikonKohdat.Add(kohta2);
300        MediaPlayer.Play("the_matrix_-_theme_song_clubbed_to_death-gt3OptaZ20Q_fmt34");
301
302        foreach (Label valikonKohta in valikonKohdat)
303        {
304            Add(valikonKohta);
305        }
306
307        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, SeuraavaKentta, null, kenttaNro);
308        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
309
310        Mouse.IsCursorVisible = true;
311        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
312        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
313    }
314
315    void ValikossaLiikkuminen(AnalogState hiirenTila)
316    {
317        foreach (Label kohta in valikonKohdat)
318        {
319            if (Mouse.IsCursorOn(kohta))
320            {
321                kohta.TextColor = Color.Yellow;
322            }
323            else
324            {
325                kohta.TextColor = Color.YellowGreen;
326            }
327
328        }
329    }
330    void AloitaPeli()
331    {
332        ClearAll();
333        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
334       
335    }
336    PhysicsObject LisaaPiikkilanka()
337    {
338        PhysicsObject Piikkilanka = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
339        Piikkilanka.Image = piikkilangankuva;
340        AddCollisionHandler(Piikkilanka, PiikkilankaanTormays);
341        return Piikkilanka;
342    }
343
344    void PiikkilankaanTormays(PhysicsObject Piikkilanka, PhysicsObject kohde)
345    { if(kohde == pelaaja1)
346    {
347        Explosion rajahdys = new Explosion(100);
348        rajahdys.Position = pelaaja1.Position;
349        Add(rajahdys);
350        rajahdys.Speed = 250.0;
351        rajahdys.Force = 10000;
352        rajahdys.ShockwaveColor = Color.Red;
353        kohde.Destroy();
354        Begin();
355
356        }
357    }
358}
Note: See TracBrowser for help on using the repository browser.