source: 2011/31/DanH/Dragonfighter/Dragonfighter/Dragonfighter/Peli.cs @ 2600

Revision 2600, 9.6 KB checked in by daalhaat, 8 years ago (diff)

Talletus.

Line 
1using System;
2
3using System.Collections.Generic;
4using Jypeli;
5using Jypeli.Assets;
6using Jypeli.Controls;
7using Jypeli.Effects;
8using Jypeli.Widgets;
9
10
11   public class Peli : PhysicsGame
12{
13
14       List<Label> valikonKohdat;
15
16
17
18       Image olionKuva = LoadImage("Thunderbolt3");
19       Image Fireball = LoadImage("Fireball2");
20       
21
22
23
24    const double nopeus = 360;
25    const double hyppyNopeus = 2000;
26    const int RUUDUN_KOKO = 50;
27
28    PlatformCharacter pelaaja1;
29    PlatformCharacter pelaaja2;
30   
31       Image Dragon = LoadImage("DragonStance");
32       Image Hunter = LoadImage("Hunter");
33
34    Image paikallaanVasemmalle = LoadImage("DragonStance");
35    Image paikallaanOikealle;
36
37       
38      Image[] kavelyVasemmalle = LoadImages("JuoksuOikein");
39   
40      Image[] kavelyOikealle;
41
42      Image paikallaanVasemmalle2 = LoadImage("Hunter");
43      Image paikallaanOikealle2;
44
45
46      Image[] kavelyVasemmalle2 = LoadImages("HunterJuoksu");
47
48      Image[] kavelyOikealle2;
49
50
51      DoubleMeter pelaaja1Elama;
52      DoubleMeter pelaaja2Elama;
53
54
55
56
57
58
59
60
61
62 
63     
64
65
66
67
68
69
70
71
72
73
74
75      public override void Begin()
76      {
77
78          {
79              Valikko();
80          }
81
82
83
84      }
85
86
87    void luoKentta()
88    {
89
90       
91 
92       
93        TileMap kentta = TileMap.FromFile("kentta1.txt");
94        kentta.SetTileMethod('#', lisaaTaso);
95       ;
96        kentta.SetTileMethod('N', lisaaPelaaja);
97        kentta.SetTileMethod('X', lisaaPelaaja2);
98       
99        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
100        Level.CreateBorders();
101        Level.Background.CreateGradient(Color.Green, Color.Blue);
102
103
104    }
105
106    void lisaaTaso(Vector paikka, double leveys, double korkeus)
107    {
108        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
109        taso.Position = paikka;
110        taso.Color = Color.White;
111        Add(taso);
112    }
113
114   
115   
116
117    void lisaaPelaaja(Vector paikka, double leveys, double korkeus)
118    {
119        pelaaja1 = new PlatformCharacter (leveys, korkeus);
120        pelaaja1.Position = paikka;
121        pelaaja1.Mass = 7.0;
122        pelaaja1.Image = Dragon;
123
124        pelaaja1.LeftIdleAnimation = new Animation(paikallaanVasemmalle);
125        pelaaja1.RightIdleAnimation = new Animation(paikallaanOikealle);
126
127        pelaaja1.CollisionIgnoreGroup = 1;
128
129        pelaaja1.Weapon = new PlasmaCannon(20, 5);
130        pelaaja1.Weapon.IsVisible = false;
131        pelaaja1.Weapon.Ammo.Value = int.MaxValue;
132        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
133
134
135
136        pelaaja1.LeftWalkingAnimation = new Animation(kavelyVasemmalle);
137        pelaaja1.RightWalkingAnimation = new Animation(kavelyOikealle);
138
139        BarGauge pelaaja1ElamaPalkki = new BarGauge(20, Screen.Width / 3);
140        pelaaja1ElamaPalkki.X = Screen.Left + Screen.Width / 5;
141        pelaaja1ElamaPalkki.Y = Screen.Top - 40;
142        pelaaja1ElamaPalkki.Angle = Angle.FromDegrees(90);
143        pelaaja1ElamaPalkki.BindTo(pelaaja1Elama);
144        pelaaja1ElamaPalkki.Color = Color.Black;
145        pelaaja1ElamaPalkki.BarColor = Color.Red;
146       
147        Add(pelaaja1ElamaPalkki);
148
149       
150                   
151        Add(pelaaja1);
152    }
153
154
155
156    void lisaaPelaaja2(Vector paikka, double leveys, double korkeus)
157    {
158
159        pelaaja2 = new PlatformCharacter(leveys, korkeus);
160        pelaaja2.Position = paikka;
161        pelaaja2.Mass = 7.0;
162        pelaaja2.Image = Hunter;
163
164        pelaaja2.CollisionIgnoreGroup = 1;
165
166        pelaaja2.Weapon = new PlasmaCannon(20, 5);
167        pelaaja2.Weapon.IsVisible = false;
168        pelaaja2.Weapon.Ammo.Value = int.MaxValue;
169        pelaaja2.Weapon.ProjectileCollision = AmmusOsui2;
170        pelaaja2.LeftIdleAnimation = new Animation(paikallaanVasemmalle2);
171        pelaaja2.RightIdleAnimation = new Animation(paikallaanOikealle2);
172
173
174        pelaaja2.LeftWalkingAnimation = new Animation(kavelyVasemmalle2);
175        pelaaja2.RightWalkingAnimation = new Animation(kavelyOikealle2);
176
177
178
179   
180       
181       
182        BarGauge pelaaja2ElamaPalkki = new BarGauge(20, Screen.Width / 3);
183        pelaaja2ElamaPalkki.X = Screen.Right - Screen.Width / 4;
184        pelaaja2ElamaPalkki.Y = Screen.Top - 40;
185        pelaaja2ElamaPalkki.Angle = Angle.FromDegrees(-90);
186        pelaaja2ElamaPalkki.BindTo(pelaaja2Elama);
187        pelaaja2ElamaPalkki.Color = Color.Black;
188        pelaaja2ElamaPalkki.BarColor = Color.Red;
189        Add(pelaaja2ElamaPalkki);
190
191
192
193        Add(pelaaja2);
194
195    }
196
197       
198
199    void lisaaNappaimet()
200    {
201        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
202        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
203        Keyboard.Listen(Key.P, ButtonState.Pressed, Valikko, "Palaa valikkoon");
204       
205        Keyboard.Listen(Key.A, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, - nopeus);
206        Keyboard.Listen(Key.D, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
207        Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
208        Keyboard.Listen(Key.G, ButtonState.Pressed, AmmuAseella, "Ammu");
209
210        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
211
212        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
213        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
214        ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
215
216
217        Keyboard.Listen(Key.Left, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus);
218        Keyboard.Listen(Key.Right, ButtonState.Down, liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus);
219        Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
220        Keyboard.Listen(Key.L, ButtonState.Pressed, AmmuAseella2, "Ammu" );
221
222       
223   
224                                                                 
225    }
226
227    void liikuta(PlatformCharacter hahmo, double nopeus)
228    {
229        hahmo.Walk(nopeus
230);
231    }
232
233    void hyppaa(PlatformCharacter hahmo, double nopeus)
234    {
235        hahmo.Jump(nopeus);
236    }
237     
238
239
240    void AmmuAseella()
241    {
242        PhysicsObject ammus = pelaaja1.Weapon.Shoot();
243
244        if (ammus != null)
245
246        {
247            ammus.Size *= 5;
248            ammus.CollisionIgnoreGroup = 2;
249            ammus.Image = Fireball;
250        }
251    }
252
253    void AmmuAseella2()
254    {
255        PhysicsObject ammus2 = pelaaja2.Weapon.Shoot();
256
257        if (ammus2 != null)
258
259        {
260            ammus2.Size *= 5;
261            ammus2.CollisionIgnoreGroup = 3;
262            ammus2.Color = Color.Blue;
263            ammus2.Image = olionKuva;
264
265        }
266       
267   
268   
269   
270   
271    }
272
273    void AmmusOsui(PhysicsObject ammus, PhysicsObject kohde)
274    {
275        ammus.Destroy();
276       
277        if (kohde == pelaaja2)
278        {
279            pelaaja2Elama.Value--;
280         
281
282            if (pelaaja2Elama.Value == 0)
283            {
284                pelaaja2.Destroy();
285            }
286       
287        }
288
289
290       
291       
292    }
293
294    void AmmusOsui2(PhysicsObject ammus2, PhysicsObject kohde)
295    {
296        ammus2.Destroy();
297
298        if (kohde == pelaaja1)
299        {
300            pelaaja1Elama.Value--;
301        }
302        if (pelaaja1Elama.Value == 0)
303        {
304            pelaaja1.Destroy();
305
306        }
307       
308       
309    }
310
311
312
313
314    void Valikko()
315    {
316        ClearAll();
317        valikonKohdat = new List<Label>();
318
319        Label kohta1 = new Label("Start");
320        kohta1.Position = new Vector(0, 40);
321        valikonKohdat.Add(kohta1);
322
323        Label kohta2 = new Label("Exit");
324        kohta2.Position = new Vector(0, -40);
325       
326        valikonKohdat.Add(kohta2);
327
328        foreach (Label valikonKohta in valikonKohdat)
329        {
330            Add(valikonKohta);
331        }
332
333        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null);
334        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Exit, null);
335
336        Mouse.IsCursorVisible = true;
337        Mouse.ListenMovement(1.0, ValikossaLiikkuminen, null);
338        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "");
339    }
340
341    void ValikossaLiikkuminen(AnalogState hiirenTila)
342    {
343        foreach (Label kohta in valikonKohdat)
344        {
345            if (Mouse.IsCursorOn(kohta))
346            {
347                kohta.TextColor = Color.Red;
348            }
349            else
350            {
351                kohta.TextColor = Color.Black;
352            }
353
354        }
355    }
356
357    void AloitaPeli()
358    {
359        ClearAll();
360        MessageDisplay.Add("Song: Slayer-Raining Blood");
361        MessageDisplay.MessageTime = new TimeSpan(0, 0, 10);
362
363
364
365
366        pelaaja1Elama = new DoubleMeter(100);
367        pelaaja1Elama.MaxValue = 100;
368
369        pelaaja2Elama = new DoubleMeter(100);
370        pelaaja2Elama.MaxValue = 100;
371
372
373        paikallaanOikealle = Image.Mirror(paikallaanVasemmalle);
374        kavelyOikealle = Image.Mirror(kavelyVasemmalle);
375
376        paikallaanOikealle2 = Image.Mirror(paikallaanVasemmalle2);
377        kavelyOikealle2 = Image.Mirror(kavelyVasemmalle2);
378
379
380        Gravity = new Vector(0, -1900);
381
382        luoKentta();
383        lisaaNappaimet();
384
385        IsFullScreen = true;
386
387        Camera.ZoomFactor = 0.6;
388
389
390
391
392
393
394        MediaPlayer.Play("Slayer - Raining Blood");
395    }
396
397   
398   
399   
400}
401
402
403
404
405
406
Note: See TracBrowser for help on using the repository browser.