Changeset 1995


Ignore:
Timestamp:
2011-06-14 14:59:35 (8 years ago)
Author:
tekrjant
Message:

Pong-peli saatu valmiiksi.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2011/24/EmmiT/Pong/Pong/Pong/Peli.cs

    r1971 r1995  
    99public class Peli : PhysicsGame 
    1010{ 
     11    Vector nopeusYlos = new Vector(0, 200); 
     12    Vector nopeusAlas = new Vector(0, -200); 
     13 
    1114    PhysicsObject pallo; 
     15 
     16    PhysicsObject maila1; 
     17    PhysicsObject maila2; 
     18 
     19    PhysicsObject vasenReuna; 
     20    PhysicsObject oikeaReuna; 
     21 
     22    IntMeter pelaajan1Pisteet; 
     23    IntMeter pelaajan2Pisteet; 
     24 
    1225    public override void Begin() 
    1326    { 
    1427        // TODO: Kirjoita ohjelmakoodisi tähän 
    1528        LuoKentta(); 
     29        AsetaOhjaimet(); 
     30        LisaaLaskurit(); 
    1631        AloitaPeli(); 
    1732    } 
     
    2540        pallo.Y = 0.0; 
    2641        pallo.Restitution = 1.0; 
     42         
     43        AddCollisionHandler(pallo, KasittelePallonTormays); 
    2744 
    28         LuoMaila(Level.Left + 20.0, 0.0); 
    29         LuoMaila(Level.Right - 20.0, 0.0); 
     45        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     46        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3047 
    31         Level.CreateBorders(1.0, false); 
     48        vasenReuna = Level.CreateLeftBorder(); 
     49        vasenReuna.Restitution = 1.0; 
     50        vasenReuna.IsVisible = false; 
     51 
     52        oikeaReuna = Level.CreateRightBorder(); 
     53        oikeaReuna.Restitution = 1.0; 
     54        oikeaReuna.IsVisible = false; 
     55 
     56        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     57        alaReuna.Restitution = 1.0; 
     58        alaReuna.IsVisible = false; 
     59 
     60        PhysicsObject yläReuna = Level.CreateTopBorder(); 
     61        yläReuna.Restitution = 1.0; 
     62        yläReuna.IsVisible = false; 
     63 
    3264        Level.BackgroundColor = Color.Black; 
    3365        Camera.ZoomToLevel(); 
     66 
     67        MessageDisplay.TextColor = Color.White; 
    3468    } 
    3569 
     
    4074    } 
    4175 
    42     void LuoMaila(double x, double y) 
     76    PhysicsObject LuoMaila(double x, double y) 
    4377    { 
    4478        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     
    4882        maila.Restitution = 1.0; 
    4983        Add(maila); 
     84 
     85        return maila; 
    5086    } 
    5187 
     88    void AsetaOhjaimet() 
     89    { 
     90        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     91        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     92        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja1: Liikuta mailaa alas", maila1, nopeusAlas); 
     93        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    5294 
     95        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     96        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     97        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     98        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    5399 
     100        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     101        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     102    } 
     103 
     104    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     105    { 
     106        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     107        { 
     108            maila.Velocity = Vector.Zero; 
     109            return; 
     110        } 
     111        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     112        { 
     113            maila.Velocity = Vector.Zero; 
     114            return; 
     115        } 
     116        maila.Velocity = nopeus; 
     117    } 
     118 
     119    void LisaaLaskurit() 
     120    { 
     121        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left +100.0, Screen.Top -100.0); 
     122        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right -100.0, Screen.Top -100.0); 
     123    } 
     124 
     125    IntMeter LuoPisteLaskuri(double x, double y) 
     126    { 
     127        IntMeter laskuri = new IntMeter(0); 
     128        laskuri.MaxValue = 10; 
     129        Label naytto = new Label(); 
     130        naytto.BindTo(laskuri); 
     131        naytto.X = x; 
     132        naytto.Y = y; 
     133        naytto.TextColor = Color.White; 
     134        naytto.BorderColor = Level.BackgroundColor; 
     135        naytto.Color = Level.BackgroundColor; 
     136        Add(naytto); 
     137        return laskuri; 
     138    } 
     139 
     140    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     141    { 
     142        if (kohde == oikeaReuna) 
     143        { 
     144            pelaajan1Pisteet.Value += 1; 
     145        } 
     146        else if (kohde == vasenReuna) 
     147        { 
     148            pelaajan2Pisteet.Value += 1; 
     149        } 
     150    } 
    54151 
    55152} 
Note: See TracChangeset for help on using the changeset viewer.