Changeset 8106 for 2016/30/LeoM/Pong


Ignore:
Timestamp:
2016-07-26 10:48:42 (3 years ago)
Author:
lemaline
Message:

Valmis pong-peli. Uusi peli alkaa heti kun toinen voittaa painamalla ok.

Location:
2016/30/LeoM/Pong/Pong/Pong
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • 2016/30/LeoM/Pong/Pong/Pong/Pong.cs

    r8100 r8106  
    1313    Vector nopeusAlas = new Vector(0, -1500); 
    1414 
     15    PhysicsObject vasenReuna; 
     16    PhysicsObject oikeaReuna; 
     17 
    1518    PhysicsObject pallo; 
    1619    PhysicsObject maila1; 
    1720    PhysicsObject maila2; 
     21 
    1822    IntMeter pelaajan1Pisteet; 
    1923    IntMeter pelaajan2Pisteet; 
     
    2630        LisaaLaskurit(); 
    2731        AloitaPeli(); 
    28         
     32 
    2933 
    3034 
     
    3943        Add(pallo); 
    4044        pallo.Restitution = 1.0; 
     45        pallo.Color = Color.Yellow; 
    4146        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    4247        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    43         Level.CreateBorders(1.0, true); 
     48        maila1.Color = Color.BloodRed; 
     49        maila2.Color = Color.Blue; 
     50        vasenReuna = Level.CreateLeftBorder(); 
     51        vasenReuna.Restitution = 1.0; 
     52        vasenReuna.IsVisible = false; 
     53        oikeaReuna = Level.CreateRightBorder(); 
     54        oikeaReuna.Restitution = 1.0; 
     55        oikeaReuna.IsVisible = false; 
     56        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     57        alaReuna.Restitution = 1.0; 
     58        alaReuna.IsVisible = false; 
     59        PhysicsObject yläReuna = Level.CreateTopBorder(); 
     60        yläReuna.Restitution = 1.0; 
     61        yläReuna.IsVisible = false; 
    4462 
    45          
     63        AddCollisionHandler(pallo, KasittelePallonTormays); 
    4664 
    4765        Level.Background.Color = Color.HotPink; 
     
    7189    void AloitaPeli() 
    7290    { 
    73         Vector impulssi = new Vector (2000.0, 0.0); 
     91        Vector impulssi = new Vector(1000.0, 0.0); 
    7492        pallo.Hit(impulssi); 
    7593    } 
     
    7795    PhysicsObject LuoMaila(double x, double y) 
    7896    { 
    79         PhysicsObject maila = PhysicsObject.CreateStaticObject(2.0, 100.0); 
     97        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    8098        maila.Shape = Shape.Rectangle; 
    8199 
     
    108126    { 
    109127        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     128        pelaajan1Pisteet.UpperLimit += Pelaaja1voitti; 
    110129        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     130        pelaajan2Pisteet.UpperLimit += Pelaaja2voitti; 
    111131    } 
    112132 
     
    128148    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
    129149    { 
     150        if (kohde == oikeaReuna) 
     151        { 
     152            pelaajan1Pisteet.Value += 1; 
     153        } 
     154        else if (kohde == vasenReuna) 
     155        { 
     156            pelaajan2Pisteet.Value += 1; 
     157        } 
     158 
     159    } 
     160    const double PALLON_MIN_NOPEUS = 1500; 
     161 
     162    protected override void Update(Time time) 
     163    { 
     164        if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_MIN_NOPEUS) 
     165        { 
     166            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y); 
     167        } 
     168        base.Update(time); 
     169    } 
     170    void Pelaaja1voitti() 
     171    { 
     172        Pelaajavoitti(1); 
     173    } 
     174    void Pelaaja2voitti() 
     175    { 
     176        Pelaajavoitti(2); 
    130177 
    131178    } 
    132179 
    133  
    134  
    135  
    136  
     180    void Pelaajavoitti(int numero) 
     181    { 
     182        ClearGameObjects(); 
     183        MessageWindow voittoikkuna = new MessageWindow("pelaaja "+numero+" voitti"); 
     184        Add(voittoikkuna); 
     185        voittoikkuna.Closed += delegate { Begin(); }; 
     186    } 
    137187 
    138188} 
Note: See TracChangeset for help on using the changeset viewer.