source: 2010/23/jopehell/TheTankTMR/Peli.cs @ 734

Revision 734, 14.3 KB checked in by jopehell, 11 years ago (diff)

Ihan vähän hienosäätöa ensi kerralla,muuten valmis

Line 
1using System;
2using Jypeli;
3using Jypeli.ScreenObjects;
4using Jypeli.Assets;
5
6namespace TheTankTMR
7{
8    public class Peli : PhysicsGame
9    {
10        Vector nopeusYlos = new Vector(0, 200);
11        Vector nopeusAlas = new Vector(0, -200);
12        Vector nopeusVasen = new Vector(-200, 0);
13        Vector nopeusOikea = new Vector(200, 0);
14
15        PhysicsObject tankki1;
16   
17 
18        PhysicsObject vasenReuna;
19        PhysicsObject oikeaReuna;
20
21        PhysicsObject orkki;
22
23        IntMeter KillCount;
24
25        Timer ajastin;
26
27        protected override void Begin()
28        { 
29            Alku();
30           
31        }
32
33        void Alku()
34        {
35            LuoKentta();
36            LuoOhjaimet();
37            Aloita();
38        }
39
40        void LuoKentta()
41        {
42            Level.Background.Image = LoadImage("tausta");
43            Camera.ZoomToLevel();
44           
45
46            tankki1 = LuoTankki(Level.Left + 20.0, 0.0);
47     
48            LisaaLaskurit();
49
50            vasenReuna = Level.CreateLeftBorder();
51            vasenReuna.Restitution = 1.0;
52            vasenReuna.IsVisible = false;
53            oikeaReuna = Level.CreateRightBorder();
54            oikeaReuna.Restitution = 1.0;
55            oikeaReuna.IsVisible = false;
56            PhysicsObject ylaReuna = Level.CreateTopBorder();
57            ylaReuna.Restitution = 1.0;
58            ylaReuna.IsVisible = false;
59            PhysicsObject alaReuna = Level.CreateBottomBorder();
60            alaReuna.Restitution = 1.0;
61            alaReuna.IsVisible = true;
62            orkki = LuoOrkki(0, 0);
63            orkki = LuoOrkki(1, 1);
64
65            ajastin = new Timer();
66            ajastin.Interval = 0.2;
67            ajastin.Trigger += LuoVihollisia;
68            Add(ajastin);
69
70            ajastin.Start();
71
72        }
73
74        void LuoVihollisia(Timer sender)
75        {
76            LuoOrkki(RandomGen.NextDouble(400.0, 400.0), RandomGen.NextDouble(350.0, -400.0));
77        }
78
79        PhysicsObject LuoTankki(double x, double y)
80        {
81            PhysicsObject tankki = PhysicsObject.CreateStaticObject(30.0, 30.0);
82
83            tankki.Image = LoadImage("tankki"); ;
84            tankki.X = x;
85            tankki.Y = y;
86            tankki.Restitution = 0.5;
87            Add( tankki );
88            PlasmaCannon Plasmatykki = new PlasmaCannon(20, 5);
89            tankki.Add(Plasmatykki);
90            Plasmatykki.Angle += Angle.Degrees(5);
91            Plasmatykki.Use();
92            Plasmatykki.PlasmaParticleCollision = AmmuksenTormays;
93            Keyboard.Listen(Key.Space, ButtonState.Down, Plasmatykki.Use, "Ammu");
94            ControllerOne.Listen(Button.A, ButtonState.Down, Plasmatykki.Use, "Ammu XBox");
95
96
97
98            return tankki;
99
100        }
101       
102        PhysicsObject LuoOrkki(double x,double y)
103        {
104            PhysicsObject orkki = new PhysicsObject(30, 30);
105
106            orkki.Image = LoadImage("orkki");
107            orkki.Restitution = 1.0;
108            orkki.X = x;
109            orkki.Y = y;
110            Add(orkki);
111            Vector impulssi = new Vector(-400,-400);
112            orkki.Hit(impulssi);
113            AddCollisionHandler(orkki, VihollinenTormasi);
114            return orkki;
115
116        }
117       
118        void LisaaLaskurit()
119        {
120            KillCount = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0);
121     
122        }
123        IntMeter LuoPisteLaskuri(double x, double y)
124        {
125            IntMeter laskuri = new IntMeter(0);
126            laskuri.MaxValue = 999999;
127            ValueDisplay naytto = new ValueDisplay();
128            naytto.BindTo(laskuri);
129            naytto.X = x;
130            naytto.Y = y;
131            naytto.ValueColor = Color.GreenYellow;
132            naytto.TextColor = Color.Aqua;
133
134            naytto.Text = ("Pisteet:      ");
135            Add(naytto);
136            return laskuri;
137        }
138         void AmmuksenTormays(PhysicsObject kuula, PhysicsObject osuttu)
139        {
140           
141            Explosion rajahdys = new Explosion(50.0);
142            rajahdys.Position = osuttu.Position;
143            rajahdys.Speed = 750.0;
144            rajahdys.Force = 100;
145
146            if (osuttu != tankki1)
147            {
148                Add(rajahdys);
149                osuttu.Destroy();
150                KillCount.Value += 1;
151               
152                Arvosana();
153            }
154        }
155
156        void Arvosana()
157        {
158            if (KillCount == 10)
159            {
160                MessageDisplay.TextColor = Color.White;
161                MessageDisplay.Add("Hieno aloitus. jatka samaan malliin!");
162            }
163            if (KillCount == 20)
164            {
165                MessageDisplay.Clear();
166                MessageDisplay.TextColor = Color.White;
167                MessageDisplay.Add("Hienosti menee!");
168       
169            }
170            if (KillCount == 50)
171            {
172                MessageDisplay.Clear();
173                MessageDisplay.TextColor = Color.Lime;
174                MessageDisplay.Add("HYVÄ!");
175            }
176            if (KillCount == 100)
177            {
178                MessageDisplay.Clear();
179                MessageDisplay.TextColor = Color.Lime;
180                MessageDisplay.Add("Olet Taitava!");
181            }
182            if (KillCount == 200)
183            {
184                MessageDisplay.Clear();
185                MessageDisplay.TextColor = Color.Lime;
186                MessageDisplay.Add("Mahtavaa!");
187            }
188            if (KillCount == 500)
189            {
190                MessageDisplay.Clear();
191                MessageDisplay.TextColor = Color.Lime;
192                MessageDisplay.Add("Erinomaista!");
193            }
194            if (KillCount == 750)
195            {
196                MessageDisplay.Clear();
197                MessageDisplay.TextColor = Color.LightYellow;
198                MessageDisplay.Add("Täydellistä!!!");
199            }
200
201            if (KillCount == 1250)
202            {
203                MessageDisplay.Clear();
204                MessageDisplay.TextColor = Color.LightYellow;
205                MessageDisplay.Add("Olet mahtava!");
206            }
207            if (KillCount == 3000)
208            {
209                MessageDisplay.Clear();
210                MessageDisplay.TextColor = Color.LightYellow;
211                MessageDisplay.Add("Todella mahtavaa!");
212            }
213            if (KillCount == 5900)
214            {
215                MessageDisplay.Clear();
216                MessageDisplay.TextColor = Color.LightYellow;
217                MessageDisplay.Add("Erinomaista taitavuutta!");
218            }
219            if (KillCount == 8800)
220            {
221                MessageDisplay.Clear();
222                MessageDisplay.TextColor = Color.LightYellow;
223                MessageDisplay.Add("Olet Sotasankari!");
224            }
225            if (KillCount == 11700)
226            {
227                MessageDisplay.Clear();
228                MessageDisplay.TextColor = Color.ForestGreen;
229                MessageDisplay.Add("Loistavaa peliä!!!!");
230            }
231            if (KillCount == 15000)
232            {
233                MessageDisplay.Clear();
234                MessageDisplay.TextColor = Color.ForestGreen;
235                MessageDisplay.Add(":) :) :)!");
236            }
237            if (KillCount == 20000)
238            {
239                MessageDisplay.Clear();
240                MessageDisplay.TextColor = Color.ForestGreen;
241                MessageDisplay.Add(":D :D :D!");
242            }
243            if (KillCount == 27000)
244            {
245                MessageDisplay.Clear();
246                MessageDisplay.TextColor = Color.ForestGreen;
247                MessageDisplay.Add("XD XD XD!");
248            }
249            if (KillCount == 45000)
250            {
251                MessageDisplay.Clear();
252                MessageDisplay.TextColor = Color.ForestGreen;
253                MessageDisplay.Add("Olet ensimmäisen tason Eliitti!");
254            }
255            if (KillCount == 90000)
256            {
257                MessageDisplay.Clear();
258                MessageDisplay.TextColor = Color.ForestGreen;
259                MessageDisplay.Add("Olet toisen tason Eliitti!");
260            }
261            if (KillCount == 200000)
262            {
263                MessageDisplay.Clear();
264                MessageDisplay.TextColor = Color.MediumTurquoise;
265                MessageDisplay.Add("Olet kolmannen tason Eliitti!!!!");
266            }
267            if (KillCount == 500000)
268            {
269                MessageDisplay.Clear();
270                MessageDisplay.TextColor = Color.MediumTurquoise;
271                MessageDisplay.Add("Olet voittamaton!!!");
272            }
273            if (KillCount == 750000)
274            {
275                MessageDisplay.Clear();
276                MessageDisplay.TextColor = Color.MediumTurquoise;
277                MessageDisplay.Add("Olet salainen aseemme sodassa!!!!");
278            }
279            if (KillCount == 999999)
280            {
281                MessageDisplay.Clear();
282                MessageDisplay.TextColor = Color.MediumTurquoise;
283                MessageDisplay.Add("Olet mestari!!! Game Completed!!!!!!");
284               
285            }
286        }
287
288        void VihollinenTormasi(PhysicsObject orkki, PhysicsObject otus)
289        {
290            if (otus == tankki1)
291            {
292                otus.Destroy();
293                Explosion rajahdys = new Explosion(400.0);
294                rajahdys.Position = otus.Position;
295                Add(rajahdys);
296
297                rajahdys.Speed = 175.0;
298                rajahdys.Force = 20000;
299                ajastin.Stop();
300               
301            }
302
303            if (tankki1.IsDestroyed()) 
304            {
305                MessageDisplay.TextColor = Color.Red;
306                MessageDisplay.Clear();
307                MessageDisplay.Add("GAME OVER, Aloita uusi peli painamalla e (XBoxilla b)");               
308                ControllerOne.Vibrate(0.1, 0.1, 0.0, 0.0, 0.1);
309               
310               
311
312            }
313           
314        }
315
316        void Lopeta()
317        {
318            ClearAll();
319            Alku();           
320        }
321           
322       
323
324        void Aloita()
325        {
326            Vector impulssi = new Vector(650.0, 0.0);
327            tankki1.Hit(impulssi);
328
329
330        }
331        void LuoOhjaimet()
332        {
333            Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaTankkiaYlos, "Pelaaja 1: Liikuta tankkia ylös", tankki1);
334            Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaTankki, null, tankki1);
335            Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaTankkiaAlas, "Pelaaja 1: Liikuta tankkia alas", tankki1);
336            Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaTankki, null, tankki1);
337            Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaTankkiaOik, "Pelaaja 1: Liikuta tankkia oikealle", tankki1);
338            Keyboard.Listen(Key.Right, ButtonState.Released, PysaytaTankki, null, tankki1);
339            Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaTankkiaVas, "Pelaaja 1: Liikuta tankkia vasemmalle", tankki1);
340            Keyboard.Listen(Key.Left, ButtonState.Released, PysaytaTankki, null, tankki1);
341            Keyboard.Listen(Key.E, ButtonState.Down, Lopeta, "uusi peli");
342
343
344            //Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
345            //Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu");
346
347            ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta tankkia ylös", tankki1, nopeusYlos);
348            ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, tankki1, Vector.Zero);
349
350            ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta tankkia alas", tankki1, nopeusAlas);
351            ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, tankki1, Vector.Zero);
352
353            ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, AsetaNopeus, "Liikuta tankkia vasemmalle", tankki1, nopeusVasen);
354            ControllerOne.Listen(Button.DPadLeft, ButtonState.Released, AsetaNopeus, null, tankki1, Vector.Zero);
355
356            ControllerOne.Listen(Button.DPadRight, ButtonState.Down, AsetaNopeus, "Liikuta tankkia oikealle", tankki1, nopeusOikea);
357            ControllerOne.Listen(Button.DPadRight, ButtonState.Released, AsetaNopeus, null, tankki1, Vector.Zero);
358            ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu");
359            ControllerOne.Listen(Button.B, ButtonState.Down, Lopeta, "uusi peli");
360
361        }
362        void AsetaNopeus(PhysicsObject tankki, Vector nopeus)
363        {
364            if ((nopeus.Y < 0) && (tankki.Y < Level.Bottom))
365            {
366                tankki.Velocity = Vector.Zero;
367                return;
368            }
369
370            if ((nopeus.Y > 0) && (tankki.Y > Level.Top))
371            {
372                tankki.Velocity = Vector.Zero;
373                return;
374            }
375            tankki.Velocity = nopeus;
376        }
377
378        void LiikutaTankkiaYlos(PhysicsObject tankki)
379        {
380            if ((tankki.Y >= Level.Top))
381            {
382                tankki.Velocity = Vector.Zero;
383                return;
384            }
385            Vector nopeus = new Vector(0, 200);
386            tankki.Velocity = nopeus;
387        }
388
389        void LiikutaTankkiaAlas(PhysicsObject tankki)
390        {
391            if ((tankki.Y <= Level.Bottom))
392            {
393                tankki.Velocity = Vector.Zero;
394                return;
395            }
396
397            Vector nopeus = new Vector(0, -200);
398            tankki.Velocity = nopeus;
399
400        }
401
402
403        void LiikutaTankkiaOik(PhysicsObject tankki)
404        {
405            if ((tankki.X >= Level.Right))
406            {
407                tankki.Velocity = Vector.Zero;
408                return;
409            }
410            Vector nopeus = new Vector(200, 0);
411            tankki.Velocity = nopeus;
412        }
413
414        void LiikutaTankkiaVas(PhysicsObject tankki)
415        {
416            if ((tankki.X <= Level.Left))
417            {
418                tankki.Velocity = Vector.Zero;
419                return;
420            }
421
422            Vector nopeus = new Vector(-200, 0);
423            tankki.Velocity = nopeus;
424        }
425
426
427        void PysaytaTankki(PhysicsObject tankki)
428        {
429            tankki.Velocity = Vector.Zero;
430        }
431    }
432}
433   
434
435
436 
437
438
439
Note: See TracBrowser for help on using the repository browser.