Changeset 993 for 2010/23


Ignore:
Timestamp:
2010-06-18 13:29:25 (9 years ago)
Author:
hniemi
Message:

Luotu uus abstraktiluokka helpottamaan aseiden tekemistä
Aseiden vaihtoa myös muokattu hieman ja lisätty pyhä purkkakorjaus.

Aiemmasta poisjääneet seinät myös lisätty mukaan.

Location:
2010/23/hniemi/ShootEmUp
Files:
4 added
9 edited

Legend:

Unmodified
Added
Removed
  • 2010/23/hniemi/ShootEmUp/ShootEmUp.sln

    r776 r993  
    11 
    22Microsoft Visual Studio Solution File, Format Version 10.00 
    3 # Visual Studio 2008 
     3# Visual C# Express 2008 
    44Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShootEmUp", "ShootEmUp\ShootEmUp.csproj", "{4A5727F8-86DE-4DBB-91DE-9505AEF2EA76}" 
    55EndProject 
  • 2010/23/hniemi/ShootEmUp/ShootEmUp/Alus.cs

    r955 r993  
    4343            : base(width,height) 
    4444        { 
    45             this.kaytossaOlevaAse = new Beam(1, 1); 
    4645            this.Shape = Shapes.Rectangle; 
    4746            this.CanRotate = false; 
     
    4948            this.IgnoresExplosions = true; 
    5049            this.hp = new IntMeter(hp); 
     50            this.AddedToGame += LoadWeapon; 
     51        } 
     52 
     53        private void LoadWeapon() 
     54        { 
     55 
     56            this.SetWeapon(new Beam(5, 35, Game.LoadImage("sade"))); 
    5157        } 
    5258 
     
    8591        { 
    8692            this.Shoot(); 
    87             //PhysicsObject panos = kaytossaOlevaAse.Shoot(); 
    88             //if (panos != null) 
    89             //{ 
    90             //    panos.Angle = this.Angle; 
    91             //} 
    9293        } 
    9394 
  • 2010/23/hniemi/ShootEmUp/ShootEmUp/Content/obj/x86/Debug/ContentPipeline.xml

    r955 r993  
    99      <Options>None</Options> 
    1010      <Output>C:\MyTemp\hniemi\ShootEmUp\ShootEmUp\bin\x86\Debug\Content\vihollinen1.xnb</Output> 
    11       <Time>2010-06-16T09:14:17.8987316+03:00</Time> 
     11      <Time>2010-06-18T09:57:15.4322347+03:00</Time> 
    1212    </Item> 
    1313    <Item> 
  • 2010/23/hniemi/ShootEmUp/ShootEmUp/Muodostelma.cs

    r922 r993  
    2525                foreach (PhysicsObject alus in this.alukset) 
    2626                { 
    27                     ((WandererBrain)alus.Brain).MovingSpeed = movingSpeed; 
     27                    ((PathFollowerBrain)alus.Brain).Speed = movingSpeed; 
    2828                } 
    2929            } 
     
    4040        /// <param name="reitti">Lista vektoreista, jotka muodostaa reitin.</param> 
    4141        /// <param name="ajastin">Ajastin, jotka käytetään</param> 
    42         public Muodostelma(List<Alus> alukset, List<Vector> reitti, Timer ajastin) 
     42        public Muodostelma(List<Alus> alukset, IList<Vector> reitti, Timer ajastin) 
    4343        { 
    4444            //Asettaa aluslistan 
     
    5252            foreach (PhysicsObject alus in this.alukset) 
    5353            { 
    54                 alus.Brain = new WandererBrain(); 
     54                PathFollowerBrain aivot = new PathFollowerBrain(); 
     55                alus.Brain = aivot; 
    5556                alus.Brain.Active = false; 
    56                 ((WandererBrain)alus.Brain).Add(reitti.ToArray()); 
    57                 ((WandererBrain)alus.Brain).MovingSpeed = movingSpeed; 
     57                aivot.Path = reitti; 
     58                aivot.Speed = movingSpeed; 
     59                //((PathFollowerBrain)alus.Brain).Add(reitti.ToArray()); 
     60                //((PathFollowerBrain)alus.Brain).MovingSpeed = movingSpeed; 
    5861                alus.Position = lahtopiste; 
    5962            } 
  • 2010/23/hniemi/ShootEmUp/ShootEmUp/Peli.cs

    r955 r993  
    8585             
    8686            //Laidat 
    87             LisaData tieto; 
     87            LisaData tieto = new LisaData(); 
    8888            tieto.Tyyppi = "seina"; 
    8989            tieto.Rajahtaa = true; 
     
    108108            //Seinät 
    109109            Level.BackgroundColor = Color.Black; 
     110 
    110111            vasenLaita = Level.CreateLeftBorder(); 
    111112            vasenLaita.Image = LoadImage("seina/seinaOikea"); 
    112113            vasenLaita.Angle = Angle.Degrees(270); 
    113  
    114114            vasenLaita.Tag = tieto; 
     115 
    115116            oikeaLaita = Level.CreateRightBorder(); 
    116117            oikeaLaita.Image = LoadImage("seina/seinaOikea"); 
    117118            oikeaLaita.Angle = Angle.Degrees(90); 
    118  
    119119            oikeaLaita.Tag = tieto; 
     120 
    120121            pohja = Level.CreateBottomBorder(); 
    121122            pohja.Image = LoadImage("seina/seinaOikea"); 
    122123            pohja.Angle = Angle.Degrees(0); 
    123124            pohja.Size = new Vector(pohja.Width - 120, pohja.Height); 
    124  
    125125            pohja.Tag = tieto; 
     126 
    126127            katto = Level.CreateTopBorder(); 
    127128            katto.Image = LoadImage("seina/seinaOikea"); 
    128129            katto.Angle = Angle.Degrees(180); 
    129130            katto.Size = new Vector(katto.Width - 120, katto.Height); 
    130  
    131131            katto.Tag = tieto; 
    132132 
     
    182182            aseNimet[2].Text = "Photon"; 
    183183 
     184            Timer purkkaAjastin = new Timer(); 
     185            purkkaAjastin.Interval = 0.01; 
     186            purkkaAjastin.Trigger += Purkkakorjaus; 
     187            Add(purkkaAjastin); 
     188            purkkaAjastin.Start(1); 
     189             
     190        } 
     191 
     192        void Purkkakorjaus(Timer sender) 
     193        { 
     194            VaihdaAsetta(1); 
    184195        } 
    185196 
     
    215226            pelaajaAlus.Animation.Start(); 
    216227 
    217             LisaData tieto; 
     228            LisaData tieto = new LisaData(); 
    218229            tieto.Tyyppi = "oma"; 
    219230            tieto.Rajahtaa = true; 
     
    230241            weapons = new Weapon[3]; 
    231242 
    232             weapons[0] = new Beam(1, 1); 
    233             ((Beam)weapons[0]).BeamCollision = AmmusOsuu; 
     243            //LoadImage("sade"); 
     244 
     245            weapons[0] = new Beam(5, 35, LoadImage("sade")); 
     246            ((ShmupWeapon)weapons[0]).ProjectileCollision = AmmusOsuu; 
    234247            weapons[0].Position = new Vector(0, -40); 
    235             weapons[1] = new Missile(1, 1); 
    236             ((Missile)weapons[1]).MissileCollision = AmmusOsuu; 
     248            weapons[1] = new Missile2(15, 30, LoadImage("ohjus")); 
     249            ((ShmupWeapon)weapons[1]).ProjectileCollision = AmmusOsuu; 
    237250 
    238251            weapons[2] = new Photon(1, 1); 
     
    246259 
    247260            Add(pelaajaAlus); 
    248             pelaajaAlus.SetWeapon(weapons[OLETUSASE]); 
     261             
    249262             
    250263            AddCollisionHandler(pelaajaAlus, PelaajaTormaa); 
     
    358371            //Aseen säätö 
    359372            Photon ase = new Photon(10, 10); 
    360             LisaData ammuksenData; 
     373            LisaData ammuksenData = new LisaData(); 
    361374            ammuksenData.Damage = 20; 
    362375            ammuksenData.Rajahtaa = false; 
     
    409422            } 
    410423 
    411             List<Vector> reitti = ArvoReitti(RandomGen.NextInt(0,5)); 
     424            IList<Vector> reitti = ArvoReitti(RandomGen.NextInt(0,5)); 
    412425            Muodostelma muodostelma = new Muodostelma(alukset, reitti, LuoLahettaja()); 
    413             muodostelma.MovingSpeed = 100; 
     426            muodostelma.MovingSpeed = 200; 
    414427            muodostelma.Start(); 
    415428        } 
     
    438451            Alus vihollinen = new Alus(kuva.Width/5, kuva.Height/5, hp); 
    439452            vihollinen.Image = kuva; 
    440             LisaData tieto; 
     453            LisaData tieto = new LisaData(); 
    441454            tieto.Tyyppi = "vihollinen"; 
    442455            tieto.Rajahtaa = true; 
  • 2010/23/hniemi/ShootEmUp/ShootEmUp/ShootEmUp.csproj

    r897 r993  
    5757  </PropertyGroup> 
    5858  <ItemGroup> 
    59     <Reference Include="Jypeli2, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86"> 
     59    <Reference Include="Jypeli2, Version=2.1.9.0, Culture=neutral, processorArchitecture=x86"> 
    6060      <SpecificVersion>False</SpecificVersion> 
    6161      <HintPath>..\..\..\lib\Jypeli2.dll</HintPath> 
  • 2010/23/hniemi/ShootEmUp/ShootEmUp/Weapons.cs

    r955 r993  
    1212    /// Säilyttää aseita ja aluksia varten tagissa tietoa 
    1313    /// </summary> 
    14     struct LisaData 
    15     { 
    16         public int Damage; 
    17         public string Tyyppi; 
    18         public bool Rajahtaa; 
    19     } 
    20  
    21     /// <summary> 
    22     /// Sädease 
    23     /// Ampuu sinisen säteen 
    24     /// </summary> 
    25     class Beam : Weapon 
    26     { 
    27         private Image ammus; 
    28         public int Damage { get; set; } 
     14    class LisaData 
     15    { 
     16 
     17        private int damage; 
     18        public int Damage 
     19        { 
     20            get { return damage; } 
     21            set { damage = value; } 
     22        } 
     23        private string tyyppi; 
     24        public string Tyyppi 
     25        { 
     26            get { return tyyppi; } 
     27            set { tyyppi = value; } 
     28        } 
     29        private bool rajahtaa; 
     30        public bool Rajahtaa 
     31        { 
     32            get { return rajahtaa; } 
     33            set { rajahtaa = value; } 
     34        } 
     35    } 
     36 
     37    /// <summary> 
     38    /// Abstraktiluokka nopeuttamaan uuden aseiden luontia 
     39    /// </summary> 
     40    abstract class ShmupWeapon : Weapon  
     41    { 
     42        public Image Projectile { get; set; } 
     43        public int Damage { 
     44            get { return ((LisaData)this.Tag).Damage; } 
     45            set { Data.Damage = value;} 
     46        } 
    2947        public int Level { get; private set; } 
    30         public CollisionHandler BeamCollision { get; set; } 
    31  
    32  
    33         public Beam(double width, double height) 
    34             : base(width, height) 
     48        public CollisionHandler ProjectileCollision { get; set; } 
     49        public LisaData Data { 
     50            get { return (LisaData)this.Tag; } 
     51            set { this.Tag = value; } 
     52        } 
     53         
     54 
     55        private double projectileWidth; 
     56        private double projectileHeigth; 
     57 
     58        /// <summary> 
     59        /// Shmup-ase 
     60        /// Luo level 1 aseen damagella 1 
     61        /// </summary> 
     62        /// <param name="width"></param> 
     63        /// <param name="height"></param> 
     64        public ShmupWeapon(double width, double height) 
     65            : base(1, 1) 
    3566        { 
    3667            Level = 1; 
    3768            Color = Color.Blue; 
    38             Damage = 20; 
     69 
     70            projectileWidth = width; 
     71            projectileHeigth = height; 
     72 
     73            LisaData ase = new LisaData(); ; 
     74            ase.Damage = 1; 
     75            ase.Rajahtaa = false; 
     76            ase.Tyyppi = "oma"; 
     77            this.Tag = ase; 
     78 
    3979            this.AddedToGame += LisaaAV; 
    4080            this.TimeBetweenUse = (new TimeSpan(0, 0, 0, 0, 5)); 
     
    4585        /// Lisää kuvan ja äänen aseeseen 
    4686        /// </summary> 
    47         private void LisaaAV() 
     87        protected void LisaaAV() 
    4888        { 
    4989            //AttackSound = Game.LoadSoundEffect("pum"); 
    50             ammus = Game.LoadImage("sade"); 
     90            //ammus = Game.LoadImage("sade"); 
    5191        } 
    5292 
     
    5696        } 
    5797 
     98        /// <summary> 
     99        /// Tämän tehtävä on palauttaa se nopeus, jolla ammus lähtee 
     100        /// </summary> 
     101        /// <returns></returns> 
     102        protected abstract double GetSpeed(); 
     103 
    58104        protected override PhysicsObject OnShoot() 
    59105        { 
    60  
    61             PhysicsObject projectile = new PhysicsObject(Level * 35, Level * 5); 
    62  
    63             LisaData ammus; 
    64             ammus.Damage = 3; 
    65             ammus.Rajahtaa = false; 
    66             ammus.Tyyppi = "oma"; 
    67             projectile.Tag = ammus; 
    68  
    69             projectile.Image = this.ammus; 
     106            PhysicsObject projectile = new PhysicsObject(Level * projectileWidth, Level * projectileHeigth); 
     107 
     108            projectile.Tag = this.Tag; 
     109 
     110            projectile.Image = this.Projectile; 
    70111            projectile.Position = this.Position; 
    71112            projectile.Color = this.Color; 
    72113            projectile.IgnoresExplosions = true; 
    73114            projectile.IgnoresCollisionResponse = true; 
    74             SetCollisionHandler(projectile, BeamCollision); 
    75             ShootProjectile(projectile, 3000 + (Math.Sin(Game.Time.SinceStartOfGame.Milliseconds) * 100)); 
     115            SetCollisionHandler(projectile, ProjectileCollision); 
     116            ShootProjectile(projectile, GetSpeed()); 
    76117 
    77118            return projectile; 
    78119        } 
    79120    } 
     121 
     122    /// <summary> 
     123    /// Sädease 
     124    /// </summary> 
     125    class Beam : ShmupWeapon 
     126    { 
     127        /// <summary> 
     128        /// Säde-aseen konstruktori 
     129        /// Ampuu siis tiukkaan tahtiin 
     130        /// </summary> 
     131        /// <param name="projectileWidth">Ammuksen leveys</param> 
     132        /// <param name="projectileHeigth">Ammuksen pituus</param> 
     133        /// <param name="projectileImage">Ammuksen kuva</param> 
     134        public Beam(double projectileWidth, double projectileHeigth, Image projectileImage) 
     135            : base(projectileHeigth, projectileWidth) 
     136        { 
     137            Projectile = projectileImage; 
     138        } 
     139 
     140        protected override double  GetSpeed() 
     141        { 
     142            return 2000 + (Math.Sin(Game.Time.SinceStartOfGame.Milliseconds) * 100); 
     143        } 
     144    } 
     145 
     146    /// <summary> 
     147    /// Ohjus-ase 
     148    /// </summary> 
     149    class Missile2 : ShmupWeapon 
     150    { 
     151        /// <summary> 
     152        /// Luo ohjus-aseen 
     153        /// </summary> 
     154        /// <param name="projectileWidth">Ammuksen leveys</param> 
     155        /// <param name="projectileHeigth">Ammuksen pituus</param> 
     156        /// <param name="projectileImage">Ammuksen kuva</param> 
     157        public Missile2(double projectileWidth, double projectileHeigth, Image projectileImage) 
     158            : base(projectileHeigth, projectileWidth) 
     159        { 
     160            Projectile = projectileImage; 
     161            Damage = 20; 
     162            this.TimeBetweenUse = (new TimeSpan(0, 0, 0, 0, 300)); 
     163        } 
     164 
     165        protected override double GetSpeed() 
     166        { 
     167            return 1000; 
     168        } 
     169    } 
     170 
    80171 
    81172    /// <summary> 
     
    94185        { 
    95186            Level = 1; 
    96             Damage = 20; 
    97187            this.IsVisible = false; 
    98188            this.TimeBetweenUse = (new TimeSpan(0,0,0,0,300)); 
    99189            Color = Color.Blue; 
    100190            this.AddedToGame += LisaaAV; 
    101             LisaData ase; 
     191            LisaData ase = new LisaData(); 
    102192            ase.Damage = 20; 
    103193            ase.Rajahtaa = true; 
     
    157247        { 
    158248            Level = 1; 
    159             Damage = 20; 
    160249            this.TimeBetweenUse = (new TimeSpan(0,0,0,0,150)); 
    161250            Color = Color.Blue; 
     
    164253 
    165254            //Tagi 
    166             LisaData ase; 
    167             ase.Damage = 20; 
     255            LisaData ase = new LisaData(); ; 
     256            ase.Damage = 15; 
    168257            ase.Rajahtaa = false; 
    169258            ase.Tyyppi = "oma"; 
Note: See TracChangeset for help on using the changeset viewer.