Changeset 4822


Ignore:
Timestamp:
2013-11-26 12:20:00 (10 years ago)
Author:
vesal
Message:

Luokat omiin tiedostoihin

Location:
2013/anlakane/Tiernapojat
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • 2013/anlakane/Tiernapojat/Tiernapojat/Tiernapojat/Tiernapojat.cs

    r4821 r4822  
    66using Jypeli.Effects; 
    77using Jypeli.Widgets; 
    8  
    9 public struct TiernapojanKuvat 
    10 { 
    11     public Image vartalo; 
    12     public Image vartaloTakaa; 
    13     public Image polvillaan; 
    14     public Image kasi; 
    15     public Image miekka; 
    16     public Image kahva; 
    17     public Image paa; 
    18     public Image paaTakaa; 
    19     public Image suuAuki; 
    20 } 
    21  
    22 public class Verho : GameObject 
    23 { 
    24     private bool nostettu = false; 
    25     public bool Nostettu { get { return nostettu; } set { nostettu = value; } } 
    26     public Verho(double leveys, double korkeus, Image kuva) 
    27         : base(leveys, korkeus) 
    28     { 
    29         this.Image = kuva; 
    30     } 
    31 } 
    328 
    339public class Tiernapojat : PhysicsGame 
     
    223199 
    224200 
    225 public class Tiernapoika : PlatformCharacter 
    226 { 
    227     // Tiernapojan osat 
    228     private KaantyvaOsa paa; 
    229     private KaantyvaOsa kasi; 
    230     private PhysicsObject miekka; 
    231     private PhysicsObject miekankahva; 
    232  
    233  
    234     // Alkuperäiset koot 
    235     private Vector koko; 
    236     private Vector paanKoko; 
    237     private Vector kadenKoko; 
    238     private Vector miekanKoko; 
    239     private Vector miekanKahvanKoko; 
    240  
    241     private TiernapojanKuvat kuvat; 
    242  
    243     private Direction suunta; 
    244  
    245     private PhysicsGame peli; 
    246  
    247     public KaantyvaOsa Kasi 
    248     { 
    249         get { return kasi; } 
    250     } 
    251  
    252     public PhysicsObject Miekka 
    253     { 
    254         get { return miekka; } 
    255     } 
    256  
    257  
    258     public Tiernapoika(PhysicsGame peli, double leveys, double korkeus, TiernapojanKuvat kuvat) 
    259         : base(leveys, korkeus) 
    260     { 
    261         this.kuvat = kuvat; 
    262         double suhde = korkeus / leveys; 
    263         Image = kuvat.vartalo; 
    264         Height = Width * Image.Height / Image.Width * suhde; 
    265         koko = Size; 
    266         CollisionIgnoreGroup = 1; 
    267         Mass = 5000.0; 
    268         suunta = Direction.Right; 
    269         DirectionChanged += new Action<Direction>(Kaantyi); 
    270  
    271         paa = new KaantyvaOsa(1, 1); 
    272         paa.Image = kuvat.paa; 
    273         paa.Height = paa.Image.Height * Size.Y / Image.Height; 
    274         paa.Width = paa.Image.Width * Size.X / Image.Width; 
    275         paa.IgnoresGravity = true; 
    276         paa.CollisionIgnoreGroup = 1; 
    277         paanKoko = paa.Size; 
    278         paa.Mass = 10000; 
    279         paa.Suunta = Direction.Left; 
    280  
    281         Add(paa); 
    282  
    283         // Pojan oikea käsi 
    284         kasi = new KaantyvaOsa(Height, Height); 
    285         kasi.Image = kuvat.kasi; 
    286         kasi.Height = kasi.Image.Height * Height / Image.Height / suhde; 
    287         kasi.Width = kasi.Height / kasi.Image.Height * kasi.Image.Width * suhde; 
    288         // Poika ja käsi eivät saa törmätä toisiinsa 
    289         kasi.CollisionIgnoreGroup = 1; 
    290         kadenKoko = kasi.Size; 
    291         kasi.Mass = 2000; 
    292         Add(kasi); 
    293  
    294  
    295         miekka = new PhysicsObject(Height * 0.7, 1); 
    296         miekka.Image = kuvat.miekka; 
    297         miekka.Height = miekka.Width * miekka.Image.Height / miekka.Image.Width; 
    298         miekka.IgnoresGravity = true; 
    299         miekka.CollisionIgnoreGroup = 1; 
    300         miekanKoko = miekka.Size; 
    301         miekka.Angle = Angle.FromDegrees(10); 
    302         kasi.Add(miekka); 
    303  
    304         miekankahva = new PhysicsObject(Height * 0.7, 1); 
    305         miekankahva.Image = kuvat.kahva; 
    306         miekankahva.Height = miekankahva.Image.Height * miekanKoko.Y / miekka.Image.Height; 
    307         miekankahva.Width = miekankahva.Image.Width * miekanKoko.X / miekka.Image.Width; 
    308         miekankahva.IgnoresGravity = true; 
    309         miekankahva.CollisionIgnoreGroup = 1; 
    310         miekanKahvanKoko = miekankahva.Size; 
    311         miekankahva.Angle = Angle.FromDegrees(-20); 
    312         Add(miekankahva); 
    313  
    314         peli.Add(this, 1); 
    315         this.peli = peli; 
    316         MiekkaEsiin(); 
    317         SaadaKoko(koko); 
    318     } 
    319  
    320     private void Kaantyi(Direction suunta) 
    321     { 
    322         double suuntakerroin = 1; 
    323         miekka.StopAngular(); 
    324         if (suunta == Direction.Left) suuntakerroin = -1; 
    325         miekka.Angle = Angle.FromDegrees(10 * suuntakerroin); 
    326         miekankahva.Angle = Angle.FromDegrees(-20 * suuntakerroin); 
    327         kasi.Suunta = suunta; 
    328         // paa.Suunta = suunta; 
    329         this.suunta = suunta; 
    330         paa.Tavoite = Angle.FromDegrees(suuntakerroin * 20); 
    331  
    332         kasi.Position = new Vector(Width / 2 * 0.85 * suuntakerroin, Height * 0.27); 
    333         paa.Position = new Vector(Width * 0.1 * suuntakerroin, Height * 0.3); 
    334         miekankahva.Position = new Vector(0, Height * 0.1); 
    335         miekka.Position = new Vector(kasi.Width / 2 - 10, 0); 
    336     } 
    337  
    338  
    339     private void SaadaKoko(Vector uusikoko, bool myosMuut = true) 
    340     { 
    341         Size = uusikoko; 
    342         if (myosMuut) 
    343         { 
    344             double kerroin = Size.Y / koko.Y; 
    345             kasi.Size = kadenKoko * kerroin; 
    346             miekka.Size = miekanKoko * kerroin; 
    347             miekankahva.Size = miekanKahvanKoko * kerroin; 
    348             paa.Size = paanKoko * kerroin; 
    349         } 
    350         Kaantyi(suunta); 
    351     } 
    352  
    353  
    354     public void Flip() 
    355     { 
    356         if (suunta == Direction.Left) Walk(0.1); 
    357         else Walk(-0.1); 
    358     } 
    359  
    360  
    361     public void Nouse(double nopeus) 
    362     { 
    363         SaadaKoko(koko); 
    364         Kaantyi(suunta); 
    365         Image = kuvat.vartalo; 
    366         paa.Image = kuvat.paa; 
    367     } 
    368  
    369     public void Polvistu(double nopeus) 
    370     { 
    371         SaadaKoko(new Vector(Width, koko.Y / 2), false); 
    372         MiekkaTuppeen(); 
    373         Image = kuvat.polvillaan; 
    374     } 
    375  
    376     public void Pois(double nopeus) 
    377     { 
    378         if (Height < koko.Y / 2) return; 
    379         if (Image == kuvat.polvillaan) Nouse(1); 
    380         SaadaKoko(Size * 0.99); 
    381         //  peli.Remove(this); 
    382         //  peli.Add(this, -1); 
    383         if (Image != kuvat.vartaloTakaa) 
    384         { 
    385             Image = kuvat.vartaloTakaa; 
    386             paa.Image = kuvat.paaTakaa; 
    387             Flip(); 
    388             miekankahva.IsVisible = false; 
    389         } 
    390     } 
    391  
    392     public void Takaisin(double nopeus) 
    393     { 
    394         if (Height > koko.Y) Nouse(nopeus); 
    395         SaadaKoko(Size * 1.01); 
    396         // peli.Remove(this); 
    397         // peli.Add(this, 1); 
    398         if (Image != kuvat.vartalo) 
    399         { 
    400             Image = kuvat.vartalo; 
    401             paa.Image = kuvat.paa; 
    402             Flip(); 
    403             if (!miekka.IsVisible) miekankahva.IsVisible = true; 
    404         } 
    405     } 
    406  
    407     public void MiekkaTuppeen() 
    408     { 
    409         miekka.IsVisible = false; 
    410         miekankahva.IsVisible = true; 
    411         Osoita(-125); 
    412     } 
    413  
    414     public void MiekkaEsiin() 
    415     { 
    416         Osoita(-110); 
    417         miekka.IsVisible = true; 
    418         miekankahva.IsVisible = false; 
    419     } 
    420  
    421     public void Pyorita() 
    422     { 
    423         miekka.ApplyTorque(100000); 
    424     } 
    425  
    426     public void MiekkaSwap() 
    427     { 
    428         if (miekka.IsVisible) MiekkaTuppeen(); else MiekkaEsiin(); 
    429     } 
    430  
    431     public void KyykyynYlos(double nopeus) 
    432     { 
    433         if (Height < koko.Y * 0.6) Nouse(nopeus); else Polvistu(nopeus); 
    434     } 
    435  
    436     public void Osoita(double kulma) 
    437     { 
    438         miekka.StopAngular(); 
    439         Kasi.Tavoite = Angle.FromDegrees(kulma); 
    440     } 
    441  
    442     public void KaannaPaa(double kulma) 
    443     { 
    444         paa.Tavoite = Angle.FromDegrees(kulma); 
    445     } 
    446  
    447     public void AvaaSuu() 
    448     { 
    449         if (paa.Image == kuvat.paa) paa.Image = kuvat.suuAuki; 
    450     } 
    451  
    452     public void SuljeSuu() 
    453     { 
    454         if (paa.Image == kuvat.suuAuki) paa.Image = kuvat.paa; 
    455     } 
    456  
    457     public void Suu(double kulma) 
    458     { 
    459         if (kulma <= 20) SuljeSuu(); else AvaaSuu(); 
    460     } 
    461  
    462     public void Liiku(double speed) 
    463     { 
    464         Walk(speed); 
    465     } 
    466 } 
    467  
    468  
    469 /// @author  Vesa Lappalainen 
    470 /// @version 16.10.2011 
    471 /// @version 24.11.2013 
    472 /// <summary> 
    473 /// Osa, jolle voidaan asettaa suunta johon se pyrkii. 
    474 /// Suunta käännetään toisinpäin jos ollaan menossa vasemmalle. 
    475 /// </summary> 
    476 public class KaantyvaOsa : PhysicsObject 
    477 { 
    478     private Angle oikea = Angle.FromDegrees(0); 
    479     private Angle vasen = Angle.FromDegrees(180); 
    480     private Angle suuntaero = Angle.FromDegrees(0); 
    481     private int s = 1; 
    482     /// <summary> 
    483     /// Tavoitekulma, johon maila pyrkii osoittamaan 
    484     /// </summary> 
    485     public Angle Tavoite { get { return tavoite; } set { tavoite = value; saavutettu = false; } } 
    486     private Angle tavoite; 
    487     private bool saavutettu = true; 
    488     private Direction suunta = Direction.Right; 
    489     public Direction Suunta 
    490     { 
    491         get { return suunta; } 
    492         set 
    493         { 
    494             if (value != Suunta) FlipImage(); 
    495             suunta = value; 
    496             if (value == Direction.Left) { suuntaero = vasen; s = -1; } else { suuntaero = oikea; s = 1; } 
    497             Tavoite = Tavoite; 
    498         } 
    499     } 
    500  
    501  
    502     public KaantyvaOsa(double width, double height) 
    503         : base(width, height) 
    504     { 
    505         // MakeStatic(); 
    506         Mass = 10000; 
    507         IgnoresGravity = true; 
    508         IsUpdated = true; 
    509     } 
    510  
    511  
    512     /// <summary> 
    513     /// Uusi versio Update-metodista, jossa nyt käännetään osaa kohti tavoitekulmaa. 
    514     /// </summary> 
    515     /// <param name="time">Peliaika</param> 
    516     public override void Update(Time time) 
    517     { 
    518         if (saavutettu) { base.Update(time); return; } 
    519         Angle diff = s * Tavoite + suuntaero - Angle; 
    520         double suunta = diff.Degrees; 
    521         double d = 2; 
    522         if (Math.Abs(suunta) > d) 
    523         { 
    524             if (suunta > 180) suunta = 360 - suunta; 
    525             this.StopAngular(); 
    526             this.ApplyTorque(10000000 * 35.0 * suunta); // kokeiltu hihavakio 
    527         } 
    528         else 
    529         { 
    530             Stop(); 
    531             saavutettu = true; 
    532         } 
    533         base.Update(time); 
    534     } 
    535 } 
    536  
  • 2013/anlakane/Tiernapojat/Tiernapojat/Tiernapojat/Tiernapojat.csproj

    r4803 r4822  
    113113  </ItemGroup> 
    114114  <ItemGroup> 
     115    <Compile Include="KaantyvaOsa.cs" /> 
    115116    <Compile Include="Ohjelma.cs" /> 
     117    <Compile Include="Tiernapoika.cs" /> 
    116118    <Compile Include="Tiernapojat.cs" /> 
    117119    <Compile Include="Properties\AssemblyInfo.cs" /> 
     120    <Compile Include="Verho.cs" /> 
    118121  </ItemGroup> 
    119122  <ItemGroup> 
  • 2013/anlakane/Tiernapojat/Tiernapojat/TiernapojatContent

    • Property svn:ignore set to
      Thumbs.db
  • 2013/anlakane/Tiernapojat/Tiernapojat/TiernapojatContent/TiernapojatContent.contentproj

    r4821 r4822  
    234234  </ItemGroup> 
    235235  <ItemGroup> 
    236     <Compile Include="verho.png"> 
    237       <Name>verho</Name> 
    238       <Importer>TextureImporter</Importer> 
    239       <Processor>TextureProcessor</Processor> 
    240     </Compile> 
    241   </ItemGroup> 
    242   <ItemGroup> 
    243236    <Compile Include="verho2.png"> 
    244237      <Name>verho2</Name> 
Note: See TracChangeset for help on using the changeset viewer.