Ignore:
Timestamp:
2013-06-06 12:38:08 (10 years ago)
Author:
josaklin
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2013/23/Jon-ErikK/magnetaa.cs

    r3976 r3993  
    88 
    99public class magnetaa : PhysicsGame 
    10 {     
     10{ 
     11    bool peliPaalla; 
     12    bool asd; 
     13     
     14    Image punainenPaikallaan; 
     15    Image sininenPaikallaan; 
     16    Image sininenAmmus; 
     17    Image punainenAmmus; 
     18     
    1119    IntMeter pelaaja1Elamat; 
    1220    IntMeter pelaaja2Elamat; 
     
    1927    PhysicsObject oikearaja; 
    2028    PhysicsObject vasenraja; 
     29    PhysicsObject asdin; 
    2130 
    2231    List<Ammus> ammukset; 
    2332 
    24     Vector ylos = new Vector(0, 100); 
    25     Vector alas = new Vector(0, -100); 
    26     Vector oikea = new Vector(100, 0); 
    27     Vector vasen = new Vector(-100, 0); 
     33    Vector ylos = new Vector(0, 190); 
     34    Vector alas = new Vector(0, -190); 
     35    Vector oikea = new Vector(190, 0); 
     36    Vector vasen = new Vector(-190, 0); 
    2837     
    2938    public override void Begin() 
    3039    { 
     40        peliPaalla = false; 
     41        asd = false; 
     42   
     43        Level.BackgroundColor=Color.Black; 
     44         
     45        MultiSelectWindow alkuvalikko = new MultiSelectWindow("Magneta", "Aloita peli", "Poistu pelistä"); 
     46        Add(alkuvalikko); 
     47 
     48        alkuvalikko.BorderColor = Color.White; 
     49        alkuvalikko.ActiveColor = Color.White; 
     50        alkuvalikko.SelectionColor = Color.Silver; 
     51        alkuvalikko.Color = Color.Gray; 
     52 
     53        Label vihje = new Label(); 
     54        vihje.Text = "+X- -Y- O = EasterEgg"; 
     55        vihje.X = 200; 
     56        vihje.Y = -300; 
     57        vihje.TextColor = Color.Red; 
     58 
     59        Add(vihje); 
     60 
     61        alkuvalikko.AddItemHandler(0, valivaihe); 
     62        alkuvalikko.AddItemHandler(1, Exit); 
     63 
     64    } 
     65 
     66    public void valivaihe() 
     67    { 
     68        ClearGameObjects(); 
     69 
     70        luoPeli(); 
     71    } 
     72 
     73    public void luoPeli() 
     74    { 
     75        peliPaalla = true; 
     76         
    3177        ammukset = new List<Ammus>(); 
    3278 
    33         luoKentta(-300,0,300,0,new Vector(0,1), new Vector(0,-1)); 
     79        alustaKuvat(); 
     80        luoKentta(-300, 0, 300, 0, new Vector(0, 1), new Vector(0, 1)); 
    3481        asetaNappaimet(); 
    3582    } 
    3683 
    37    //pelikentän säätäminen alkaa 
    38  
    39     public void uusiPeli() 
    40     { 
     84    public void uudelleenkaynnistaPeli() 
     85    { 
     86        asd = false; 
     87        asdin = null; 
    4188        ClearAll(); 
    4289        Begin(); 
    4390    } 
    44      
     91 
     92    public void seuraavaPeli() 
     93    { 
     94        ClearGameObjects(); 
     95        luoPeli(); 
     96    } 
     97 
     98    //pelikentän säätäminen alkaa 
     99 
    45100    public void luoKentta(double pelaaja1x, double pelaaja1y, double pelaaja2x, double pelaaja2y, Vector alkusuunta1, Vector alkusuunta2) { 
    46101 
     
    155210    } 
    156211 
     212    public void alustaKuvat() 
     213    { 
     214        punainenAmmus = LoadImage("Panos_punainen"); 
     215 
     216        sininenAmmus = LoadImage("Panos_sininen"); 
     217 
     218        punainenPaikallaan = LoadImage("Peliukko_punainen_01"); 
     219        sininenPaikallaan = LoadImage("Peliukko_sininen_1"); 
     220    } 
     221 
    157222    public Pelaaja luoPelaaja(double x, double y, Vector alkusuunta, int numero) { 
    158223 
    159224        Pelaaja pelaaja = new Pelaaja(x, y, alkusuunta, numero); 
     225        pelaaja.Image = sininenPaikallaan; 
    160226 
    161227        Add(pelaaja); 
     
    169235     
    170236    public void asetaNappaimet() { 
    171  
     237  
    172238        Keyboard.Listen(Key.W, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, ylos); 
    173239        Keyboard.Listen(Key.W, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero); 
     
    179245        Keyboard.Listen(Key.D, ButtonState.Released, asetaPelaajanSuuntaJaNopeus, null, pelaaja1, Vector.Zero); 
    180246 
    181         Keyboard.Listen(Key.Space, ButtonState.Pressed, ammu, null, pelaaja1); 
    182         Keyboard.Listen(Key.LeftShift, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja1); 
    183         Keyboard.Listen(Key.Q, ButtonState.Pressed, luoTorni, null, pelaaja1); 
     247        Keyboard.Listen(Key.C, ButtonState.Pressed, ammu, null, pelaaja1); 
     248        Keyboard.Listen(Key.V, ButtonState.Pressed, vaihdaMagneettisuus, null, pelaaja1); 
     249        Keyboard.Listen(Key.B, ButtonState.Pressed, luoTorni, null, pelaaja1); 
    184250         
    185251        Keyboard.Listen(Key.Up, ButtonState.Down, asetaPelaajanSuuntaJaNopeus, null, pelaaja2, ylos); 
     
    196262        Keyboard.Listen(Key.M, ButtonState.Pressed, luoTorni, null, pelaaja2); 
    197263 
     264        Keyboard.Listen(Key.O, ButtonState.Pressed, asding, null); 
     265 
    198266 
    199267 
     
    213281            apuyksikkovektori = apuyksikkovektori.Normalize(); 
    214282 
    215  
     283            pelaaja.Animation.Start(); 
     284 
     285            pelaaja.Angle = apuyksikkovektori.Angle + Angle.FromDegrees(-90); 
    216286 
    217287            maaritaPelaajanAmmuksenSuunta(apuyksikkovektori, pelaaja); 
    218         }   
     288        } 
    219289 
    220290        pelaaja.Velocity = nopeus; 
     
    235305    public void ammu(Pelaaja pelaaja) 
    236306    {   
    237         double apuX=pelaaja.ammustenSuunta.X * 38; 
    238         double apuY=pelaaja.ammustenSuunta.Y * 38; 
     307        double apuX=pelaaja.ammustenSuunta.X * 40; 
     308        double apuY=pelaaja.ammustenSuunta.Y * 40; 
    239309 
    240310        luoUusiAmmus(pelaaja.X+apuX, pelaaja.Y+apuY, pelaaja.magneetinVari, pelaaja.ammustenSuunta);       
     
    245315        Ammus uusiAmmus = new Ammus(onkoMagneettinen, x, y); 
    246316 
    247         uusiAmmus.Velocity=suunta*200; 
     317        uusiAmmus.Velocity=suunta*250; 
    248318        uusiAmmus.X = x; 
    249319        uusiAmmus.Y = y; 
     320        uusiAmmus.Angle += Angle.FromDegrees(-90); 
     321        if (uusiAmmus.Magneettisuus) 
     322        { 
     323            uusiAmmus.Image = punainenAmmus; 
     324        } 
     325        else 
     326        { 
     327            uusiAmmus.Image = sininenAmmus; 
     328        } 
    250329         
    251330        AddCollisionHandler(uusiAmmus, osumaAmmuksella);         
     
    259338    public void osumaAmmuksella(PhysicsObject ammus, PhysicsObject osuja) 
    260339    { 
    261         Ammus ammus2 = (Ammus)ammus; 
     340        Ammus ammus2 = (Ammus) ammus; 
    262341 
    263342        for(int i=0;i<ammukset.Count;i++){ 
     
    265344            { 
    266345                osuja.Destroy(); 
     346                Add(luoRajahdys(ammus.X, ammus.Y, 30)); 
     347                Add(luoRajahdys(osuja.X, osuja.Y, 30)); 
    267348                ammus.Destroy(); 
    268349 
     
    298379             
    299380            ammus.Destroy(); 
     381            Add(luoRajahdys(ammus.X, ammus.Y, 30)); 
    300382            ammukset.Remove(ammus2); 
    301383 
     
    304386        } 
    305387 
    306         if (osuukoReunaan(ammus, osuja)) 
     388        if (osuukoReunaan(ammus2,osuja)) 
    307389        { 
    308390            return; 
     
    314396            { 
    315397                ammus.Destroy(); 
     398                Add(luoRajahdys(ammus.X, ammus.Y, 30)); 
    316399 
    317400                ammukset.Remove(ammus2); 
     
    322405                { 
    323406                    osuja.Destroy(); 
     407                    Add(luoRajahdys(pelaaja1.tornit[i].X, pelaaja1.tornit[i].Y, 60)); 
    324408                    pelaaja1.tornit.Remove(pelaaja1.tornit[i]); 
    325409                } 
     
    335419                ammus.Destroy(); 
    336420 
     421                Add(luoRajahdys(ammus.X, ammus.Y, 30)); 
     422 
    337423                ammukset.Remove(ammus2); 
    338424 
     
    341427                if (pelaaja2.tornit[i].elamat <= 0) 
    342428                { 
     429                    Add(luoRajahdys(pelaaja2.tornit[i].X, pelaaja2.tornit[i].Y, 60)); 
     430                     
    343431                    osuja.Destroy(); 
    344                     pelaaja2.tornit.Remove(pelaaja2.tornit[i]); 
     432                    pelaaja2.tornit.Remove(pelaaja2.tornit[i]);  
    345433                } 
    346434 
     
    348436            } 
    349437        } 
    350     } 
    351  
    352     public bool osuukoReunaan(PhysicsObject ammus, PhysicsObject osuja) 
    353     { 
     438 
     439        if (osuja == asdin) 
     440        { 
     441            for (int i = 0; i < 10; i++) 
     442            { 
     443                bool randomtrue = RandomGen.NextBool(); 
     444                double randomX = RandomGen.NextDouble(Level.Left, Level.Right); 
     445                double randomY = RandomGen.NextDouble(Level.Bottom, Level.Top); 
     446                Vector vektori = RandomGen.NextVector(0,0); 
     447 
     448                luoUusiAmmus(randomX, randomY, randomtrue, vektori); 
     449            }  
     450        } 
     451 
     452         
     453    } 
     454 
     455    public Explosion luoRajahdys(double x, double y, double sade) 
     456    { 
     457        Explosion rajahdys = new Explosion(sade); 
     458        rajahdys.X = x; 
     459        rajahdys.Y = y; 
     460        rajahdys.Force = 0; 
     461 
     462        return rajahdys; 
     463    } 
     464 
     465    public bool osuukoReunaan(Ammus ammus, PhysicsObject osuja) 
     466    { 
     467         
    354468        if (osuja == ylaraja) 
    355469        { 
     
    373487        if (osuja == oikearaja) 
    374488        { 
    375             ammus.X = -ammus.X + 11; 
    376             Vector nopeus = ammus.Velocity; 
    377             Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; }); 
     489            ammus.Destroy(); 
     490            ammukset.Remove(ammus); 
    378491 
    379492            return true; 
     
    383496        if (osuja == vasenraja) 
    384497        { 
    385             ammus.X = -ammus.X - 11; 
    386             Vector nopeus = ammus.Velocity; 
    387             Timer.SingleShot(0.01, delegate { ammus.Velocity = nopeus; }); 
     498            ammus.Destroy(); 
     499            ammukset.Remove(ammus); 
     500 
    388501            return true; 
    389502        } 
     
    396509    //Magneettisuuden vaihto alkaa 
    397510 
    398     public void vaihdaMagneettisuus(PhysicsObject pelaaja) 
    399     { 
    400         if (pelaaja == pelaaja2) 
    401         { 
    402             if (pelaaja2.magneetinVari) 
    403             { 
    404                 pelaaja2.magneetinVari = false; 
    405             } 
    406             else 
    407             { 
    408                 pelaaja2.magneetinVari = true; 
    409             } 
    410         } 
     511    public void vaihdaMagneettisuus(Pelaaja pelaaja) 
     512    { 
     513        if (pelaaja.magneetinVari) 
     514            { 
     515                pelaaja.magneetinVari = false; 
     516                pelaaja.Image = LoadImage("Peliukko_sininen_1"); 
     517            } 
    411518        else 
    412         { 
    413             if (pelaaja1.magneetinVari) 
    414             { 
    415                 pelaaja1.magneetinVari = false; 
    416             } 
    417             else 
    418             { 
    419                 pelaaja1.magneetinVari = true; 
    420             } 
    421         } 
     519            { 
     520                pelaaja.magneetinVari = true; 
     521                pelaaja.Image = LoadImage("Peliukko_punainen_01"); 
     522            } 
     523 
    422524 
    423525    } 
     
    452554    { 
    453555        base.Update(time); 
    454         tarkistaMagneetit(); 
    455         pelaajienTarkistus(); 
     556        if (peliPaalla) 
     557        { 
     558            tarkistaMagneetit(); 
     559            pelaajienTarkistus(); 
     560        } 
     561         
    456562    } 
    457563 
     
    468574                ammukset[i].Velocity = ammukset[i].Velocity + voima; 
    469575                ammukset[j].Velocity = ammukset[j].Velocity + vastavoima; 
     576 
     577                ammukset[i].Angle = ammukset[i].Velocity.Angle + Angle.FromDegrees(-90); 
     578                ammukset[j].Angle = ammukset[j].Velocity.Angle + Angle.FromDegrees(-90); 
    470579            } 
    471580        } 
     
    554663            } 
    555664        } 
     665 
     666        if (pelaaja.Y < -350 && pelaaja.X > 400 || pelaaja.X < -400)  
     667        { 
     668            asd = true; 
     669        } 
     670    } 
     671 
     672    public void asding() 
     673    { 
     674        if (asd&&asdin==null&&(pelaaja1.Y<-350||pelaaja2.Y<-350)) 
     675        { 
     676            PhysicsObject asding = new PhysicsObject(100, 100); 
     677            asding.Velocity = pelaaja1.Velocity; 
     678            asding.Image = LoadImage("Peliukko(variton)_1"); 
     679            Add(asding); 
     680 
     681            this.asdin = asding; 
     682        } 
    556683    } 
    557684 
    558685    //Päivitys loppuu 
    559686 
     687    //Pelin lopetus 
     688 
    560689    public void pelinLoppu(Pelaaja pelaaja) 
    561690    { 
     691 
    562692        Pelaaja ilmoitettava; 
    563693         
     
    581711        Add(voittajanilmoitus); 
    582712 
    583         Timer.SingleShot(2, delegate { uusiPeli(); }); 
    584      
     713        Timer.SingleShot(2, delegate { uudelleenkaynnistaPeli(); }); 
     714 
     715 
    585716    } 
    586717 
Note: See TracChangeset for help on using the changeset viewer.