Changeset 1653 for 2010


Ignore:
Timestamp:
2010-08-06 11:25:08 (9 years ago)
Author:
eelaeepu
Message:
 
Location:
2010/31/eelaeepu/space defense 1.0
Files:
3 added
2 edited

Legend:

Unmodified
Added
Removed
  • 2010/31/eelaeepu/space defense 1.0/Content/Content.contentproj

    r1635 r1653  
    103103    </Compile> 
    104104  </ItemGroup> 
     105  <ItemGroup> 
     106    <Compile Include="Red.png"> 
     107      <Name>Red</Name> 
     108      <Importer>TextureImporter</Importer> 
     109      <Processor>TextureProcessor</Processor> 
     110    </Compile> 
     111    <Compile Include="smoke.png"> 
     112      <Name>smoke</Name> 
     113      <Importer>TextureImporter</Importer> 
     114      <Processor>TextureProcessor</Processor> 
     115    </Compile> 
     116    <Compile Include="Yellow.png"> 
     117      <Name>Yellow</Name> 
     118      <Importer>TextureImporter</Importer> 
     119      <Processor>TextureProcessor</Processor> 
     120    </Compile> 
     121  </ItemGroup> 
    105122  <Import Project="$(MSBuildExtensionsPath)\Microsoft\XNA Game Studio\$(XnaFrameworkVersion)\Microsoft.Xna.GameStudio.ContentPipeline.targets" /> 
    106123  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  
  • 2010/31/eelaeepu/space defense 1.0/Peli.cs

    r1635 r1653  
    33using Jypeli.Widgets; 
    44using Jypeli.Assets; 
     5using Jypeli.Effects; 
    56using System.Collections.Generic; 
    67using Physics2DDotNet.Ignorers; 
     
    89public class Avaruuspeli : PhysicsGame 
    910{ 
    10     PhysicsObject alus; 
     11    Alus alus; 
     12    DoubleMeter pelaajaHpmittari; 
    1113    List<Label> valikonKohdat; 
    1214    List<Weapon> aseValikko; 
     
    1820    double aluksennopeus = 200; 
    1921 
     22    Image efekti1 = LoadImage("Red"); 
     23    Image efekti2 = LoadImage("Yellow"); 
     24    Image savu = LoadImage("smoke"); 
     25    ExplosionSystem rajahdys, savut; 
     26 
     27 
    2028    protected override void Begin() 
    2129    { 
     
    3341        Level.CreateBorders(0.2, false); 
    3442        Mouse.IsCursorVisible = true; 
     43        AlustaEfektit(); 
    3544        for (int a = 0; a < 5; a++) 
    3645        { 
     
    4655    } 
    4756 
    48     void LuoAlus() 
    49     { 
    50         alus = new PhysicsObject(40, 50); 
     57    void AlustaEfektit() 
     58    { 
     59        rajahdys = new ExplosionSystem(efekti1, efekti2, 300, false); 
     60        savut = new ExplosionSystem(savu, 300, false); 
     61        savut.MaxLifetime = 2.0; 
     62        savut.MinLifetime = 1.3; 
     63        savut.MinVelocity = 90; 
     64        savut.MaxVelocity = 200; 
     65        Add(savut); 
     66        Add(rajahdys); 
     67    } 
     68 
     69    void LuoAlus(double hp) 
     70    { 
     71        alus = new Alus(40, 50); 
     72        alus.AsetaHitpoints(hp); 
     73        alus.Tag = "omaalus"; 
    5174        alus.Image = LoadImage("alus2"); 
     75 
     76        pelaajaHpmittari = new DoubleMeter(alus.AnnaHitPoints()); 
     77        pelaajaHpmittari.MaxValue = alus.AnnaHitPoints(); 
     78        BarGauge pelaajaHp = new BarGauge(30, 200); 
     79        pelaajaHp.BindTo(pelaajaHpmittari); 
     80        pelaajaHp.BarColor = Color.Red; 
     81        pelaajaHp.BorderColor = Color.Black; 
     82        pelaajaHp.Angle = Angle.Degrees(270); 
     83        pelaajaHp.Position = new Vector(0, Screen.Top - 40); 
     84        Add(pelaajaHp); 
     85 
    5286        luoaseet(); 
    5387        Add(alus); 
     
    83117        valikonKohdat = new List<Label>(); 
    84118 
    85         Label kohta1 = new Label("Aloita uusi peli"); 
    86         kohta1.Position = new Vector(0, 40); 
     119        Label kohta1 = new Label("Aloita uusi peli (Helppo)"); 
     120        kohta1.Position = new Vector(0, 80); 
    87121        valikonKohdat.Add(kohta1); 
    88122 
    89         Label kohta2 = new Label("Lopeta"); 
    90         kohta2.Position = new Vector(0, -40); 
     123        Label kohta2 = new Label("Aloita uusi peli (Vaikea)"); 
     124        kohta2.Position = new Vector(0, 40); 
    91125        valikonKohdat.Add(kohta2); 
    92126 
     127        Label kohta3 = new Label("Aloita uusi peli (Mahdoton)"); 
     128        kohta3.Position = new Vector(0, 0); 
     129        valikonKohdat.Add(kohta3); 
     130 
     131        Label kohta4 = new Label("Lopeta"); 
     132        kohta4.Position = new Vector(0, -40); 
     133        valikonKohdat.Add(kohta4); 
     134 
    93135        foreach (Label valikonKohta in valikonKohdat) 
    94136        { 
     
    96138        } 
    97139 
    98         Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null); 
    99         Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, Lopeta, null); 
     140        Mouse.ListenOn(kohta1, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null, 1000.0); 
     141        Mouse.ListenOn(kohta2, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null, 200.0); 
     142        Mouse.ListenOn(kohta3, MouseButton.Left, ButtonState.Pressed, AloitaPeli, null, 1.0); 
     143        Mouse.ListenOn(kohta4, MouseButton.Left, ButtonState.Pressed, Lopeta, null); 
    100144 
    101145        Mouse.IsCursorVisible = true; 
     
    105149    } 
    106150 
    107     void AloitaPeli() 
     151    void AloitaPeli(double vaikeusTaso) 
    108152    { 
    109153        ClearAll(); 
    110154        LuoKentta(); 
    111155        Camera.ZoomToLevel(); 
    112         LuoAlus(); 
     156        LuoAlus(vaikeusTaso); 
    113157        AsetaOhjaimet(); 
    114158        Mouse.ListenMovement(0.1, KuunteleLiiketta, null); 
     
    150194        AssaultRifle rynnakkoKivaari = new AssaultRifle(60, 20); 
    151195        rynnakkoKivaari.Angle = alus.Angle - Angle.Degrees(90); 
     196        rynnakkoKivaari.Tag = "rk"; 
    152197        rynnakkoKivaari.BulletCollision = AmmusOsuu; 
    153198        rynnakkoKivaari.IsVisible = false; 
     
    155200        plasmaTykki.Angle = alus.Angle - Angle.Degrees(90); 
    156201        plasmaTykki.PlasmaParticleCollision = AmmusOsuu; 
     202        plasmaTykki.Tag = "plasma"; 
    157203        plasmaTykki.IsVisible = false; 
    158204        LaserGun laserAse = new LaserGun(60, 20); 
     
    160206        laserAse.LaserCollision = AmmusOsuu; 
    161207        laserAse.IsVisible = false; 
     208        laserAse.Tag = "laser"; 
    162209 
    163210        aseValikko.Add(rynnakkoKivaari); 
     
    172219    void AmmusOsuu(PhysicsObject ammus, PhysicsObject kohde) 
    173220    { 
     221        int damage = 0; 
    174222        if (kohde == alus) 
    175223            return; 
     224        if (kohde.Tag.ToString() == "vihu") 
     225        { 
     226            Alus k = (Alus)kohde; 
     227            if (aseKaytossa is Cannon) 
     228                damage = 10; 
     229            if (aseKaytossa is AssaultRifle) 
     230                damage = 2; 
     231            if (aseKaytossa is PlasmaCannon) 
     232                damage = 1; 
     233            if (aseKaytossa is LaserGun) 
     234                damage = 10; 
     235            k.AsetaHitpoints(k.AnnaHitPoints() - damage); 
     236        } 
    176237        if (kohde.Tag.ToString() == "ammus") 
    177238        { 
    178             kohde.Destroy(); 
     239            return; 
    179240        } 
    180241        ammus.Destroy(); 
     
    214275 
    215276        base.Update(time); 
    216  
     277         
    217278        if (alus != null) 
    218279        { 
     280            pelaajaHpmittari.Value = alus.AnnaHitPoints(); 
    219281            Vector suunta = Mouse.PositionOnWorld - alus.Position; 
    220282            alus.Angle = suunta.Angle + Angle.Degrees(90); 
     
    236298        { 
    237299            ammus.Size *= 3; 
     300            ammus.IgnoresCollisionResponse = true; 
    238301            ammus.Tag = "ammus"; 
    239302            if (aseKaytossa.Tag.ToString() == "tykki") 
     
    246309    void LuoVihollisAlukset(double aluksenx, double alukseny) 
    247310    { 
    248         PhysicsObject vihollisalus1 = new PhysicsObject(50, 40); 
     311        Alus vihollisalus1 = new Alus(50, 40); 
    249312        vihollisalus1.CollisionIgnorer = ammusIgnorer; 
     313        vihollisalus1.AsetaHitpoints(10); 
     314        vihollisalus1.Tag = "vihu"; 
    250315        int aluksenTyyppi = RandomGen.NextInt(10); 
    251316        switch (aluksenTyyppi) 
     
    262327                    vihollistenaseet.Add(laserase); 
    263328                    viholliset.Add(vihollisalus1); 
    264  
    265  
    266329                    break; 
    267330                } 
     
    285348                    pyssy.TimeBetweenUse = new TimeSpan(4000000); 
    286349                    pyssy.IsVisible = false; 
     350                    pyssy.Ammo.Value = int.MaxValue; 
    287351                    vihollisalus1.Add(pyssy); 
    288352                    pyssy.Angle = Angle.Degrees(90); 
     
    297361                    AssaultRifle pyssy = new AssaultRifle(40, 20); 
    298362                    pyssy.BulletCollision = RifleOsuu; 
     363                    pyssy.TimeBetweenUse = new TimeSpan(2000000); 
     364                    pyssy.Ammo.Value = int.MaxValue; 
     365                    pyssy.IsVisible = false; 
     366                    vihollisalus1.Add(pyssy); 
     367                    pyssy.Angle = Angle.Degrees(90); 
     368                    vihollistenaseet.Add(pyssy); 
     369                    viholliset.Add(vihollisalus1); 
     370                    break; 
     371                } 
     372            case 4: 
     373                { 
     374                    vihollisalus1.Image = LoadImage("vihollis alus8"); 
     375                    AssaultRifle pyssy = new AssaultRifle(40, 20); 
     376                    pyssy.BulletCollision = RifleOsuu; 
     377                    pyssy.Ammo.Value = int.MaxValue; 
    299378                    pyssy.TimeBetweenUse = new TimeSpan(2000000); 
    300379                    pyssy.IsVisible = false; 
     
    305384                    break; 
    306385                } 
    307             case 4: 
    308                 { 
    309                     vihollisalus1.Image = LoadImage("vihollis alus8"); 
    310                     AssaultRifle pyssy = new AssaultRifle(40, 20); 
    311                     pyssy.BulletCollision = RifleOsuu; 
    312                     pyssy.TimeBetweenUse = new TimeSpan(2000000); 
    313                     pyssy.IsVisible = false; 
    314                     vihollisalus1.Add(pyssy); 
    315                     pyssy.Angle = Angle.Degrees(90); 
    316                     vihollistenaseet.Add(pyssy); 
    317                     viholliset.Add(vihollisalus1); 
    318                     break; 
    319                 } 
    320386            case 5: 
    321387                { 
     
    324390                    tykki.IsVisible = false; 
    325391                    vihollisalus1.Add(tykki); 
     392                    tykki.Ammo.Value = int.MaxValue; 
    326393                    tykki.Angle = Angle.Degrees(90); 
    327394                    tykki.TimeBetweenUse = new TimeSpan(30000000); 
     
    338405                    Cannon tykki = new Cannon(20, 10); 
    339406                    vihollisalus1.Add(tykki); 
     407                    tykki.Ammo.Value = int.MaxValue; 
    340408                    tykki.TimeBetweenUse = new TimeSpan(30000000); 
    341409                    tykki.IsVisible = false; 
     
    354422                    tykki.TimeBetweenUse = new TimeSpan(30000000); 
    355423                    tykki.IsVisible = false; 
     424                    tykki.Ammo.Value = int.MaxValue; 
    356425                    tykki.Angle = Angle.Degrees(90); 
    357426                    viholliset.Add(vihollisalus1); 
     
    369438                    plasmaTykki.TimeBetweenUse = new TimeSpan(3000000); 
    370439                    plasmaTykki.IsVisible = false; 
     440                    plasmaTykki.PlasmaParticleCollision = plasmaTykkiOsuu; 
    371441                    plasmaTykki.Angle = Angle.Degrees(90); 
    372442                    vihollistenaseet.Add(plasmaTykki); 
     
    381451                    vihollisalus1.Add(plasmaTykki); 
    382452                    plasmaTykki.IsVisible = false; 
     453                    plasmaTykki.PlasmaParticleCollision = plasmaTykkiOsuu; 
    383454                    plasmaTykki.Angle = Angle.Degrees(90); 
    384455                    vihollistenaseet.Add(plasmaTykki); 
     
    394465        vihollisalus1.X = aluksenx; 
    395466        vihollisalus1.Y = alukseny; 
    396  
     467        vihollisalus1.Destroyed += delegate() { luoUusiKunTuhoutuu(vihollisalus1); }; 
    397468 
    398469        Add(vihollisalus1); 
    399470 
     471    } 
     472 
     473    void luoUusiKunTuhoutuu(Alus alus) 
     474    { 
     475        rajahdys.AddEffect(alus.X, alus.Y, 50); 
     476        savut.AddEffect(alus.X, alus.Y, 50); 
     477        LuoVihollisAlukset(RandomGen.NextDouble(Level.Left, Level.Right),RandomGen.NextDouble(Level.Bottom,Level.Top)); 
    400478    } 
    401479 
     
    404482        if (kohde.Tag.ToString() == "ammus") 
    405483            return; 
     484        if (kohde.Tag.ToString() == "omaalus") 
     485        { 
     486            Alus k = (Alus)kohde; 
     487            k.AsetaHitpoints(k.AnnaHitPoints() - 5); 
     488        } 
    406489        ammus.Destroy(); 
    407490    } 
     
    411494        if (kohde.Tag.ToString() == "ammus") 
    412495            return; 
     496        if (kohde.Tag.ToString() == "omaalus") 
     497        { 
     498            Alus k = (Alus)kohde; 
     499            k.AsetaHitpoints(k.AnnaHitPoints() - 5); 
     500        } 
    413501        ammus.Destroy(); 
    414502    } 
     
    416504    void plasmaTykkiOsuu(PhysicsObject ammus, PhysicsObject kohde) 
    417505    { 
     506         
    418507        if (kohde.Tag.ToString() == "ammus") 
    419508            return; 
     509        if (kohde.Tag.ToString() == "omaalus") 
     510        { 
     511            Alus k = (Alus)kohde; 
     512            k.AsetaHitpoints(k.AnnaHitPoints() - 5); 
     513        } 
    420514        ammus.Destroy(); 
    421515    } 
     
    436530                { 
    437531                    a.Tag = "ammus"; 
     532                    a.Velocity /= 2; 
    438533                    a.CollisionIgnorer = ammusIgnorer; 
    439534                    a.Size = new Vector(15, 5); 
     
    449544            { 
    450545                ammus.CollisionIgnorer = ammusIgnorer; 
     546                ammus.MaximumLifetime = TimeSpan.MaxValue; 
    451547                ammus.Tag = "ammus"; 
     548                ammus.Velocity /= 2; 
    452549                if (ase is PlasmaCannon) 
    453550                { 
     
    462559    void KuulaOsuu(PhysicsObject kuula, PhysicsObject toinen) 
    463560    { 
     561         
    464562        if (toinen.Tag.ToString() == "ammus") 
    465563            return; 
     564        if (toinen.Tag.ToString() == "omaalus") 
     565        { 
     566            Alus k = (Alus)toinen; 
     567            k.AsetaHitpoints(k.AnnaHitPoints() - 5); 
     568        } 
    466569        kuula.Destroy(); 
    467570        Explosion rajahdys = new Explosion(40); 
     
    473576} 
    474577 
     578public class Alus : PhysicsObject 
     579{ 
     580    private double Hitpoints; 
     581 
     582    public Alus(double width, double height) 
     583        : base(width, height) 
     584    { 
     585    } 
     586 
     587    public void AsetaHitpoints(double hp) 
     588    { 
     589        this.Hitpoints = hp; 
     590    } 
     591 
     592    public double AnnaHitPoints() 
     593    { 
     594        return this.Hitpoints; 
     595    } 
     596 
     597 
     598 
     599    public override void Update(Time time) 
     600    { 
     601        if (AnnaHitPoints() <= 0 && !this.IsDestroyed()) 
     602            this.Destroy(); 
     603        base.Update(time); 
     604    } 
     605} 
Note: See TracChangeset for help on using the changeset viewer.