Ignore:
Timestamp:
2014-07-25 12:35:12 (6 years ago)
Author:
sieerinn
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2014/30/AarniAR/AdventureOfStarKid/AdventureOfStarKid/AdventureOfStarKid/AdventureOfStarKid.cs

    r5661 r5692  
    2222public class AdventureOfStarKid : PhysicsGame 
    2323{ 
     24    private Image[] ukkelinKavely = LoadImages("Tyyppi1", "Tyyppi2", "Tyyppi3"); 
     25    private Image[] ukkelinSeisominen = LoadImages("Tyyppi1"); 
     26 
     27 
    2428    int kenttaNro = 1; 
    2529    private Image[] running = LoadImages("running1", "running2"); 
     
    3135    private Image OneUP = LoadImage("1UP"); 
    3236    private Image Healing = LoadImage("Healing"); 
     37    private Image killLavaKuva = LoadImage("IntaKillLava"); 
    3338    const double nopeus = 200; 
    3439    const double hyppyNopeus = 350; 
    3540    const int RUUDUN_KOKO = 40; 
    3641    PlasmaCannon pelaajan1Ase; 
     42    PlasmaCannon pelaajan2Ase; 
     43     
    3744    DoubleMeter health; 
     45    DoubleMeter health2; 
    3846 
    3947 
    4048    PlatformCharacter pelaaja1; 
     49    PlatformCharacter pelaaja2; 
    4150    bool invincible = false; 
    4251 
     
    4958    { 
    5059        SmoothTextures = false; 
    51         AloitaPeli(); 
     60 
     61        alku(); 
    5262    } 
    5363 
     
    5565    { 
    5666        ClearAll(); 
    57         
     67 
    5868 
    5969        SeuraavaKentta(); 
    6070        LisaaNappaimet(); 
    61         
     71 
    6272    } 
    6373 
     
    6878        kentta.SetTileMethod('*', Lisaastumper); 
    6979        kentta.SetTileMethod('N', LisaaPelaaja); 
     80        kentta.SetTileMethod('M', LisaaPelaaja2); 
    7081        kentta.SetTileMethod('1', Lisaa1UP); 
    7182        kentta.SetTileMethod('H', LisaaHealing); 
     83        kentta.SetTileMethod('L', LisaaKillLava); 
     84        kentta.SetTileMethod('F', LisaaLoppu); 
    7285        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO); 
    7386        Level.CreateBorders(); 
    74         Level.Background.CreateGradient(Color.White, Color.SkyBlue); 
     87        Level.BackgroundColor = new Color( 150, 150, 150); 
    7588    } 
    7689    void Lisaa1UP(Vector paikka, double leveys, double korkeus) 
     
    101114    } 
    102115 
     116    void LisaaLoppu(Vector paikka, double leveys, double korkeus) 
     117    { 
     118        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus); 
     119        taso.Position = paikka; 
     120        taso.Color = Color.Black; 
     121        taso.Tag = "loppu"; 
     122        Add(taso); 
     123    } 
     124 
    103125    void Lisaastumper(Vector paikka, double leveys, double korkeus) 
    104126    { 
    105127        Vihu stumper = new Vihu(leveys - 4, korkeus - 4); 
    106128        stumper.IgnoresCollisionResponse = false; 
    107              
     129 
    108130        stumper.Position = paikka; 
    109131        stumper.Image = tahtiKuva; 
     
    117139 
    118140    } 
     141    void LisaaKillLava(Vector paikka, double leveys, double korkeus) 
     142    { 
     143        PhysicsObject killLava = new PhysicsObject(leveys, korkeus); 
     144        killLava.IgnoresCollisionResponse = true; 
     145        killLava.IgnoresPhysicsLogics = true; 
     146        killLava.Position = paikka; 
     147        killLava.Image = killLavaKuva; 
     148        killLava.Tag = "InstaKill"; 
     149        Add(killLava); 
     150 
     151    } 
    119152 
    120153    void LisaaPelaaja(Vector paikka, double leveys, double korkeus) 
     
    128161        AddCollisionHandler(pelaaja1, "1UP", tormaaOneUP); 
    129162        AddCollisionHandler(pelaaja1, "Heal", tormaaHealingiin); 
     163        AddCollisionHandler(pelaaja1, "InstaKill", tormaakillLava); 
     164        AddCollisionHandler(pelaaja1, "loppu", tormaaLoppu); 
    130165        pelaaja1.AnimWalk = new Animation(running); 
    131166        pelaaja1.AnimIdle = new Animation(shootinganimation); 
     
    139174    } 
    140175 
     176    void LisaaPelaaja2(Vector paikka, double leveys, double korkeus) 
     177    { 
     178        pelaaja2 = new PlatformCharacter(leveys, korkeus); 
     179        pelaaja2.Position = paikka; 
     180        pelaaja2.Mass = 4.0; 
     181        pelaaja2.Image = pelaajanKuva; 
     182        AddCollisionHandler(pelaaja2, "Diamond", TormaaTahteen); 
     183        pelaaja2.AnimWalk = new Animation(ukkelinKavely); 
     184        pelaaja2.AnimWalk.FPS = 9; 
     185        pelaaja2.AnimIdle = new Animation(ukkelinSeisominen); 
     186        Add(pelaaja2); 
     187 
     188        pelaajan2Ase = new PlasmaCannon(1.0, 1.0); 
     189        pelaajan2Ase.InfiniteAmmo = true; 
     190        pelaajan2Ase.ProjectileCollision += AmmusOsuu; 
     191        pelaaja2.Weapon = pelaajan2Ase; 
     192 
     193        AddCollisionHandler(pelaaja2, "stumper", TormaaTahteen); 
     194        AddCollisionHandler(pelaaja2, "1UP", tormaaOneUP); 
     195        AddCollisionHandler(pelaaja2, "Heal", tormaaHealingiin); 
     196        AddCollisionHandler(pelaaja2, "InstaKill", tormaakillLava); 
     197        AddCollisionHandler(pelaaja2, "loppu", tormaaLoppu); 
     198    } 
     199 
     200    void tormaaLoppu(PhysicsObject pelaaja, PhysicsObject loppu) 
     201    { 
     202        kenttaNro++; 
     203        SeuraavaKentta(); 
     204    } 
     205 
    141206    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde) 
    142207    { 
     
    156221        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus); 
    157222        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus); 
    158         Keyboard.Listen(Key.Space, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
    159         Keyboard.Listen(Key.C, ButtonState.Pressed, Ammu, "Ampuu", pelaajan1Ase); 
    160  
     223        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus); 
     224        Keyboard.Listen(Key.P, ButtonState.Pressed, Ammu, "Ampuu", pelaajan1Ase); 
     225 
     226        Keyboard.Listen(Key.A, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, -nopeus); 
     227        Keyboard.Listen(Key.D, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja2, nopeus); 
     228        Keyboard.Listen(Key.W, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja2, hyppyNopeus); 
     229        //Keyboard.Listen(Key.Space, ButtonState.Pressed, HeitaKranaatti, "Pelaaja hyppää", pelaaja2); 
     230 
     231        Keyboard.Listen(Key.Space, ButtonState.Pressed, Ammu, "Ampuu", pelaajan2Ase); 
    161232 
    162233        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä"); 
     
    169240    } 
    170241 
     242    void HeitaKranaatti(PlatformCharacter pelaaja) 
     243    { 
     244        Grenade kranu = new Grenade(4.0); 
     245        pelaaja.Throw(kranu, Angle.FromDegrees(45), 10000); 
     246    } 
     247 
    171248    void Liikuta(PlatformCharacter hahmo, double nopeus) 
    172249    { 
     
    177254    { 
    178255        hahmo.Jump(nopeus); 
     256    } 
     257 
     258    void OtaVahinkoa(PhysicsObject pelaaja, int maara) 
     259    { 
     260        if (pelaaja == pelaaja1) health.Value -= maara; 
     261        if (pelaaja == pelaaja2) health2.Value -= maara; 
    179262    } 
    180263 
     
    185268            maaliAani.Play(); 
    186269            MessageDisplay.Add("Ouch!"); 
    187             health.Value -= 2; 
     270            OtaVahinkoa(hahmo, 2); 
    188271        } 
    189272        //stumper.Destroy(); 
     
    192275    void Ammu(PlasmaCannon Ase) 
    193276    { 
    194        PhysicsObject ammus = Ase.Shoot(); 
    195        if (ammus != null) 
    196        { 
    197            ammus.IgnoresCollisionResponse = true; 
    198            pelaaja1.Animation = new Animation(shootinganimation); 
    199            pelaaja1.Animation.Start(); 
    200        } 
     277        PhysicsObject ammus = Ase.Shoot(); 
     278        if (ammus != null) 
     279        { 
     280            ammus.IgnoresCollisionResponse = true; 
     281            pelaaja1.Animation = new Animation(shootinganimation); 
     282            pelaaja1.Animation.Start(); 
     283        } 
    201284    } 
    202285 
     
    231314 
    232315    } 
     316 
     317    void LuoPistelaskuri2() 
     318    { 
     319        health2 = new DoubleMeter(10); 
     320        health2.MaxValue = 15; 
     321        health2.MinValue = 0; 
     322        health2.LowerLimit += PelaajaHaviaa; 
     323 
     324        health2.Changed += delegate 
     325        { 
     326            Animation anim = new Animation(damage); 
     327            anim.FPS = 6.0; 
     328            pelaaja2.PlayAnimation(anim); 
     329            invincible = true; 
     330            Timer.SingleShot(1, delegate { invincible = false; }); 
     331        }; 
     332 
     333        ProgressBar healthMeter = new ProgressBar(150, 20); 
     334        healthMeter.X = Screen.Right - 150; 
     335        healthMeter.Y = Screen.Top - 100; 
     336        healthMeter.BindTo(health2); 
     337        Add(healthMeter); 
     338 
     339        healthMeter.Angle = Angle.RightAngle; 
     340        healthMeter.Color = Color.Transparent; 
     341        healthMeter.BarColor = Color.Red; 
     342        healthMeter.BorderColor = Color.Black; 
     343    } 
     344 
    233345    void PelaajaHaviaa() 
    234346    { 
    235347        MessageDisplay.Add("Life Lost..."); 
    236348        pelaaja1.Destroy(); 
     349        pelaaja2.Destroy(); 
     350         
    237351        GameObject kuoli = new GameObject(pelaaja1.Width, pelaaja1.Height); 
    238352        kuoli.Image = lifelost[0]; 
     
    240354        Add(kuoli); 
    241355 
     356        GameObject kuoli2 = new GameObject(pelaaja2.Width, pelaaja2.Height); 
     357        kuoli2.Image = lifelost[0]; 
     358        kuoli2.Position = pelaaja2.Position; 
     359        Add(kuoli2); 
     360 
    242361        Timer.SingleShot(2, kuoli.Destroy); 
     362        Timer.SingleShot(2, kuoli2.Destroy); 
    243363        Timer.SingleShot(5, AloitaPeli); 
    244364    } 
    245     void tormaaOneUP(PhysicsObject pelaaja1, PhysicsObject OneUP) 
    246     { 
    247         health.Value = health.MaxValue; 
     365    void tormaaOneUP(PhysicsObject pelaaja, PhysicsObject OneUP) 
     366    { 
     367        if (pelaaja == pelaaja1) 
     368            health.Value = health.MaxValue; 
     369        if (pelaaja == pelaaja2) 
     370            health2.Value = health2.MaxValue; 
    248371        OneUP.Destroy(); 
    249372    } 
    250     void tormaaHealingiin(PhysicsObject pelaaja1, PhysicsObject Healing) 
    251     { 
    252         health.Value += 3; 
     373    void tormaaHealingiin(PhysicsObject pelaaja, PhysicsObject Healing) 
     374    { 
     375        if (pelaaja == pelaaja1) 
     376            health.Value += 3; 
     377        if (pelaaja == pelaaja2) 
     378            health2.Value = 3; 
    253379        Healing.Destroy(); 
    254380 
     
    260386        if (kenttaNro == 1) LuoKentta("kentta1"); 
    261387        else if (kenttaNro == 2) LuoKentta("kentta2"); 
    262         else if (kenttaNro == 3) LuoKentta("kentta3"); 
    263         else if (kenttaNro > 3) Exit(); 
     388        else if (kenttaNro > 2) Exit(); 
     389         
     390        //else if (kenttaNro == 3) LuoKentta("kentta3"); 
     391        //else if (kenttaNro > 3) Exit(); 
    264392 
    265393        LisaaNappaimet(); 
    266394        LuoPistelaskuri(); 
     395        LuoPistelaskuri2(); 
    267396 
    268397        Camera.Follow(pelaaja1); 
     
    270399        Camera.StayInLevel = true; 
    271400    } 
     401    void alku() 
     402    { 
     403        MultiSelectWindow alkuValikko = new MultiSelectWindow("AdventureOfTheStarKid", 
     404"Aloita peli", "Lopeta"); 
     405        Add(alkuValikko); 
     406        alkuValikko.AddItemHandler(0, AloitaPeli); 
     407 
     408        alkuValikko.AddItemHandler(1, Exit); 
     409        alkuValikko.DefaultCancel = 3; 
     410    } 
     411    void tormaakillLava(PhysicsObject pelaaja, PhysicsObject killLava) 
     412    { 
     413        if (pelaaja == pelaaja1) 
     414            health.Value -= 15; 
     415        if (pelaaja == pelaaja2) 
     416            health2.Value -= 15; 
     417    } 
    272418} 
Note: See TracChangeset for help on using the changeset viewer.