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

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