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

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