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

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