Ignore:
Timestamp:
2012-07-25 15:06:35 (7 years ago)
Author:
anlakane
Message:

Talletus.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/30/TulirA/CarrotWars/CarrotWars/CarrotWars/CarrotWars.cs

    r3722 r3754  
    1616    Image ruohokuva = LoadImage("Ruoho"); 
    1717    Image multakuva = LoadImage("Multa"); 
     18    Image ammuskuva = LoadImage("Porkkana luoti"); 
     19    Image pistoolikuva = LoadImage("Porkkana pistooli"); 
    1820    PlatformCharacter pelaaja; 
    19     PhysicsObject vihollinen; 
     21    PhysicsObject luotipaketti; 
     22    PhysicsObject ruoho; 
     23    PhysicsObject multa; 
     24    PhysicsObject tomaattipaketti; 
     25    PhysicsObject ammus; 
     26    int tomaatteja = 0; 
     27    int luoteja = 0; 
     28    EasyHighScore topLista = new EasyHighScore(); 
     29    IntMeter pisteet; 
     30    AssaultRifle pelaajan1Ase; 
     31    Grenade tomaatti; 
    2032 
    2133    public override void Begin() 
     
    4254        } 
    4355    } 
     56    void LuoPistelaskuri() 
     57    { 
     58        pisteet = new IntMeter(0); 
     59        pisteet.Value = 0; 
     60        Label pisteNaytto = new Label(); 
     61        pisteNaytto.X = Screen.Left + 100; 
     62        pisteNaytto.Y = Screen.Top - 100; 
     63        pisteNaytto.TextColor = Color.Black; 
     64        pisteNaytto.Color = Color.White; 
     65        pisteNaytto.Title = "Pisteet"; 
     66        pisteNaytto.BindTo(pisteet); 
     67        Add(pisteNaytto); 
     68    } 
    4469    void LuoKentta() 
    4570    { 
    46         //1. Luetaan kuva uuteen ColorTileMappiin, kuvan nimen perässä ei .png-päätettä. 
     71        pelaaja = new PlatformCharacter(34, 68); 
    4772        ColorTileMap ruudut = ColorTileMap.FromLevelAsset("Taso1"); 
    4873 
    49         //2. Kerrotaan mitä aliohjelmaa kutsutaan, kun tietyn värinen pikseli tulee vastaan kuvatiedostossa. 
    5074        ruudut.SetTileMethod(Color.Gold, LuoPelaaja); 
    5175        ruudut.SetTileMethod(Color.Brown, LuoMulta); 
     
    5579        ruudut.SetTileMethod(Color.DarkGray, Luotomaattipaketti); 
    5680 
    57         //3. Execute luo kentän 
    58         //   Parametreina leveys ja korkeus 
    5981        ruudut.Execute(34, 34); 
     82        AloitaPeli(); 
     83    } 
     84 
     85    void AloitaPeli() 
     86    { 
     87        LuoPistelaskuri(); 
     88        LisaaAseet(); 
     89        LisaaOhjaimet(); 
     90        Level.CreateBorders(false); 
     91        Gravity = new Vector(0.0, -800.0); 
     92        Camera.Follow(pelaaja); 
     93    } 
     94 
     95    void LisaaOhjaimet() 
     96    { 
     97        Keyboard.Listen(Key.Space, ButtonState.Down, Hyppaa, "Hyppää"); 
     98        Keyboard.Listen(Key.A, ButtonState.Down, Liiku, "Liiku vasemmalle", new Vector(-500, 0)); 
     99        Keyboard.Listen(Key.D, ButtonState.Down, Liiku, "Liiku oikealle", new Vector(500, 0)); 
     100        Keyboard.Listen(Key.W, ButtonState.Pressed, AmmuAseella, "Ammu", pelaaja); 
     101        Keyboard.Listen(Key.Q, ButtonState.Pressed, HeitaTomaatti, "Heitä tomaatti(granaatti)"); 
     102    } 
     103 
     104    void Liiku(Vector suunta) 
     105    { 
     106        pelaaja.Move(suunta); 
     107    } 
     108 
     109    void Hyppaa() 
     110    { 
     111        pelaaja.Jump(150); 
     112    } 
     113 
     114    void pelaajatormasitomaattipakettiin(PlatformCharacter pelaaja, PhysicsObject tomaattipaketti) 
     115    { 
     116        MessageDisplay.Add("Sait lisää tomaatteja!"); 
     117        tomaattipaketti.Destroy(); 
     118        tomaatteja = tomaatteja + 2; 
     119    } 
     120    void pelaajatormasiluotipakettiin(PlatformCharacter pelaaja, PhysicsObject luotipaketti) 
     121    { 
     122        MessageDisplay.Add("Sait lisää luoteja!"); 
     123        luotipaketti.Destroy(); 
     124        pelaaja.Weapon.Ammo.Value += 10; 
     125        luoteja = luoteja + 10; 
     126    } 
     127    void pelaajatormasiviholliseen(PhysicsObject pelaaja, PhysicsObject vihollinen) 
     128    { 
     129        pelaaja.Destroy(); 
     130        MessageDisplay.Add("Kuolit!"); 
     131        ClearAll(); 
     132        Begin(); 
    60133    } 
    61134 
    62135    void LuoPelaaja(Vector paikka, double leveys, double korkeus) 
    63136    { 
    64         pelaaja = new PlatformCharacter(34, 68); 
    65137        pelaaja.Position = paikka; 
    66138        pelaaja.Image = pelaajakuva; 
     139        AddCollisionHandler<PlatformCharacter, PhysicsObject>(pelaaja, "luotipaketti", pelaajatormasiluotipakettiin); 
     140        AddCollisionHandler<PlatformCharacter, PhysicsObject>(pelaaja, "tomaattipaketti", pelaajatormasitomaattipakettiin); 
     141        AddCollisionHandler(pelaaja, "vihollinen", pelaajatormasiviholliseen); 
    67142        Add(pelaaja); 
    68143    } 
     
    70145    void LuoMulta(Vector paikka, double leveys, double korkeus) 
    71146    { 
    72         PhysicsObject multa = PhysicsObject.CreateStaticObject(34, 34); 
     147        multa = PhysicsObject.CreateStaticObject(34, 34); 
    73148        multa.Position = paikka; 
    74149        multa.Image = multakuva; 
     
    79154    void LuoRuoho(Vector paikka, double leveys, double korkeus) 
    80155    { 
    81         PhysicsObject ruoho = PhysicsObject.CreateStaticObject(34, 34); 
     156        ruoho = PhysicsObject.CreateStaticObject(34, 34); 
    82157        ruoho.Position = paikka; 
    83158        ruoho.Image = ruohokuva; 
     
    88163    void Luovihollinen(Vector paikka, double leveys, double korkeus) 
    89164    { 
    90         vihollinen = new PhysicsObject(34, 34 ); 
     165        CreateEnemy vihollinen = new CreateEnemy(34, 34 ); 
    91166        vihollinen.Position = paikka; 
    92167        vihollinen.Image = vihollinenkuva; 
     168        vihollinen.Tag = "vihollinen"; 
     169        FollowerBrain aivot = new FollowerBrain(pelaaja); 
     170        aivot.Speed = 300; 
     171        aivot.DistanceFar = 600; 
     172        aivot.DistanceClose = 200; 
     173        aivot.StopWhenTargetClose = false; 
     174        aivot.TurnWhileMoving = true; 
     175        aivot.Active = true; 
     176        vihollinen.Brain = aivot; 
    93177        Add(vihollinen); 
    94178    } 
     
    96180    void Luoluotipaketti(Vector paikka, double leveys, double korkeus) 
    97181    { 
    98         PhysicsObject luotipaketti = new PhysicsObject(27, 27); 
     182        luotipaketti = new PhysicsObject(27, 27); 
    99183        luotipaketti.IgnoresCollisionResponse = true; 
    100184        luotipaketti.Position = paikka; 
    101185        luotipaketti.Image = luotipakettikuva; 
    102         luotipaketti.Tag = "Luotipaketti"; 
    103         luotipaketti.CollisionIgnoreGroup = 1; 
     186        luotipaketti.Tag = "luotipaketti"; 
     187        luotipaketti.IgnoresGravity = true; 
    104188        Add(luotipaketti, 1); 
    105189    } 
     
    107191    void Luotomaattipaketti(Vector paikka, double leveys, double korkeus) 
    108192    { 
    109         PhysicsObject tomaattipaketti = new PhysicsObject(27, 27); 
     193        tomaattipaketti = new PhysicsObject(27, 27); 
    110194        tomaattipaketti.IgnoresCollisionResponse = true; 
    111195        tomaattipaketti.Position = paikka; 
    112196        tomaattipaketti.Image = tomaattipakettikuva; 
    113197        tomaattipaketti.Tag = "tomaattipaketti"; 
    114         tomaattipaketti.CollisionIgnoreGroup = 1; 
     198        tomaattipaketti.IgnoresGravity = true; 
    115199        Add(tomaattipaketti, 1); 
    116200    } 
     201    void LisaaAseet() 
     202    { 
     203        pelaajan1Ase = new AssaultRifle(45, 15); 
     204        pelaaja.Weapon = pelaajan1Ase; 
     205        pelaajan1Ase.Image = pistoolikuva; 
     206        pelaajan1Ase.FireRate = 4; 
     207        pelaaja.Weapon.Ammo.Value = 5; 
     208        pelaajan1Ase.CanHitOwner = false; 
     209        pelaajan1Ase.AmmoIgnoresGravity = false; 
     210        Mouse.ListenMovement(0.1, Tahtaa, "Tähtää aseella"); 
     211    } 
     212    void ammusosuiviholliseen(PhysicsObject ammus, CreateEnemy vihollinen) 
     213    { 
     214        ammus.Destroy(); 
     215        vihollinen.elamaLaskuri.Value -= 1; 
     216        pisteet.Value += 1; 
     217    } 
     218    void AmmuAseella(PlatformCharacter pelaaja) 
     219    { 
     220        ammus = pelaaja.Weapon.Shoot(); 
     221        luoteja = luoteja - 1; 
     222 
     223        if (ammus != null) 
     224        { 
     225            AddCollisionHandler<PhysicsObject, CreateEnemy>(ammus, "vihollinen", ammusosuiviholliseen); 
     226            ammus.Size *= 1; 
     227            ammus.Image = ammuskuva; 
     228        } 
     229    } 
     230    void Tahtaa(AnalogState hiirenLiike) 
     231    { 
     232        Vector suunta = (Mouse.PositionOnWorld - pelaaja.Weapon.AbsolutePosition).Normalize(); 
     233        pelaaja.Weapon.Angle = suunta.Angle; 
     234    } 
     235    void HeitaTomaatti() 
     236    { 
     237        if (tomaatteja > 0) 
     238        { 
     239            tomaatteja = tomaatteja - 1; 
     240            tomaatti = new Grenade(10.0); 
     241            tomaatti.Image = tomaattikuva; 
     242            pelaaja.Throw(tomaatti, Angle.FromDegrees(30), 10000); 
     243            tomaatti.Explosion.AddShockwaveHandler("vihollinen", TomaattiOsuiViholliseen); 
     244        } 
     245    } 
     246    void Rajahdys() 
     247    { 
     248        Explosion rajahdys = new Explosion(50); 
     249        rajahdys.Position = tomaatti.Position; 
     250        Add(rajahdys); 
     251    } 
     252    void TomaattiOsuiViholliseen(IPhysicsObject vihollinen, Vector shokki) 
     253    { 
     254        vihollinen.Destroy(); 
     255        pisteet.Value += 4; 
     256    } 
    117257} 
Note: See TracChangeset for help on using the changeset viewer.