source: 2014/23/AkuK/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1/Tasohyppelypeli1.cs @ 4872

Revision 4872, 21.0 KB checked in by jotapoti, 9 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
9public class Tasohyppelypeli1 : PhysicsGame
10{
11    double nopeus = 200;
12    const double hyppyNopeus = 750;
13    const int RUUDUN_KOKO = 40;
14
15    DoubleMeter elamaLaskuri;
16
17    DoubleMeter elamaLaskuri2;
18
19    PlatformCharacter pelaaja1;
20    PlatformCharacter pelaaja2;
21    Image mustaaukkokuva = LoadImage("mustaaukkokuva");
22    Image seinankuva = LoadImage("heikkokivi");
23    Image tasonkuva = LoadImage("kivi");
24    Image ammuksenkuva = LoadImage("ammuskuva");
25    Image pelaaja2aseenkuva = LoadImage("wizardKÄSI2");
26    Image pelaaja1aseenkuva = LoadImage("wizardKÄSI");
27    Image speedboostkuva = LoadImage("speedboost");
28    Image pelaaja2Kuva = LoadImage("wizard2");
29    Image pelaaja1Kuva = LoadImage("wizard");
30    Image tahtikuva2 = LoadImage("supermana");
31    Image salamankuva = LoadImage("salama");
32    Image tahtiKuva = LoadImage("mana");
33    Image tulipallonkuva = LoadImage("tulipallo");
34    SoundEffect maaliAani = LoadSoundEffect("maali");
35    SoundEffect scream = LoadSoundEffect("scream");
36    SoundEffect spesiaali1 = LoadSoundEffect("sneezing");
37
38    Image goblininKuva = LoadImage("goblini");
39    private DoubleMeter nopeuskerroin1 = new DoubleMeter(1.0, 0.0, double.MaxValue);
40    private DoubleMeter nopeuskerroin2 = new DoubleMeter(1.0, 0.0, double.MaxValue);
41    public override void Begin()
42    {
43
44
45        MultiSelectWindow alkuValikko = new MultiSelectWindow("Wizard duel",
46"Start", "Settings", "Quit");
47        Add(alkuValikko);
48
49
50
51        LuoKentta();
52
53
54
55    }
56
57    void LuoKentta()
58    {
59        TileMap kentta = TileMap.FromLevelAsset("kentta1");
60        kentta.SetTileMethod('#', LisaaTaso);
61        kentta.SetTileMethod('*', LisaaTahti);
62        kentta.SetTileMethod('T', LisaaTahti2);
63        kentta.SetTileMethod('s', LuoNopeusparannus);
64        kentta.SetTileMethod('1', LisaaPelaaja, pelaaja1);
65        kentta.SetTileMethod('2', LisaaPelaaja2, pelaaja2);
66        kentta.SetTileMethod('w', luohajoavaseina);
67        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
68        Level.CreateBorders();
69        Level.Background.CreateStars(500);
70        Camera.Follow(pelaaja1, pelaaja2);
71        Gravity = new Vector(0, -1000);
72
73        LuoElamaLaskuri();
74        LuoElamaLaskuri2();
75        luopistelaskuri1();
76        luopistelaskuri2();
77        LisaaNappaimet();
78        nopeuskerroin1.Value = 1;
79        nopeuskerroin2.Value = 1;
80
81
82
83        AddCollisionHandler(pelaaja1, "tulipallo", spesiaaliosui);
84        AddCollisionHandler(pelaaja2, "tulipallo", spesiaaliosui);
85    }
86
87    void LisaaTaso(Vector paikka, double leveys, double korkeus)
88    {
89        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
90        taso.Position = paikka;
91        taso.Color = Color.Green;
92        Add(taso);
93        taso.Image = tasonkuva;
94    }
95
96    void LisaaTahti(Vector paikka, double leveys, double korkeus)
97    {
98        PhysicsObject tahti = PhysicsObject.CreateStaticObject(leveys, korkeus);
99        tahti.IgnoresCollisionResponse = true;
100        tahti.Position = paikka;
101        tahti.Image = tahtiKuva;
102        tahti.Tag = "tahti";
103        Add(tahti);
104    }
105
106    void LisaaPelaaja(Vector paikka, double leveys, double korkeus, PlatformCharacter pelaaja)
107    {
108        pelaaja1 = new PlatformCharacter(leveys, korkeus);
109        pelaaja1.Image = pelaaja1Kuva;
110        //pelaaja1.Size = new Vector(leveys, korkeus);
111        pelaaja1.Position = paikka;
112        pelaaja1.Mass = 4.0;
113
114        Add(pelaaja1);
115        pelaaja1.Tag = "pelaaja1";
116        pelaaja1.Weapon = new PlasmaCannon(30, 10);
117        pelaaja1.Weapon.ProjectileCollision = AmmusOsui;
118        pelaaja1.Weapon.FireRate = 3.0;
119        pelaaja1.Weapon.ProjectileCollision = pelaajaan2osui;
120        pelaaja1.Weapon.Image = pelaaja1aseenkuva;
121        AddCollisionHandler(pelaaja1, "tahti", TormaaTahteen);
122        AddCollisionHandler(pelaaja1, "salama", SalamaOsuu);
123        AddCollisionHandler(pelaaja1, "tahti2", TormaaTahteen2);
124    }
125
126    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus, PlatformCharacter pelaaja)
127    {
128        pelaaja2 = new PlatformCharacter(leveys, korkeus);
129        pelaaja2.Position = paikka;
130        pelaaja2.Image = pelaaja2Kuva;
131        pelaaja2.Weapon = new PlasmaCannon(30, 10);
132        pelaaja2.Weapon.FireRate = 3.0;
133        pelaaja2.Weapon.Image = pelaaja2aseenkuva;
134
135        pelaaja2.Weapon.ProjectileCollision = AmmusOsui;
136
137        pelaaja2.Weapon.ProjectileCollision = pelaajaan1osui;
138        pelaaja2.Tag = "pelaaja2";
139        Add(pelaaja2);
140        AddCollisionHandler(pelaaja2, "tahti", TormaaTahteen);
141        AddCollisionHandler(pelaaja2, "salama", SalamaOsuu);
142        AddCollisionHandler(pelaaja2, "tahti2", TormaaTahteen2);
143    }
144
145    void LisaaNappaimet()
146    {
147
148        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
149        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
150
151
152        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
153        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
154        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
155
156        ControllerOne.ListenAnalog(AnalogControl.LeftStick, 0.1, liikutatatilla, "liiku", pelaaja1, nopeus);
157        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
158        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
159        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
160        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
161        ControllerOne.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "Ammu", pelaaja1);
162        ControllerOne.Listen(Button.X, ButtonState.Pressed, spesiaali, "spesiaali", pelaaja1, pistelaskuri);
163        ControllerOne.Listen(Button.Y, ButtonState.Pressed, ammusalama, "salama", pelaaja1, pistelaskuri);
164        ControllerOne.Listen(Button.B, ButtonState.Pressed, AmmuMustaAukko, "mustaAukko", pelaaja1, pelaaja2, pistelaskuri, elamaLaskuri2);
165        ControllerOne.Listen(Button.LeftTrigger, ButtonState.Pressed, luoblokki, "luoblokki", pelaaja1, pistelaskuri);
166        ControllerOne.Listen(Button.LeftShoulder, ButtonState.Pressed, parannus, "luoblokki", elamaLaskuri, pistelaskuri);
167
168        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
169        ControllerTwo.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja2, -nopeus);
170        ControllerTwo.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja2, nopeus);
171        ControllerTwo.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus);
172        ControllerTwo.Listen(Button.RightTrigger, ButtonState.Down, AmmuAseella, "ammu", pelaaja2);
173        ControllerTwo.Listen(Button.X, ButtonState.Pressed, spesiaali, "spesiaali", pelaaja2, pistelaskuri2);
174        ControllerTwo.Listen(Button.Y, ButtonState.Pressed, ammusalama, "salama", pelaaja2, pistelaskuri2);
175        ControllerTwo.Listen(Button.B, ButtonState.Pressed, AmmuMustaAukko, "mustaAukko", pelaaja2, pelaaja1, pistelaskuri2, elamaLaskuri);
176        ControllerTwo.Listen(Button.LeftTrigger, ButtonState.Pressed, luoblokki, "luoblokki", pelaaja2, pistelaskuri2);
177        ControllerTwo.Listen(Button.LeftShoulder, ButtonState.Pressed, parannus, "paranna", elamaLaskuri2, pistelaskuri2);
178        ControllerTwo.ListenAnalog(AnalogControl.LeftStick, 0.1, liikutatatilla, "liiku", pelaaja2, nopeus);
179        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
180    }
181
182    void Liikuta(PlatformCharacter hahmo, double nopeus)
183    {
184        double hahmonnopeus = nopeus;
185        if (pelaaja1 == hahmo)
186        {
187            hahmonnopeus *= nopeuskerroin1;
188        }
189
190        if (pelaaja2 == hahmo)
191        {
192            hahmonnopeus *= nopeuskerroin2;
193        }
194        hahmo.Walk(hahmonnopeus);
195    }
196
197    void Hyppaa(PlatformCharacter hahmo, double nopeus)
198    {
199        if (hahmo == pelaaja1 && nopeuskerroin1 > 0)
200        {
201            hahmo.Jump(nopeus);
202        }
203        if (hahmo == pelaaja2 && nopeuskerroin2 > 0)
204        {
205            hahmo.Jump(nopeus);
206        }
207    }
208
209    void TormaaTahteen(PhysicsObject hahmo, PhysicsObject tahti)
210    {
211        if (hahmo == pelaaja1)
212        {
213            maaliAani.Play();
214            MessageDisplay.Add("1 mana");
215            Timer.SingleShot(10.0, delegate { LisaaTahti(tahti.Position, tahti.Width, tahti.Height); });
216            tahti.Destroy();
217            pistelaskuri.Value += 1;
218        }
219        if (hahmo == pelaaja2)
220        {
221            maaliAani.Play();
222            MessageDisplay.Add("1 mana");
223            Timer.SingleShot(10.0, delegate { LisaaTahti(tahti.Position, tahti.Width, tahti.Height); });
224            tahti.Destroy();
225            pistelaskuri2.Value += 1;
226        }
227    }
228
229    IntMeter pistelaskuri = new IntMeter(0);
230    void luopistelaskuri1()
231    {
232        //pistelaskuri = new IntMeter(0);
233        Label pistenautto = new Label();
234        pistenautto.X = Screen.Left + 100;
235        pistenautto.Y = Screen.Top - 100;
236        pistenautto.TextColor = Color.Blue;
237
238        pistenautto.BindTo(pistelaskuri);
239        Add(pistenautto);
240        pistenautto.Title = "mana";
241        pistelaskuri.MaxValue = 25;
242        pistelaskuri.UpperLimit += manatäynnä;
243        ProgressBar manapalkki = new ProgressBar(150, 20);
244        manapalkki.X = Screen.Left + 150;
245        manapalkki.Y = Screen.Top - 40;
246        manapalkki.BindTo(pistelaskuri);
247        Add(manapalkki);
248        manapalkki.BarColor = Color.Blue;
249    }
250
251    void LuoNopeusparannus(Vector paikka, double leveys, double korkeus)
252    {
253        PhysicsObject nopeusparannus = new PhysicsObject(40, 40);
254        nopeusparannus.Image = speedboostkuva;
255        nopeusparannus.Position = paikka;
256        Add(nopeusparannus);
257        AddCollisionHandler<PhysicsObject, PhysicsObject>(pelaaja1, nopeusparannus, delegate(PhysicsObject tormaaja, PhysicsObject kohde) { tormaanopeusparannukseen(pelaaja1, kohde, "one", nopeuskerroin1); });
258        AddCollisionHandler<PhysicsObject, PhysicsObject>(pelaaja2, nopeusparannus, delegate(PhysicsObject tormaaja, PhysicsObject kohde) { tormaanopeusparannukseen(pelaaja2, kohde, "two", nopeuskerroin2); });
259
260    }
261
262    void pelaajahaviaa()
263    {
264        ClearAll();
265        LuoKentta();
266    }
267
268    void tormaanopeusparannukseen(PhysicsObject pelaaja1, PhysicsObject nopeusparannus, String pelaajanTeksti, DoubleMeter nopeuskerroin)
269    {
270        MessageDisplay.Add("speedboost player " + pelaajanTeksti + "!");
271        nopeuskerroin.Value = 2.0;
272        nopeusparannus.Destroy();
273        Timer.SingleShot(20.0, delegate { nopeuskerroin.Value = 1.0; });
274        Timer.SingleShot(40.0, delegate { LuoNopeusparannus(nopeusparannus.Position, nopeusparannus.Width, nopeusparannus.Height); });
275        nopeusparannus.Destroy();
276    }
277
278    void AmmuAseella(PlatformCharacter pelaaja)
279    {
280        if (!pelaaja.IsDestroyed)
281        {
282            PhysicsObject ammus = pelaaja.Weapon.Shoot();
283
284            if (ammus != null)
285            {
286                ammus.Size *= 2;
287                ammus.MaximumLifetime = TimeSpan.FromSeconds(1.0);
288                ammus.Image = ammuksenkuva; AddCollisionHandler(ammus, "seina", seinaanosui);
289            }
290        }
291    }
292
293
294    void AmmusOsui(PhysicsObject ammus, PhysicsObject taso)
295    {
296
297        ammus.Destroy();
298
299
300
301
302    }
303
304    void pelaajaan1osui(PhysicsObject ammus, PhysicsObject pelaaja1)
305    {
306        if (pelaaja1 == this.pelaaja1)
307        {
308            ammus.Destroy();
309            elamaLaskuri.Value -= 2;
310        }
311    }
312
313    void pelaajaan2osui(PhysicsObject ammus, PhysicsObject pelaaja2)
314    {
315        if (pelaaja2 == this.pelaaja2)
316        {
317            elamaLaskuri2.Value -= 2;
318            ammus.Destroy();
319        }
320    }
321
322    void manatäynnä()
323    {
324        MessageDisplay.Add("player one mana full");
325    }
326
327    IntMeter pistelaskuri2 = new IntMeter(0);
328
329    void luopistelaskuri2()
330    {
331        //pistelaskuri2 = new IntMeter(0);
332        Label pistenautto2 = new Label();
333        pistenautto2.X = Screen.Right - 100;
334        pistenautto2.Y = Screen.Top - 100;
335        pistenautto2.TextColor = Color.Blue;
336
337        pistenautto2.BindTo(pistelaskuri2);
338        Add(pistenautto2);
339        pistenautto2.Title = "mana";
340        pistelaskuri2.MaxValue = 25;
341        pistelaskuri2.UpperLimit += manatäynnä2;
342        ProgressBar manapalkki2 = new ProgressBar(150, 20);
343        manapalkki2.X = Screen.Right - 150;
344        manapalkki2.Y = Screen.Top - 40;
345        manapalkki2.BindTo(pistelaskuri2);
346        Add(manapalkki2);
347        manapalkki2.BarColor = Color.Blue;
348    }
349
350    void manatäynnä2()
351    {
352        MessageDisplay.Add("player two mana full");
353    }
354
355    void spesiaali(PlatformCharacter pelaaja, IntMeter mittari)
356    {
357        if (mittari.Value >= 10)
358        {
359            mittari.Value -= 10;
360
361            PhysicsObject tulipallo = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO * 3);
362            tulipallo.Position = pelaaja.Position + pelaaja.FacingDirection.Angle.GetVector() * 50;
363            tulipallo.Color = Color.Green;
364            tulipallo.Tag = "tulipallo";
365            Add(tulipallo);
366            tulipallo.Image = tulipallonkuva;
367            tulipallo.Velocity = pelaaja.FacingDirection.Angle.GetVector() * 2000;
368            tulipallo.IgnoresCollisionResponse = false;
369        }
370    }
371
372    void spesiaaliosui(PhysicsObject pelaaja, PhysicsObject ammus)
373    {
374        if (pelaaja == pelaaja1)
375        {
376
377
378            elamaLaskuri.Value -= 20;
379
380        }
381        if (pelaaja == pelaaja2)
382        {
383            elamaLaskuri2.Value -= 20;
384        }
385    }
386    void LuoElamaLaskuri()
387    {
388        elamaLaskuri = new DoubleMeter(100);
389        elamaLaskuri.MaxValue = 100;
390        elamaLaskuri.LowerLimit += delegate
391        {
392            MessageDisplay.Add("Player Two WINS!");
393            Timer.SingleShot(2, pelaajahaviaa);
394            pelaaja1.Destroy();
395        };
396
397        ProgressBar elamaPalkki = new ProgressBar(150, 20);
398        elamaPalkki.X = Screen.Left + 150;
399        elamaPalkki.Y = Screen.Top - 20;
400        elamaPalkki.BindTo(elamaLaskuri);
401        Add(elamaPalkki);
402        Label pisteNaytto = new Label();
403        pisteNaytto.X = Screen.Left + 100;
404        pisteNaytto.Y = Screen.Top - 80;
405        pisteNaytto.TextColor = Color.Red;
406
407        pisteNaytto.Title = "HP";
408
409        pisteNaytto.BindTo(elamaLaskuri);
410        Add(pisteNaytto);
411
412    }
413
414    void LuoElamaLaskuri2()
415    {
416        elamaLaskuri2 = new DoubleMeter(100);
417        elamaLaskuri2.MaxValue = 100;
418        elamaLaskuri2.LowerLimit += delegate
419        {
420            MessageDisplay.Add("Player One WINS!");
421            Timer.SingleShot(2, pelaajahaviaa);
422            pelaaja2.Destroy();
423        };
424        ProgressBar elamaPalkki2 = new ProgressBar(150, 20);
425        elamaPalkki2.X = Screen.Right - 150;
426        elamaPalkki2.Y = Screen.Top - 20;
427        elamaPalkki2.BindTo(elamaLaskuri2);
428        Add(elamaPalkki2);
429        Label pisteNaytto = new Label();
430        pisteNaytto.X = Screen.Right - 100;
431        pisteNaytto.Y = Screen.Top - 80;
432        pisteNaytto.TextColor = Color.Red;
433
434        pisteNaytto.Title = "HP";
435
436        pisteNaytto.BindTo(elamaLaskuri2);
437        Add(pisteNaytto);
438    }
439    void luohajoavaseina(Vector paikka, double leveys, double korkeus)
440    {
441        PhysicsObject seina = PhysicsObject.CreateStaticObject(leveys, korkeus);
442        Add(seina);
443        seina.Tag = "seina";
444        seina.Image = seinankuva;
445        seina.Position = paikka;
446
447
448
449    }
450    void seinaanosui(PhysicsObject ammus, PhysicsObject seina)
451    {
452        seina.Destroy();
453    }
454
455    void AmmuMustaAukko(PlatformCharacter pelaaja, PlatformCharacter kohde, IntMeter mittari, DoubleMeter elamamittari)
456    {
457        if (mittari.Value >= 20)
458        {
459            Luomustaaukko(pelaaja, kohde, elamamittari);
460            mittari.Value -= 20;
461        }
462    }
463
464    void ammusalama(PlatformCharacter pelaaja, IntMeter mittari)
465    {
466        if (mittari.Value >= 5)
467        {
468            LuoSalama(pelaaja);
469            mittari.Value -= 5;
470        }
471    }
472
473    private void LuoSalama(PlatformCharacter pelaaja)
474    {
475        PhysicsObject salama = PhysicsObject.CreateStaticObject(RUUDUN_KOKO, RUUDUN_KOKO * 1);
476        Add(salama, 1);
477        salama.Position = pelaaja.Position + pelaaja.FacingDirection.Angle.GetVector() * 50;
478        salama.Velocity = pelaaja.FacingDirection.Angle.GetVector() * 1000;
479        salama.Tag = "salama";
480        salama.IgnoresCollisionResponse = false;
481        salama.Image = salamankuva;
482    }
483
484    void SalamaOsuu(PhysicsObject pelaaja, PhysicsObject salama)
485    {
486        if (pelaaja == pelaaja1)
487        {
488            MessageDisplay.Add("zap");
489            nopeuskerroin1.Value = 0;
490            Timer.SingleShot(3.0, delegate { nopeuskerroin1.Value = 1.0; });
491            elamaLaskuri.Value -= 5;
492
493        }
494        if (pelaaja == pelaaja2)
495        {
496            nopeuskerroin2.Value = 0;
497            Timer.SingleShot(3.0, delegate { nopeuskerroin2.Value = 1.0; });
498            elamaLaskuri2.Value -= 5;
499        }
500        salama.Destroy();
501
502    }
503    void LisaaTahti2(Vector paikka, double leveys, double korkeus)
504    {
505        PhysicsObject tahti2 = PhysicsObject.CreateStaticObject(leveys, korkeus);
506        tahti2.IgnoresCollisionResponse = true;
507        tahti2.Position = paikka;
508        tahti2.Image = tahtiKuva;
509        tahti2.Tag = "tahti2";
510        Add(tahti2);
511        tahti2.Image = tahtikuva2;
512
513
514    }
515
516
517
518
519
520
521    void TormaaTahteen2(PhysicsObject hahmo, PhysicsObject tahti2)
522    {
523        maaliAani.Play();
524        MessageDisplay.Add("10 mana");
525        tahti2.Destroy();
526
527        if (hahmo == pelaaja1)
528        {
529            Timer.SingleShot(50.0, delegate { LisaaTahti2(tahti2.Position, tahti2.Width, tahti2.Height); });
530            pistelaskuri.Value += 10;
531        }
532
533        if (hahmo == pelaaja2)
534        {
535            Timer.SingleShot(50.0, delegate { LisaaTahti(tahti2.Position, tahti2.Width, tahti2.Height); });
536            pistelaskuri2.Value += 10;
537        }
538    }
539    void Luomustaaukko(PlatformCharacter ampuja, PlatformCharacter kohde, DoubleMeter elamamittari)
540    {
541        MustaAukko mustaaukko = new MustaAukko(50, 50, kohde, 1000000, elamamittari);
542        Add(mustaaukko, 1);
543        mustaaukko.Position = ampuja.Position + (kohde.Position - ampuja.Position).Normalize() * 50;
544        mustaaukko.MaximumLifetime = TimeSpan.FromSeconds(10);
545
546
547        FollowerBrain fb = new FollowerBrain(kohde);
548        mustaaukko.Brain = fb;
549        mustaaukko.IgnoresCollisionResponse = true;
550        mustaaukko.Color = Color.Purple;
551        mustaaukko.Image = mustaaukkokuva;
552    }
553
554    void luoblokki(PlatformCharacter pelaaja, IntMeter mittari)
555    {
556        if (mittari.Value >= 1)
557        {
558            PhysicsObject blokki = PhysicsObject.CreateStaticObject(50, 5);
559            Add(blokki);
560            blokki.Color = Color.Blue;
561            blokki.Position = pelaaja.Position - new Vector(0, RUUDUN_KOKO);
562            blokki.MaximumLifetime = TimeSpan.FromSeconds(1);
563            mittari.Value -= 1;
564        }
565
566
567    }
568    void parannus(DoubleMeter elamamittari, IntMeter mittari)
569    {
570        if (mittari.Value >= 10&&elamamittari.Value<90)
571        {
572            mittari.Value -= 10;
573            elamamittari.Value += 10;
574
575        }
576
577
578    }
579    void liikutatatilla(AnalogState tatinTila,PlatformCharacter pelaaja, double nopeus)
580    {
581        Vector tatinAsento = tatinTila.StateVector;
582       Liikuta(pelaaja,tatinAsento.X*nopeus);
583    }
584
585
586}
587
588
589
590
591
592
593public class MustaAukko : PhysicsObject
594{
595    PhysicsObject kohde;
596    DoubleMeter elamalaskuri;
597    double vetovoima;
598    public MustaAukko(double leveys, double korkeus, PhysicsObject kohde, double vetovoima, DoubleMeter elamalaskuri)
599        : base(leveys, korkeus)
600    {
601        this.kohde = kohde;
602        this.elamalaskuri = elamalaskuri;
603        this.vetovoima = vetovoima;
604        IsUpdated = true;
605    }
606
607    public override void Update(Time time)
608    {
609        Vector v = this.Position - kohde.Position;
610        this.Angle = Angle.FromDegrees(time.SinceStartOfGame.TotalSeconds * 360 * 5);
611
612        kohde.Push(vetovoima / v.Magnitude * v.Normalize());
613        base.Update(time);
614        if (Vector.Distance(this.Position, kohde.Position) < 10)
615        {
616            this.Destroy();
617            elamalaskuri.Value -= 30;
618
619        }
620    }
621
622
623
624
625
626
627
628
629}
630
631
632
633
634
635
636
637
638
Note: See TracBrowser for help on using the repository browser.