Ignore:
Timestamp:
2010-06-14 15:18:38 (10 years ago)
Author:
hniemi
Message:

Ohjus lisätty aseeksi. Törmäyksentunnistus pitää korjata
Sädepyssy otettu hetkeksi pois käytöstä.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/23/hniemi/ShootEmUp/ShootEmUp/Peli.cs

    r779 r823  
    1010    public class Peli : PhysicsGame 
    1111    { 
    12         private Alus pelaajaAlus; 
    13         private PhysicsObject exitZone; 
    14  
     12        #region Julistukset 
     13         
     14         
     15        //Liikkumisnopeudet 
    1516        private const double nopeus = 300; 
    1617        private Vector nopeusPysty = new Vector(0,nopeus); 
    1718        private Vector nopeusVaaka = new Vector(nopeus, 0); 
    1819 
     20        //Kentän rakenne 
     21        private Alus pelaajaAlus; 
    1922        private PhysicsObject vasenLaita; 
    2023        private PhysicsObject oikeaLaita; 
    2124        private PhysicsObject pohja; 
    2225        private PhysicsObject katto; 
    23  
     26        private PhysicsObject exitZone; 
     27 
     28        //Viholliset 
    2429        private const int VIHOLLISKUVIA = 1; 
    2530 
     31        //Statistiikka 
    2632        private int kentannro = 0; 
    2733        private IntMeter score = new IntMeter(0); 
     34        private Weapon[] weapons; 
     35 
     36        #endregion 
    2837 
    2938        protected override void Begin() 
     
    3140            LataaKentta(kentannro); 
    3241        } 
     42 
     43        #region Kentän lataaminen 
    3344 
    3445        /// <summary> 
     
    5364            //Exit-alueen tekeminen. 
    5465            exitZone = PhysicsObject.CreateStaticObject(Level.Width, 200); 
    55             exitZone.Position = new Vector(Level.Center.X, Level.Bottom - exitZone.Size.Y/2 - 5); 
     66            exitZone.Position = new Vector(Level.Center.X, Level.Bottom - exitZone.Size.Y / 2 - 5); 
    5667            Add(exitZone); 
    5768 
     
    6071            LataaKontrollit(pelaajaAlus); 
    6172            //LataaTausta(kentanNumero); 
    62             LataaViholliset(); 
     73            //LataaViholliset(); 
    6374            LataaHUD(); 
    6475        } 
     
    8192            scoreNaytto.Text = "SCORE: "; 
    8293 
    83         } 
    84  
     94 
     95 
     96        } 
     97 
     98        /// <summary> 
     99        /// Luo pelaajan ja sijoittaa sen kentälle. 
     100        /// Asettaa pelaajalle myös aseen. 
     101        /// </summary> 
    85102        void LuoPelaaja() 
    86103        { 
     
    88105            pelaajaAlus.Shape = Shapes.Triangle; 
    89106            pelaajaAlus.Image = LoadImage("pelaajaAlus"); 
    90              
     107 
    91108            pelaajaAlus.Angle += Angle.Degrees(90); 
    92109 
     
    96113            pelaajaAlus.Mass = 100000; 
    97114 
    98             LaserGun plasmatykki = new LaserGun(30, 10); 
    99             plasmatykki.Y = +11; 
    100             plasmatykki.X = +5; 
     115            weapons = new Weapon[2]; 
     116 
     117            weapons[0] = new Beam(30, 10); 
     118            ((Beam)weapons[0]).BeamCollision = BeamOsuu; 
     119            weapons[0].Position = new Vector(5, 11); 
     120            weapons[1] = new Missile(30, 10); 
     121            ((Missile)weapons[1]).MissileCollision = MissileOsuu; 
     122 
     123            //Add(weapons[0]); 
     124            //Add(weapons[1]); 
     125            pelaajaAlus.SetWeapon(weapons[1]); 
     126            Add(pelaajaAlus); 
     127            AddCollisionHandler(pelaajaAlus, PelaajaTormaa); 
    101128             
    102             plasmatykki.LaserCollision = LaserSadeOsuu; 
    103             pelaajaAlus.SetWeapon(plasmatykki); 
    104  
    105             AddCollisionHandler(pelaajaAlus, PelaajaTormaa); 
    106             Add(pelaajaAlus); 
    107         } 
    108  
     129        } 
     130 
     131        #endregion 
     132        #region Kontrollit ja liikkuminen 
    109133        /// <summary> 
    110134        /// Asettaa kontrollit ohjaamaan haluttua alusta 
     
    123147            Keyboard.Listen(Key.Right, ButtonState.Released, pelaaja.StopHorizontal, null); 
    124148            Keyboard.Listen(Key.LeftControl, ButtonState.Pressed, Ammu, "Lopettaa pelin", pelaajaAlus); 
     149            Keyboard.Listen(Key.D1, ButtonState.Pressed, VaihdaAsetta, "Valitsee säde-aseen", 1); 
     150            Keyboard.Listen(Key.D2, ButtonState.Pressed, VaihdaAsetta, "Valitsee säde-aseen", 2); 
    125151        } 
    126152 
     
    142168        } 
    143169 
     170        void VaihdaAsetta(int aseenNumero) 
     171        { 
     172            if (aseenNumero > 0 && aseenNumero < 3) 
     173            pelaajaAlus.SetWeapon(weapons[aseenNumero-1]); 
     174        } 
     175 
    144176        /// <summary> 
    145177        /// Ampuu aluksella 
    146178        /// </summary> 
    147179        /// <param name="alus">Alus joka ampuu</param> 
    148         void Ammu(Alus alus)  
     180        void Ammu(Alus alus) 
    149181        { 
    150182            alus.Shoot(); 
    151183        } 
    152184 
     185        #endregion 
     186        #region Viholliset 
     187        /// <summary> 
     188        /// Lataa viholliset 
     189        /// TODO: Kentän numeron huomioiminen 
     190        /// </summary> 
    153191        void LataaViholliset() 
    154192        { 
     
    239277        { 
    240278            List<Vector> reitti = new List<Vector>(); 
    241              
    242             reitti.Add(new Vector(RandomGen.NextDouble(Level.Left + 30, Level.Right - 30),Level.Top + 35)); 
    243  
     279            reitti.Add(new Vector(RandomGen.NextDouble(Level.Left + 30, Level.Right - 30),Level.Top + 80)); 
    244280            for (int i = 0; i < valipisteet; i++) 
    245281            { 
     
    260296 
    261297        /// <summary> 
     298        /// Luo ajastimen 
     299        /// Lisää myös ajastimen, joten voidaan kutsua suoraan Muodostelman muodostajassa. 
     300        /// </summary> 
     301        /// <returns></returns> 
     302        Timer LuoLahettaja() 
     303        { 
     304            Timer ajastin = new Timer(); 
     305            ajastin.Interval = 0.5; 
     306            Add(ajastin); 
     307            return ajastin; 
     308        } 
     309        #endregion 
     310        #region Tapahtumat 
     311        /// <summary> 
    262312        /// Pelaajan törmäyksen käsittelijä 
    263313        ///  
     
    309359        } 
    310360 
    311         void LaserSadeOsuu(PhysicsObject sade, PhysicsObject toinen) 
    312         { 
     361        void BeamOsuu(PhysicsObject sade, PhysicsObject toinen) 
     362        { 
     363            sade.Destroy(); 
     364 
    313365            if (toinen.Tag.ToString() == "vihollinen")  
    314366            { 
     
    318370        } 
    319371 
    320         /// <summary> 
    321         /// Luo ajastimen, joka on triggeröi sekunnin välein. 
    322         /// Lisää myös ajastimen, joten voidaan kutsua suoraan Muodostelman muodostajassa. 
    323         /// </summary> 
    324         /// <returns></returns> 
    325         Timer LuoLahettaja() 
    326         { 
    327             Timer ajastin = new Timer(); 
    328             ajastin.Interval = 1; 
    329             Add(ajastin); 
    330             return ajastin; 
    331         } 
    332  
     372        void MissileOsuu(PhysicsObject missile, PhysicsObject toinen) 
     373        { 
     374            //missile.Destroy(); 
     375 
     376            if (toinen.Tag.ToString() == "vihollinen") 
     377            { 
     378                ((Alus)toinen).TakeHit(20); 
     379                if (toinen.IsDestroyed()) score.Value++; 
     380            } 
     381        } 
     382        #endregion 
    333383    } 
    334384 
Note: See TracChangeset for help on using the changeset viewer.