source: 2010/23/lasakauh/Testi/Peli.cs @ 766

Revision 766, 11.5 KB checked in by lasakauh, 11 years ago (diff)
Line 
1using System;
2using System.Collections.Generic; 
3using Jypeli;
4using Jypeli.ScreenObjects;
5using Jypeli.Assets;
6
7
8namespace Testi
9{
10    class Tasohyppely : PhysicsGame
11    {
12        const double nopeusEteen = 100;
13        const double nopeusTaakse = 100;
14        const double hyppyVoima = 4000;
15
16        PlatformCharacter p1;
17        PlatformCharacter p2;
18
19        int hp1 = 102;
20        int hp2 = 102;
21
22        Stack<PhysicsObject> hiparit = new Stack<PhysicsObject>();
23        Stack<PhysicsObject> hiparit1 = new Stack<PhysicsObject>();
24       
25
26        protected override void Begin()
27        {
28            Level.Width = 300;
29            Level.Height = 300;
30            Camera.ZoomFactor = 2.0;
31            Camera.StayInLevel = true;
32            Gravity = new Vector(0, -1000);
33            StartNewRound();
34
35         
36        }
37
38        void StartNewRound()
39        {
40            luoKentta();
41            lisaaNappaimet();
42            voitto(p1, p2);
43            voitto(p2, p1);
44            MediaPlayer.Play("bg_m");
45        }
46       
47        void voitto(PlatformCharacter hahmo, PlatformCharacter voittaja)
48        {
49            if (hahmo.IsDestroyed())
50            {
51                MessageDisplay.Add(voittaja+" voitti pelin");
52            }
53           
54        }
55        void luoKentta()
56        {
57            Level.CreateBorders();
58            Level.Background.CreateGradient(Color.Black,Color.DarkBlue);
59
60            lisaaMaaTaso(0, -87);
61            lisaaPelaajat();
62            lisaap2();
63            hpbar1();
64            lisaaTaso(0, -154);
65            lisaaSeina(Level.Left -1, Tuhousr);
66            lisaaSeina(Level.Right +1, Tuhousl);
67            hpbar2();
68            hpp1(145);
69            hpp2(-145);
70        }
71
72        void lisaaMaaTaso(double x, double y)
73        {
74            PhysicsObject taso = PhysicsObject.CreateStaticObject(302, 30);
75            taso.Image = LoadImage("taso_maa");
76            taso.X = x;
77            taso.Y = y;
78            Add(taso);
79        }
80
81        void lisaaSeina(double x, CollisionHandler handi)
82        {
83            PhysicsObject taso = PhysicsObject.CreateStaticObject(2, 300);
84            taso.X = x;
85            taso.Y = 0;
86            AddCollisionHandler(taso ,handi);
87            Add(taso);
88        }
89
90        void lisaaTaso(double x, double y)
91        {
92            PhysicsObject taso = PhysicsObject.CreateStaticObject(300, 1);
93            taso.Image = LoadImage("taso_vaakaseina");
94            taso.X = x;
95            taso.Y = y;
96            AddCollisionHandler(taso,Tuhousu);
97            Add(taso);
98        }
99
100        void Tuhousr(PhysicsObject taso, PhysicsObject kohde)
101        {
102            kohde.X = 140;
103        }
104        void Tuhousl(PhysicsObject taso, PhysicsObject kohde)
105        {
106            kohde.X = -140;
107        }
108        void Tuhousu(PhysicsObject taso, PhysicsObject kohde)
109        {
110            kohde.Y = 140;
111        }
112        void lisaaPelaajat()
113        {
114            p1 = new PlatformCharacter(10, 20);
115            p1.Mass = 6.0;
116            p1.Image = LoadImage("ninja");
117            p1.X = -140;
118            p1.Y = Level.Bottom + 100;
119            Add(p1);   
120        }
121
122        void lisaap2()
123        {
124            p2 = new PlatformCharacter(10, 20);
125            p2.Mass = 6.0;
126            p2.Image = LoadImage("ninja2");
127            p2.X = 140;
128            p2.Y = Level.Bottom + 100;
129            Add(p2);
130        }
131
132        void lisaaNappaimet()
133        {
134            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
135            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu pelistä");
136            Keyboard.Listen(Key.M, ButtonState.Pressed, MediaPlayer.Pause, "Keskeyttää musiikin");
137
138            Keyboard.Listen(Key.A, ButtonState.Down, liikutaTaakse, "Liikkuu vasemmalle", p1,nopeusTaakse);
139            Keyboard.Listen(Key.D, ButtonState.Down, liikutaEteenp1, "Liikkuu oikealle", p1,nopeusEteen);
140            Keyboard.Listen(Key.W, ButtonState.Pressed, hyppaa, "Hyppää", p1, hyppyVoima);
141            Keyboard.Listen(Key.S, ButtonState.Pressed, iske,"iskee");
142            Keyboard.Listen(Key.S, ButtonState.Released, lp_isku, "lopettaaiskun");
143
144            Keyboard.Listen(Key.Left, ButtonState.Down, liikutaTaakse, "Liikkuu vasemmalle", p2, nopeusTaakse);
145            Keyboard.Listen(Key.Right, ButtonState.Down, liikutaEteenp2, "Liikkuu oikealle", p2, nopeusEteen);
146            Keyboard.Listen(Key.Up, ButtonState.Pressed, hyppaa, "Hyppää", p2, hyppyVoima);
147            Keyboard.Listen(Key.Down, ButtonState.Pressed, iske2, "iskee");
148            Keyboard.Listen(Key.Down, ButtonState.Released, lp_isku2, "lopettaa iskun");
149
150            //lisaaOhjaimet();
151        }
152
153        /*void lisaaOhjaimet()
154        {
155            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikutaTaakse, "Liikkuu vasemmalle", p1, nopeusTaakse);
156            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikutaEteenp1, "Liikkuu oikealle", p1, nopeusEteen);
157            ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Hyppää", p1, hyppyVoima);
158            ControllerOne.Listen(Button.B, ButtonState.Pressed, iske, "iskee");
159            ControllerOne.Listen(Button.B, ButtonState.Released, lp_isku, "lopettaaiskun");
160
161
162            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, liikutaTaakse, "Liikkuu vasemmalle", p2, nopeusTaakse);
163            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, liikutaEteenp2, "Liikkuu oikealle", p2, nopeusEteen);
164            ControllerOne.Listen(Button.A, ButtonState.Pressed, hyppaa, "Hyppää", p2, hyppyVoima);
165            ControllerOne.Listen(Button.B, ButtonState.Pressed, iske2, "iskee");
166            ControllerOne.Listen(Button.B, ButtonState.Released, lp_isku2, "lopettaaiskun");
167
168        }*/
169     
170        void liikutaEteenp1(PlatformCharacter hahmo, double nopeus)
171        {
172           
173            Image[]walkKuvat = LoadImages("ninja_walkr1", "ninja_walkr2");
174            hahmo.RightWalkingAnimation = new Animation(walkKuvat);
175            Image[] walklKuvat = LoadImages("ninja_walkl1", "ninja_walkl2");
176            hahmo.LeftWalkingAnimation = new Animation(walklKuvat);
177            hahmo.Walk(nopeus);
178        }
179
180        void liikutaEteenp2(PlatformCharacter hahmo, double nopeus)
181        {
182
183            Image[] walkKuvat = LoadImages("ninja2_walkr1", "ninja2_walkr2");
184            hahmo.RightWalkingAnimation = new Animation(walkKuvat);
185            Image[] walklKuvat = LoadImages("ninja2_walkl1", "ninja2_walkl2");
186            hahmo.LeftWalkingAnimation = new Animation(walklKuvat);
187            hahmo.Walk(nopeus);
188        }
189
190        void liikutaTaakse(PlatformCharacter hahmo, double nopeus)
191        {
192            hahmo.Walk(-nopeus);
193           
194           
195        }
196
197        void hyppaa(PlatformCharacter hahmo, double voima)
198        {
199            hahmo.Jump(voima);
200        }
201
202        void hpbar1()
203        {
204            PhysicsObject hpbar1 = PhysicsObject.CreateStaticObject(102, 20);
205            hpbar1.Image = LoadImage("hpbar1");
206            hpbar1.X=-95;
207            hpbar1.Y=140;
208            Add(hpbar1);
209           
210        }
211        void hpbar2()
212        {
213            PhysicsObject hpbar2 = PhysicsObject.CreateStaticObject(102, 20);
214            hpbar2.Image = LoadImage("hpbar2");
215            hpbar2.X = 95;
216            hpbar2.Y = 140;
217            Add(hpbar2);
218        }
219        void hpp1(double x)
220        {
221            for (int i = 1; i < hp1; i++) 
222            {
223               
224                PhysicsObject hpp1 = PhysicsObject.CreateStaticObject(1, 8.5);
225                hpp1.Shape = Shapes.Rectangle;
226                hpp1.Color = Color.Green;
227                hpp1.X = -146 + i;
228                hpp1.Y = 144.8;
229                Add(hpp1);
230                hiparit.Push(hpp1);
231                hp1 = 102;
232            }
233        }
234        void hpp2(double x)
235        {
236            for (int i = 1; i < hp2; i++)
237            {
238                PhysicsObject hpp2 = PhysicsObject.CreateStaticObject(1, 8.5);
239                hpp2.Shape = Shapes.Rectangle;
240                hpp2.Color = Color.Green;
241                hpp2.X = 146-i;
242                hpp2.Y = 144.8;
243                Add(hpp2);
244                hiparit1.Push(hpp2);
245            }
246
247        }
248
249        void iske()
250        {
251            if (p1.FacingDirection == Direction.Right)
252            {
253                Image[] iskuKuvat = LoadImages("a1", "a2", "a3", "a4");
254                p1.Animation = new Animation(iskuKuvat);
255                p1.Animation.Start();
256                p1.Animation.FPS = 20;
257            }
258            if (p1.FacingDirection == Direction.Left)
259            {
260                Image[] iskuKuvat = LoadImages("a1_l", "a2_l", "a3_l", "a4_l");
261                p1.Animation = new Animation(iskuKuvat);
262                p1.Animation.Start();
263                p1.Animation.FPS = 20;
264            }
265            if (Vector.Distance(p1.Position, p2.Position) < 20)
266            {
267                for (int i = 0; i < 5; i++)
268                {
269                    if (hiparit1.Count != 0)
270                    {
271                        hiparit1.Pop().Destroy();
272                    }
273                    if (hiparit1.Count == 0)
274                    {
275                        p2.Destroy();
276                        MessageDisplay.Add("Pelaaja 1 voitti");
277                        ClearAll();
278                        Begin();
279                        hp2 = 102;
280                    }
281                }
282            }
283        }
284
285        void iske2()
286        {
287           if (p2.FacingDirection == Direction.Left)
288                {
289                    Image[] p2Kuvat = LoadImages("b1", "b2", "b3", "b4");
290                    p2.Animation = new Animation(p2Kuvat);
291                    p2.Animation.Start();
292                    p2.Animation.FPS = 20;
293
294                }
295            if (p2.FacingDirection == Direction.Right)
296                {
297                    Image[] p22Kuvat = LoadImages("b1_l", "b2_l", "b3_l", "b4_l");
298                    p2.Animation = new Animation(p22Kuvat);
299                    p2.Animation.Start();
300                    p2.Animation.FPS = 20;
301                }
302            if (Vector.Distance(p2.Position, p1.Position) < 20)
303                {
304                for (int i = 0; i < 5; i++)
305                {
306                    if (hiparit.Count != 0)
307                    {
308                        hiparit.Pop().Destroy();
309                    }
310                    if (hiparit.Count == 0)
311                    {
312                        p1.Destroy();
313                        MessageDisplay.Add("Pelaaja 2 voitti");
314                        ClearAll();
315                        Begin();
316                    }
317                }
318            }
319        }
320       
321
322        void lp_isku()
323        {
324            if (p1.FacingDirection == Direction.Right)
325            {
326                p1.Image = LoadImage("ninja");
327            }
328            if (p1.FacingDirection == Direction.Left)
329            {
330                p1.Image = LoadImage("ninja_l");
331            }
332        }
333
334        void lp_isku2()
335        {
336
337            if (p2.FacingDirection == Direction.Left)
338            {
339                p2.Image = LoadImage("ninja2");
340            }
341            if (p2.FacingDirection == Direction.Right)
342            {
343                p2.Image = LoadImage("ninja2_l");
344            }
345           
346        }
347    }
348}
Note: See TracBrowser for help on using the repository browser.