Changeset 927


Ignore:
Timestamp:
2010-06-16 21:55:24 (9 years ago)
Author:
tekrjant
Message:

Monta kerrosta, voi mennä katosta läpi.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/24/tekrjant/Laskuvarjo/Peli.cs

    r925 r927  
    3737 
    3838        LuoMaasto(); 
    39         LuoTalot(); 
     39        LuoTalo(); 
    4040        LisaaPilvet(); 
    4141 
     
    4848        pelaaja.X = 0; 
    4949        pelaaja.Y = Level.Top - 100; 
     50        //pelaaja.X = -200; 
     51        //pelaaja.Y = Level.Bottom + 20; 
    5052        Add(pelaaja); 
    5153 
     
    101103    { 
    102104        SuljeLaskuvarjo(); 
    103  
    104         MessageDisplay.Add("nopeus: " + pelaaja.Velocity.Y); 
    105105 
    106106        if (Math.Abs(pelaaja.Velocity.Y) > 200) 
     
    173173    } 
    174174 
    175     void LuoTalot() 
    176     { 
    177         LuoTalo(200, 100, 0); 
    178     } 
    179  
    180     void LuoTalo(double leveys, double korkeus, double x) 
     175    void LuoTalo() 
     176    { 
     177        LuoKerros( 200, 100, 0, Level.Bottom ); 
     178        LuoKerros( 200, 100, 0, Level.Bottom + 100 ); 
     179        LuoKerros( 200, 100, 0, Level.Bottom + 200 ); 
     180        LuoKerros( 200, 100, 0, Level.Bottom + 300 ); 
     181        LuoKerros( 200, 100, 0, Level.Bottom + 400 ); 
     182    } 
     183 
     184    void LuoKerros(double leveys, double korkeus, double x, double y) 
    181185    { 
    182186        double left = x - leveys / 2; 
    183187        double right = x + leveys / 2; 
    184         double kattoParrunPaksuus = 20; 
    185  
    186         GameObject seina = new GameObject(leveys, korkeus); 
    187         seina.Image = seinanKuva; 
    188         seina.X = x; 
    189         seina.Y = Level.Bottom + korkeus / 2; 
    190         seina.TextureWrapSize = new Vector(leveys / 64, korkeus / 64); 
    191         Add(seina); 
    192  
    193         PhysicsObject vasenSeina = LuoParru(20, korkeus - kattoParrunPaksuus / 2); 
     188        double katonPaksuus = 20; 
     189 
     190        GameObject takaSeina = new GameObject(leveys, korkeus); 
     191        takaSeina.Image = seinanKuva; 
     192        takaSeina.X = x; 
     193        takaSeina.Y = y + korkeus / 2; 
     194        takaSeina.TextureWrapSize = new Vector(leveys / 64, korkeus / 64); 
     195        Add(takaSeina); 
     196 
     197        PhysicsObject vasenSeina = LuoSeina(20, korkeus - katonPaksuus); 
    194198        vasenSeina.X = left + vasenSeina.Width / 2; 
    195         vasenSeina.Y = Level.Bottom + vasenSeina.Height / 2; 
    196  
    197         PhysicsObject oikeaSeina = LuoParru(20, korkeus - kattoParrunPaksuus / 2); 
     199        vasenSeina.Y = y + vasenSeina.Height / 2; 
     200 
     201        PhysicsObject oikeaSeina = LuoSeina(20, korkeus - katonPaksuus); 
    198202        oikeaSeina.X = right - oikeaSeina.Width / 2; 
    199         oikeaSeina.Y = Level.Bottom + oikeaSeina.Height / 2; 
    200  
    201         PhysicsObject keskiParru = LuoParru(30, korkeus - kattoParrunPaksuus / 2); 
    202         keskiParru.X = x; 
    203         keskiParru.Y = Level.Bottom + keskiParru.Height / 2; 
    204  
    205         PhysicsObject kattoParru1 = LuoParru(leveys / 2, kattoParrunPaksuus); 
    206         kattoParru1.X = x - leveys / 4; 
    207         kattoParru1.Y = Level.Bottom + korkeus; 
    208  
    209         PhysicsObject kattoParru2 = LuoParru(leveys / 2, kattoParrunPaksuus); 
    210         kattoParru2.X = x + leveys / 4; 
    211         kattoParru2.Y = Level.Bottom + korkeus + 10; 
    212     } 
    213  
    214     PhysicsObject LuoParru(double leveys, double korkeus) 
    215     { 
    216         PhysicsObject parru = new PhysicsObject(leveys, korkeus); 
     203        oikeaSeina.Y = y + oikeaSeina.Height / 2; 
     204 
     205        PhysicsObject vasenTukiPalkki = PhysicsObject.CreateStaticObject( 20, 20 ); 
     206        vasenTukiPalkki.X = left + vasenSeina.Width + vasenTukiPalkki.Width / 2; 
     207        vasenTukiPalkki.Y = y + korkeus - katonPaksuus - vasenTukiPalkki.Height / 2; 
     208        vasenTukiPalkki.Color = Color.Black; 
     209        Add( vasenTukiPalkki ); 
     210 
     211        PhysicsObject oikeaTukiPalkki = PhysicsObject.CreateStaticObject( 20, 20 ); 
     212        oikeaTukiPalkki.X = right - oikeaSeina.Width - oikeaTukiPalkki.Width / 2; 
     213        oikeaTukiPalkki.Y = y + korkeus - katonPaksuus - oikeaTukiPalkki.Height / 2; 
     214        oikeaTukiPalkki.Color = Color.Black; 
     215        Add( oikeaTukiPalkki ); 
     216 
     217        PhysicsObject katto = LuoKatto( leveys, katonPaksuus ); 
     218        katto.X = x; 
     219        katto.Y = y + korkeus - katto.Height / 2; 
     220    } 
     221 
     222    PhysicsObject LuoSeina( double leveys, double korkeus) 
     223    { 
     224        PhysicsObject seina = PhysicsObject.CreateStaticObject( leveys, korkeus, Shapes.Rectangle, CollisionShapeQuality.FromValue( 0.8 ) ); 
     225        seina.KineticFriction = 0.0; 
     226        seina.Restitution = 0.1; 
     227        seina.Color = Color.Brown; 
     228        Add( seina ); 
     229        return seina; 
     230    } 
     231 
     232    PhysicsObject LuoKatto(double leveys, double korkeus) 
     233    { 
     234        PhysicsObject parru = new PhysicsObject(leveys, korkeus, Shapes.Rectangle, CollisionShapeQuality.FromValue(0.8)); 
    217235        parru.Mass = 500; 
    218236        parru.AngularDamping = 0.95; 
     
    223241        parru.Color = Color.Brown; 
    224242        Add(parru); 
     243        AddCollisionHandler( parru, kattoonOsuu ); 
    225244        return parru; 
     245    } 
     246 
     247    void kattoonOsuu( PhysicsObject katto, PhysicsObject toinen ) 
     248    { 
     249        if ( katto.Width > 50 && Math.Abs(toinen.Velocity.Y) > 100 ) 
     250        { 
     251            toinen.Velocity = new Vector( toinen.Velocity.X, toinen.Velocity.Y * 0.6 ); 
     252            katto.Destroy(); 
     253 
     254            PhysicsObject pala1 = LuoKatto( katto.Width * 0.3, katto.Height ); 
     255            pala1.X = katto.X - katto.Width * 0.15; 
     256            pala1.Y = katto.Y; 
     257 
     258            PhysicsObject pala2 = LuoKatto( katto.Width * 0.3, katto.Height ); 
     259            pala2.X = katto.X + katto.Width * 0.15; 
     260            pala2.Y = katto.Y; 
     261        } 
    226262    } 
    227263 
     
    246282        Keyboard.Listen(Key.Left, ButtonState.Released, pelaaja.StopHorizontal, null); 
    247283        Keyboard.Listen(Key.Right, ButtonState.Released, pelaaja.StopHorizontal, null); 
    248         Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, null, 10000.0); 
     284        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, null, 20000.0); 
    249285    } 
    250286 
     
    263299    void pelaajaMatalalle() 
    264300    { 
     301        pelaaja.X = 0; 
    265302        pelaaja.Y = Level.Bottom + 1500; 
    266303    } 
Note: See TracChangeset for help on using the changeset viewer.