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

Revision 2112, 9.6 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
219        vihollinen.LeftIdleAnimation = new Animation(VihollinenpaikallaanVasemmalle);
220        vihollinen.RightIdleAnimation = new Animation(VihollinenpaikallaanOikealle);
221        vihollinen.LeftWalkingAnimation = new Animation(VihollinenKavelyVasemmalle);
222        vihollinen.RightWalkingAnimation = new Animation(VihollinenKavelyOikealle);
223
224
225        FollowerBrain seuraajanAivot = new FollowerBrain();
226        seuraajanAivot.Target = pelaaja1;
227        seuraajanAivot.Speed = 100;
228        seuraajanAivot.StopWhenTargetClose = false;
229        seuraajanAivot.TargetFollowDistance = 600;
230        seuraajanAivot.FollowAlways = true;
231        seuraajanAivot.Active = true;
232        vihollinen.Brain = seuraajanAivot;
233
234        AddCollisionHandler(vihollinen, VihollinenOsui);
235        return vihollinen;
236    }
237
238    void VihollinenOsui(PhysicsObject vihollinen, PhysicsObject kohde)
239    {
240        if (kohde == pelaaja1)
241        {
242            MediaPlayer.Play("shit");
243            pelaaja1.Destroy();
244
245            Begin();
246        }
247    }
248    void KasitteleVihollinenKuoli(PhysicsObject Ammus, PhysicsObject kohde)
249    {
250        if (kohde.Tag.ToString() == "vihollinen")
251        {
252            MediaPlayer.Play("kill");
253            kohde.Destroy();
254            ;
255        }
256
257    }
258    PhysicsObject lisaaMaali()
259    {
260        PhysicsObject Maali = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO);
261        Maali.Image = maalinkuva;
262        AddCollisionHandler(Maali, KasitteleMaaliinTulo);
263        return Maali;
264
265    }
266
267    void KasitteleMaaliinTulo(PhysicsObject Maali, PhysicsObject kohde)
268    {
269        if (kohde == pelaaja1)
270        {
271            kenttaNro++;
272            SeuraavaKentta(kenttaNro);
273        }
274    }
275    void Valikko()
276    {
277        ClearAll();
278        this.Level.Background.CreateGradient(Color.Blue, Color.White);
279        valikonKohdat = new List<Label>();
280
281        Label kohta1 = new Label("Aloita uusi peli");
282        kohta1.Position = new Vector(0, 40);
283        valikonKohdat.Add(kohta1);
284
285        Label kohta2 = new Label("Lopeta");
286        kohta2.Position = new Vector(0, -40);
287        valikonKohdat.Add(kohta2);
288
289        foreach (Label valikonKohta in valikonKohdat)
290        {
291            Add(valikonKohta);
292        }
293
294        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, SeuraavaKentta, null, kenttaNro);
295        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
296
297        Mouse.IsCursorVisible = true;
298        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
299        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
300    }
301
302    void ValikossaLiikkuminen(AnalogState hiirenTila)
303    {
304        foreach (Label kohta in valikonKohdat)
305        {
306            if (Mouse.IsCursorOn(kohta))
307            {
308                kohta.TextColor = Color.Red;
309            }
310            else
311            {
312                kohta.TextColor = Color.White;
313            }
314
315        }
316    }
317    void AloitaPeli()
318    {
319        ClearAll();
320        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Valikko, "Palaa valikkoon");
321       
322    }
323
324   
325
326}
Note: See TracBrowser for help on using the repository browser.