source: 2013/23/Jon-ErikK/magnetaa.cs @ 4014

Revision 4014, 23.8 KB checked in by josaklin, 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 magnetaa : PhysicsGame
10{
11    bool peliPaalla;
12    bool asd;
13   
14    Image punainenPaikallaan;
15    Image sininenPaikallaan;
16    Image sininenAmmus;
17    Image punainenAmmus;
18    Image punainenMagneettitorni;
19    Image sininenMagneettitorni;
20   
21    IntMeter pelaaja1Elamat;
22    IntMeter pelaaja2Elamat;
23
24    Pelaaja pelaaja1;   
25    Pelaaja pelaaja2;
26
27    PhysicsObject ylaraja;
28    PhysicsObject alaraja;
29    PhysicsObject oikearaja;
30    PhysicsObject vasenraja;
31    PhysicsObject asdin;
32
33    List<Ammus> ammukset;
34
35    Vector ylos = new Vector(0, 190);
36    Vector alas = new Vector(0, -190);
37    Vector oikea = new Vector(190, 0);
38    Vector vasen = new Vector(-190, 0);
39   
40    public override void Begin()
41    {
42        IsFullScreen = true;
43        peliPaalla = false;
44        asd = false;
45 
46        Level.BackgroundColor=Color.Black;
47       
48        MultiSelectWindow alkuvalikko = new MultiSelectWindow("Magneta", "Aloita peli", "Poistu pelistä");
49        Add(alkuvalikko);
50
51        alkuvalikko.BorderColor = Color.White;
52        alkuvalikko.ActiveColor = Color.White;
53        alkuvalikko.SelectionColor = Color.Silver;
54        alkuvalikko.Color = Color.Gray;
55
56        Label vihje = new Label();
57        vihje.Text = "+X- -Y- O = EasterEgg";
58        vihje.X = 200;
59        vihje.Y = -300;
60        vihje.TextColor = Color.Red;
61
62        Add(vihje);
63
64        alkuvalikko.AddItemHandler(0, valivaihe);
65        alkuvalikko.AddItemHandler(1, Exit);
66
67    }
68
69    public void valivaihe()
70    {
71        ClearGameObjects();
72
73        luoPeli();
74    }
75
76    public void luoPeli()
77    {
78        peliPaalla = true;
79       
80        ammukset = new List<Ammus>();
81
82        alustaKuvat();
83        luoKentta(-300, 0, 300, 0, new Vector(0, 1), new Vector(0, 1));
84        asetaNappaimet();
85    }
86
87    public void uudelleenkaynnistaPeli()
88    {
89        asd = false;
90        asdin = null;
91        ClearAll();
92        Begin();
93    }
94
95    public void seuraavaPeli()
96    {
97        ClearGameObjects();
98        luoPeli();
99    }
100
101    //pelikentän säätäminen alkaa
102
103    public void luoKentta(double pelaaja1x, double pelaaja1y, double pelaaja2x, double pelaaja2y, Vector alkusuunta1, Vector alkusuunta2) {
104
105        luoKentanOsat();
106       
107        pelaaja1 = luoPelaaja(pelaaja1x, pelaaja1y, alkusuunta1, 1);
108        pelaaja2 = luoPelaaja(pelaaja2x, pelaaja2y, alkusuunta2, 2);
109
110    }
111
112    public void luoKentanOsat()
113    {
114        Level.BackgroundColor = Color.Black;
115
116        luoTausta();
117        luoKentanReunat();
118        luoLaskurit();
119
120    }
121
122    public void luoKentanReunat()
123    {
124        alaraja = Level.CreateBottomBorder();
125        alaraja.Color = Color.Charcoal;
126
127        ylaraja = Level.CreateTopBorder();
128        ylaraja.Color = Color.Charcoal;
129
130        oikearaja = Level.CreateRightBorder();
131        oikearaja.Color = Color.Charcoal;
132
133        vasenraja = Level.CreateLeftBorder();
134        vasenraja.Color = Color.Charcoal;
135
136
137    }
138
139    public void luoTausta()
140    {
141        GameObject sivusuorakulmio1 = new GameObject(300, Screen.Height);
142        sivusuorakulmio1.Color = Color.Charcoal;
143        sivusuorakulmio1.X = -650;
144        sivusuorakulmio1.Y = 0;
145
146        GameObject sivusuorakulmio2 = new GameObject(300, Screen.Height);
147        sivusuorakulmio2.Color = Color.Charcoal;
148        sivusuorakulmio2.X = 650;
149        sivusuorakulmio2.Y = 0;
150
151        Add(sivusuorakulmio1);
152        Add(sivusuorakulmio2);
153
154        GameObject tasoOikea = new GameObject(300, Level.Height);
155        tasoOikea.Shape = Shape.Rectangle;
156        tasoOikea.X =Level.Right-150;
157        tasoOikea.Y = 0;
158        tasoOikea.Image = LoadImage("Metallitekstuuri");
159
160        GameObject tasoVasen = new GameObject(300, Level.Height);
161        tasoVasen.Shape = Shape.Rectangle;
162        tasoVasen.X = Level.Left+150;
163        tasoVasen.Y = 0;
164        tasoVasen.Image = LoadImage("Metallitekstuuri");
165
166        Add(tasoOikea,-3);
167        Add(tasoVasen,-3);
168    }
169
170    public void luoLaskurit()
171    {
172        pelaaja1Elamat = new IntMeter(5);
173        Label pistenaytto1 = new Label();
174        pistenaytto1.X = Screen.Left + 100;
175        pistenaytto1.Y = Screen.Top - 50;
176        pistenaytto1.TextColor = Color.White;
177
178        pistenaytto1.BindTo(pelaaja1Elamat);
179
180        pelaaja2Elamat = new IntMeter(5);
181        Label pistenaytto2 = new Label();
182        pistenaytto2.X = Screen.Right - 100;
183        pistenaytto2.Y = Screen.Top - 50;
184        pistenaytto2.TextColor = Color.White;
185
186        pistenaytto2.BindTo(pelaaja2Elamat);
187
188        Add(pistenaytto1);
189        Add(pistenaytto2);
190
191        Label pelaajan1 = luoTekstillinenLabel(Color.White, "Pelaajan 1 elamat");
192        pelaajan1.X = Screen.Left + 110;
193        pelaajan1.Y = Screen.Top - 30;
194
195        Label pelaajan2 = luoTekstillinenLabel(Color.White, "Pelaajan 2 elamat");
196        pelaajan2.X = Screen.Right - 110;
197        pelaajan2.Y = Screen.Top -30;
198
199        Add(pelaajan1);
200        Add(pelaajan2);
201
202    }
203
204    public Label luoTekstillinenLabel(Color tekstinVari, String teksti)
205    {
206        Label tekstikentta = new Label();
207        tekstikentta.Text = teksti;
208        tekstikentta.TextColor = tekstinVari;
209
210        return tekstikentta;
211    }
212
213    public void alustaKuvat()
214    {
215        punainenAmmus = LoadImage("Panos_punainen");
216        sininenAmmus = LoadImage("Panos_sininen");
217
218        punainenPaikallaan = LoadImage("Peliukko_punainen_01");
219        sininenPaikallaan = LoadImage("Peliukko_sininen_1");
220
221        punainenMagneettitorni = LoadImage("Magneettitorni_punainen");
222        sininenMagneettitorni = LoadImage("Magneettitorni_sininen");
223
224    }
225
226    public Pelaaja luoPelaaja(double x, double y, Vector alkusuunta, int numero) {
227
228        Pelaaja pelaaja = new Pelaaja(x, y, alkusuunta, numero);
229        pelaaja.Image = sininenPaikallaan;
230
231        Add(pelaaja);
232
233        return pelaaja;
234    }
235
236    //pelikentän säätö loppuu
237
238    //Näppäimistön asetus
239   
240    public void asetaNappaimet() {
241 
242        Keyboard.Listen(Key.W, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, ylos);
243        Keyboard.Listen(Key.W, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero);
244        Keyboard.Listen(Key.S, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, alas);
245        Keyboard.Listen(Key.S, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero);
246        Keyboard.Listen(Key.A, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, vasen);
247        Keyboard.Listen(Key.A, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero);
248        Keyboard.Listen(Key.D, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, oikea);
249        Keyboard.Listen(Key.D, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero);
250
251        Keyboard.Listen(Key.C, ButtonState.Pressed, ammu, null, pelaaja1);
252        Keyboard.Listen(Key.V, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja1);
253        Keyboard.Listen(Key.B, ButtonState.Pressed, luoTorni, null, pelaaja1);
254       
255        Keyboard.Listen(Key.Up, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, ylos);
256        Keyboard.Listen(Key.Up, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero);
257        Keyboard.Listen(Key.Down, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, alas);
258        Keyboard.Listen(Key.Down, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero);
259        Keyboard.Listen(Key.Left, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, vasen);
260        Keyboard.Listen(Key.Left, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero);
261        Keyboard.Listen(Key.Right, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, oikea);
262        Keyboard.Listen(Key.Right, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, Vector.Zero);
263
264        Keyboard.Listen(Key.Period, ButtonState.Pressed, ammu, null, pelaaja2);
265        Keyboard.Listen(Key.Comma, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja2);
266        Keyboard.Listen(Key.M, ButtonState.Pressed, luoTorni, null, pelaaja2);
267
268        Keyboard.Listen(Key.O, ButtonState.Pressed, asding, null);
269
270
271
272        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
273
274    }
275
276    //Näppäimistön asetus loppuu
277
278    //Pelaajan ja ammuksen nopeuksien asettaminen
279
280    public void asetaPelaajanSuuntaJaNopeus(Pelaaja pelaaja, Vector nopeus)
281    {
282        if (nopeus != Vector.Zero)
283        {
284            Vector apuyksikkovektori = new Vector(nopeus.X, nopeus.Y);
285            apuyksikkovektori = apuyksikkovektori.Normalize();
286
287            pelaaja.Animation.Start();
288
289            pelaaja.Angle = apuyksikkovektori.Angle + Angle.FromDegrees(-90);
290
291            maaritaPelaajanAmmuksenSuunta(apuyksikkovektori, pelaaja);
292        }
293
294        pelaaja.Velocity = nopeus;
295    }
296
297    public void maaritaPelaajanAmmuksenSuunta(Vector yksikkovektori, Pelaaja pelaaja)
298    {
299        if (yksikkovektori.X != 0 || yksikkovektori.Y != 0)
300        {
301            pelaaja.ammustenSuunta = yksikkovektori;
302        }
303    }
304
305    //Pelaajan ja ammuksen nopeuden asetus loppuu
306
307    //Ammuksen syntymä ja kuolema
308
309    public void ammu(Pelaaja pelaaja)
310    { 
311        double apuX=pelaaja.ammustenSuunta.X * 40;
312        double apuY=pelaaja.ammustenSuunta.Y * 40;
313
314        luoUusiAmmus(pelaaja.X+apuX, pelaaja.Y+apuY, pelaaja.magneetinVari, pelaaja.ammustenSuunta);     
315    }
316
317    public void luoUusiAmmus(double x, double y, bool onkoMagneettinen, Vector suunta)
318    {
319        Ammus uusiAmmus = new Ammus(onkoMagneettinen, x, y);
320
321        uusiAmmus.Velocity=suunta*250;
322        uusiAmmus.X = x;
323        uusiAmmus.Y = y;
324        uusiAmmus.Angle += Angle.FromDegrees(-90);
325        if (uusiAmmus.Magneettisuus)
326        {
327            uusiAmmus.Image = punainenAmmus;
328        }
329        else
330        {
331            uusiAmmus.Image = sininenAmmus;
332        }
333       
334        AddCollisionHandler(uusiAmmus, osumaAmmuksella);       
335       
336        Add(uusiAmmus);
337
338        ammukset.Add(uusiAmmus);
339
340        PlaySound("Ampuminen");
341    }
342
343    public void osumaAmmuksella(PhysicsObject ammus, PhysicsObject osuja)
344    {
345        Ammus ammus2 = (Ammus) ammus;
346
347        for(int i=0;i<ammukset.Count;i++){
348            if (ammukset[i] == osuja)
349            {
350                osuja.Destroy();
351                Add(luoRajahdys(ammus.X, ammus.Y, 30));
352                Add(luoRajahdys(osuja.X, osuja.Y, 30));
353                ammus.Destroy();
354
355                Ammus osuja2 = (Ammus)osuja;
356                ammukset.Remove(ammus2);
357                ammukset.Remove(osuja2);
358
359                return;
360            }
361        }
362
363        if (osuja == pelaaja2 || osuja == pelaaja1) {
364
365            Pelaaja pelaaja = (Pelaaja)osuja;
366
367            if (pelaaja == pelaaja1)
368            {
369                pelaaja1Elamat.Value -= 1;
370                if (pelaaja1Elamat < 1)
371                {
372                    pelinLoppu(pelaaja);
373                }
374            }
375            if(pelaaja == pelaaja2)
376            {
377                pelaaja2Elamat.Value -= 1;
378                if (pelaaja2Elamat < 1)
379                {
380                    pelinLoppu(pelaaja);
381                }
382            }
383           
384           
385            ammus.Destroy();
386            Add(luoRajahdys(ammus.X, ammus.Y, 30));
387            ammukset.Remove(ammus2);
388
389            return;
390
391        }
392
393        if (osuukoReunaan(ammus2,osuja))
394        {
395            return;
396        }
397
398        for (int i = 0; i < pelaaja1.tornit.Count; i++)
399        {
400            if (pelaaja1.tornit[i] == osuja)
401            {
402                ammus.Destroy();
403                Add(luoRajahdys(ammus.X, ammus.Y, 30));
404
405                ammukset.Remove(ammus2);
406
407                pelaaja1.tornit[i].elamat.Value -= 1;
408
409                if (pelaaja1.tornit[i].elamat <= 0)
410                {
411                    osuja.Destroy();
412                    Add(luoRajahdys(pelaaja1.tornit[i].X, pelaaja1.tornit[i].Y, 60));
413                    pelaaja1.tornit.Remove(pelaaja1.tornit[i]);
414                }
415
416                return;
417            }
418        }
419
420        for (int i = 0; i < pelaaja2.tornit.Count; i++)
421        {
422            if (pelaaja2.tornit[i] == osuja)
423            {
424                ammus.Destroy();
425
426                Add(luoRajahdys(ammus.X, ammus.Y, 30));
427
428                ammukset.Remove(ammus2);
429
430                pelaaja2.tornit[i].elamat.Value -= 1;
431
432                if (pelaaja2.tornit[i].elamat <= 0)
433                {
434                    Add(luoRajahdys(pelaaja2.tornit[i].X, pelaaja2.tornit[i].Y, 60));
435                   
436                    osuja.Destroy();
437                    pelaaja2.tornit.Remove(pelaaja2.tornit[i]); 
438                }
439
440                return;
441            }
442        }
443
444        if (osuja == asdin)
445        {
446            for (int i = 0; i < 10; i++)
447            {
448                bool randomtrue = RandomGen.NextBool();
449                double randomX = RandomGen.NextDouble(Level.Left, Level.Right);
450                double randomY = RandomGen.NextDouble(Level.Bottom, Level.Top);
451                Vector vektori = RandomGen.NextVector(0,0);
452
453                luoUusiAmmus(randomX, randomY, randomtrue, vektori);
454            } 
455        }
456
457       
458    }
459
460    public Explosion luoRajahdys(double x, double y, double sade)
461    {
462        Explosion rajahdys = new Explosion(sade);
463        rajahdys.X = x;
464        rajahdys.Y = y;
465        rajahdys.Force = 0;
466
467        return rajahdys;
468    }
469
470    public bool osuukoReunaan(Ammus ammus, PhysicsObject osuja)
471    {
472       
473        if (osuja == ylaraja)
474        {
475            ammus.Y = -ammus.Y + 11;
476            Vector nopeus = ammus.Velocity;
477            Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; });
478            Add(luoRajahdys(ammus.X, ammus.Y, 30));
479
480            return true;
481
482        }
483
484        if (osuja == alaraja)
485        {
486            ammus.Y = -ammus.Y - 11;
487            Vector nopeus = ammus.Velocity;
488            Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; });
489            Add(luoRajahdys(ammus.X, ammus.Y, 30));
490
491            return true;
492        }
493
494        if (osuja == oikearaja)
495        {
496            ammus.Destroy();
497            ammukset.Remove(ammus);
498            Add(luoRajahdys(ammus.X, ammus.Y, 30));
499
500            return true;
501
502        }
503
504        if (osuja == vasenraja)
505        {
506            ammus.Destroy();
507            ammukset.Remove(ammus);
508            Add(luoRajahdys(ammus.X, ammus.Y, 30));
509
510            return true;
511        }
512
513        return false;
514    }
515
516    //Ammuksen käsittely loppuu
517
518    //Magneettisuuden vaihto alkaa
519
520    public void vaihdaMagneettisuus(Pelaaja pelaaja)
521    {
522        if (pelaaja.magneetinVari)
523            {
524                pelaaja.magneetinVari = false;
525                pelaaja.Image = LoadImage("Peliukko_sininen_1");
526            }
527        else
528            {
529                pelaaja.magneetinVari = true;
530                pelaaja.Image = LoadImage("Peliukko_punainen_01");
531            }
532
533
534    }
535
536    //Magneettisuuden vaihto loppuu
537
538    //Tornilogiikka alkaa
539
540    public void luoTorni(Pelaaja pelaaja)
541    {
542        if (pelaaja.tornit.Count != 0)
543        {
544            for (int i = 0; i < pelaaja.tornit.Count; i++)
545            {
546                if ((pelaaja.Position - pelaaja.tornit[i].Position).Magnitude < 40)
547                {
548                    return;
549                }
550            }
551        }
552
553        if (pelaaja.tornit.Count < 5)
554        {
555            Image annettava;
556
557            if (!pelaaja.magneetinVari)
558            {
559                annettava = sininenMagneettitorni;
560            }
561            else
562            {
563                annettava = punainenMagneettitorni;
564            }
565            Add(pelaaja.lisaaMagneettitorni(annettava),-1);
566
567            PlaySound("Magneettitornin_asetus");
568        }
569
570    }
571
572    //Tornilogiikka loppuu
573
574    //Peli päivitys alkaa
575
576    protected override void Update(Time time)
577    {
578        base.Update(time);
579        if (peliPaalla)
580        {
581            tarkistaMagneetit();
582            pelaajienTarkistus();
583        }
584       
585    }
586
587    public void tarkistaMagneetit()
588    {
589       
590        for (int i = 0; i < ammukset.Count-1; i++)
591        {
592            for (int j = 1 + i; j < ammukset.Count; j++)
593            {
594                Vector voima = luoMagneettivektori(ammukset[i], ammukset[j]);
595                Vector vastavoima = voima * -1;
596
597                ammukset[i].Velocity = ammukset[i].Velocity + voima;
598                ammukset[j].Velocity = ammukset[j].Velocity + vastavoima;
599
600                ammukset[i].Angle = ammukset[i].Velocity.Angle + Angle.FromDegrees(-90);
601                ammukset[j].Angle = ammukset[j].Velocity.Angle + Angle.FromDegrees(-90);
602            }
603        }
604
605        for (int i = 0; i < pelaaja1.tornit.Count; i++)
606        {
607            for (int j = 0; j < ammukset.Count; j++)
608            {
609                Ammus ammus = ammukset[j];
610               
611                Vector voima = luoMagneettivektori(ammukset[j],pelaaja1.tornit[i]);
612
613                ammus.Velocity = ammus.Velocity + voima;
614            }
615        }
616
617        for (int i = 0; i < pelaaja2.tornit.Count; i++)
618        {
619            for (int j = 0; j < ammukset.Count; j++)
620            {
621                Vector voima = luoMagneettivektori(ammukset[j], pelaaja2.tornit[i]);
622
623                ammukset[j].Velocity = ammukset[j].Velocity + voima;
624            }
625        }
626    }
627
628    public Vector luoMagneettivektori(Magneettisuus kohde1, Magneettisuus kohde2)
629    {
630        Vector palautettava = new Vector(kohde1.GetX()-kohde2.GetX(), kohde1.GetY()-kohde2.GetY());
631        palautettava=palautettava.Normalize();
632
633        double etaisyys = Math.Sqrt((kohde1.GetX() - kohde2.GetX())*(kohde1.GetX() - kohde2.GetX())+(kohde1.GetY() - kohde2.GetY())*(kohde1.GetY() - kohde2.GetY()));
634
635        palautettava = (palautettava * kohde1.MagneetinVahvuus*kohde2.MagneetinVahvuus) / (etaisyys*etaisyys);
636
637        if (!((kohde1.Magneettisuus && kohde2.Magneettisuus) || (!kohde1.Magneettisuus && !kohde2.Magneettisuus)))
638        {
639            palautettava = palautettava * -1;
640        }
641
642        return palautettava;
643    }
644
645    public void pelaajienTarkistus()
646    {
647        tarkistaPelaaja(pelaaja2);
648        tarkistaPelaaja(pelaaja1);
649    }
650
651    public void tarkistaPelaaja(Pelaaja pelaaja)
652    {
653        if (pelaaja.X < Level.Left + 25)
654        {
655            pelaaja.X = Level.Left + 25;
656            asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero);
657        }
658        else if(pelaaja.X>Level.Right - 25)
659        {
660            pelaaja.X = Level.Right - 25;
661            asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero);
662        }
663
664        if (pelaaja.Y > Level.Top - 25)
665        {
666            pelaaja.Y = Level.Top - 25;
667            asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero);
668        }
669        else if (pelaaja.Y < Level.Bottom + 25)
670        {
671            pelaaja.Y = Level.Bottom + 25;
672            asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero);
673        }
674
675        if (pelaaja.X < 225 && pelaaja.X > -225)
676        {
677            if (pelaaja.X < 0)
678            {
679                pelaaja.X = -225;
680                asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero);
681            }
682            else
683            {
684                pelaaja.X = 225;
685                asetaPelaajanSuuntaJaNopeus(pelaaja, Vector.Zero);
686            }
687        }
688
689        if (pelaaja.Y < -350 && pelaaja.X > 400 || pelaaja.X < -400) 
690        {
691            asd = true;
692        }
693    }
694
695    public void asding()
696    {
697        if (asd&&asdin==null&&(pelaaja1.Y<-350||pelaaja2.Y<-350))
698        {
699            PhysicsObject asding = new PhysicsObject(100, 100);
700            asding.Velocity = pelaaja1.Velocity;
701            asding.Image = LoadImage("Peliukko(variton)_1");
702            Add(asding);
703
704            PlaySound("EasterEgg");
705
706            this.asdin = asding;
707        }
708    }
709
710    //Päivitys loppuu
711
712    //Pelin lopetus
713
714    public void pelinLoppu(Pelaaja pelaaja)
715    {
716
717        Pelaaja ilmoitettava;
718       
719        if(pelaaja==pelaaja1)
720        {
721            ilmoitettava=pelaaja2;
722        }
723        else
724        {
725            ilmoitettava=pelaaja1;
726        }
727
728        ClearAll();
729
730        Level.BackgroundColor = Color.Blue;
731       
732        Label voittajanilmoitus = luoTekstillinenLabel(Color.White,"Pelaaja "+ilmoitettava.pelaajanNumero+" voitti pelin!");
733        voittajanilmoitus.X = 0;
734        voittajanilmoitus.Y = 0;
735
736        Add(voittajanilmoitus);
737
738        Timer.SingleShot(2.5, delegate { uudelleenkaynnistaPeli(); });
739
740        PlaySound("Voitto");
741    }
742
743}
744
745public interface Magneettisuus
746{
747    bool Magneettisuus { get; }
748    double MagneetinVahvuus { get; }
749    double GetX();
750    double GetY();
751}
752
753public class Ammus : PhysicsObject, Magneettisuus
754{
755   
756    private bool magneettisuus;
757    public bool Magneettisuus { get { return magneettisuus; } }
758
759    private double magneetinVahvuus;
760    public double MagneetinVahvuus { get { return magneetinVahvuus; } }
761
762    public Ammus(bool magneettisuus, double x, double y)
763    :base(20,20)
764    {
765        this.magneettisuus = magneettisuus;
766        this.magneetinVahvuus = 200;
767
768        if (magneettisuus == true)
769        {
770            base.Color = Color.Red;
771        }
772        else
773        {
774            base.Color = Color.Blue;
775        }
776
777        base.Shape = Shape.Circle;
778        base.X = x;
779        base.Y = y;
780
781       }
782
783    public double GetY()
784    {
785        return base.Y;
786    }
787
788    public double GetX()
789    {
790        return base.X;
791    }
792}
793
794public class Magneettitorni:PhysicsObject, Magneettisuus
795{
796    public IntMeter elamat;
797   
798    private bool magneettisuus;
799    public bool Magneettisuus{get{return magneettisuus;}}
800
801    private double magneetinVahvuus;
802    public double MagneetinVahvuus{get{return magneetinVahvuus;}}
803
804    public Magneettitorni(bool magneettisuus, double x, double y, Image kuva)
805        :base(30,30)
806    {
807        this.magneettisuus = magneettisuus;
808        this.magneetinVahvuus = 300;
809
810        base.IgnoresPhysicsLogics = true;
811        base.IgnoresCollisionResponse = true;
812        base.Shape = Shape.Circle;
813        base.X = x;
814        base.Y = y;
815
816        base.Image = kuva;
817
818        elamat = new IntMeter(3);
819    }
820
821    public double GetX()
822    {
823        return base.X;
824    }
825
826    public double GetY()
827    {
828        return base.Y;
829    }
830
831}
832
833public class Pelaaja : PhysicsObject
834{
835    public bool magneetinVari;
836    public Vector ammustenSuunta;
837    public int pelaajanNumero;
838
839    public List<Magneettitorni> tornit;
840   
841    public Pelaaja(double x, double y, Vector ammustenSuunta, int pelaaja)
842        :base(50,50)
843    {
844        magneetinVari = false;
845        this.ammustenSuunta = ammustenSuunta;
846        pelaajanNumero = pelaaja;
847
848        tornit = new List<Magneettitorni>();
849
850        base.X = x;
851        base.Y = y;
852        base.Color = Color.White;
853        base.Shape = Shape.Circle;
854        base.IgnoresCollisionResponse = true;
855        base.IgnoresPhysicsLogics = true;
856    }
857
858    public Magneettitorni lisaaMagneettitorni(Image kuva)
859    {
860        Magneettitorni torni = new Magneettitorni(magneetinVari, base.X, base.Y, kuva);
861
862        tornit.Add(torni);
863
864        return torni;
865    }
866}
Note: See TracBrowser for help on using the repository browser.