Changeset 1577 for 2010


Ignore:
Timestamp:
2010-08-03 14:59:13 (9 years ago)
Author:
paaaanro
Message:

Viimeistelin Pong-pelin täysin valmiiseen muotoon.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/31/vivevinu/Pong/Peli.cs

    r1527 r1577  
    66public class Peli : PhysicsGame 
    77{ 
     8    Vector nopeusYlos = new Vector(0, 200); 
     9    Vector nopeusAlas = new Vector(0, -200); 
    810    PhysicsObject pallo; 
     11    PhysicsObject maila1; 
     12    PhysicsObject maila2; 
     13    IntMeter pelaajan1Pisteet; 
     14    IntMeter pelaajan2Pisteet; 
     15    PhysicsObject oikeareuna; 
     16    PhysicsObject vasenreuna; 
    917    protected override void Begin() 
    1018    { 
    1119        LuoKentta(); 
     20        AsetaOhjaimet(); 
     21        LisaaLaskurit(); 
    1222        Aloitapeli(); 
    1323    } 
     
    2030        pallo.Restitution = 1.0; 
    2131        Add(pallo); 
    22         Level.CreateBorders(1.0, false); 
     32        AddCollisionHandler(pallo, Kasittelepallontormays); 
     33        maila1 = LuoMaila(Level.Left + 20, 0); 
     34        maila2 = LuoMaila(Level.Right - 20, 0); 
     35        vasenreuna = Level.CreateLeftBorder(); 
     36        vasenreuna.Restitution = 1; 
     37        vasenreuna.IsVisible = false; 
     38        oikeareuna = Level.CreateRightBorder(); 
     39        oikeareuna.Restitution = 1; 
     40        oikeareuna.IsVisible = false; 
     41        PhysicsObject ylareuna = Level.CreateTopBorder(); 
     42        ylareuna.Restitution = 1; 
     43        ylareuna.IsVisible = false; 
     44        PhysicsObject alareuna = Level.CreateBottomBorder(); 
     45        alareuna.Restitution = 1; 
     46        alareuna.IsVisible = false; 
    2347        Level.BackgroundColor = Color.Black; 
    2448        Camera.ZoomToLevel(); 
     
    2953        pallo.Hit(impulssi); 
    3054    } 
    31     void ToinenMaila(double x, double y) 
     55    PhysicsObject LuoMaila(double x, double y) 
    3256    { 
    3357        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    3458        maila.Shape = Shapes.Rectangle; 
    35         maila.X = Level.Left + 20.0; 
    36         maila.Y = 0.0; 
     59        maila.X = x; 
     60        maila.Y = y; 
    3761        maila.Restitution = 1.0; 
    3862        Add(maila); 
     63        return maila; 
     64    } 
     65    void AsetaOhjaimet() 
     66    { 
     67        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     68        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     69        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaaja 1: Liikuta mailaa ylös", maila1, nopeusAlas); 
     70        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     71 
     72        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     73        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     74        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaaja 2: Liikuta mailaa ylös", maila2, nopeusAlas); 
     75        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     76 
     77        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     78        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     79    } 
     80    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     81    { 
     82        if ((maila.Top > Level.Top)&&(nopeus.Y>0)) 
     83        { 
     84            maila.Velocity = Vector.Zero; 
     85            return; 
     86        } 
     87        if ((maila.Bottom < Level.Bottom) && (nopeus.Y < 0)) 
     88        { 
     89            maila.Velocity = Vector.Zero; 
     90            return; 
     91        } 
     92        maila.Velocity = nopeus; 
     93    } 
     94    void LisaaLaskurit()  
     95    { 
     96        pelaajan1Pisteet = LuoPistelaskuri(Screen.Left +100, Screen.Top -100); 
     97        pelaajan2Pisteet = LuoPistelaskuri(Screen.Right -100, Screen.Top -100); 
     98    } 
     99    IntMeter LuoPistelaskuri(double x, double y) 
     100    { 
     101        IntMeter laskuri = new IntMeter(0); 
     102        laskuri.MaxValue = 10; 
     103        Label naytto = new Label(); 
     104        naytto.BindTo(laskuri); 
     105        naytto.X = x; 
     106        naytto.Y = y; 
     107        naytto.TextColor = Color.White; 
     108        Add(naytto); 
     109        return laskuri; 
     110    } 
     111    void Kasittelepallontormays(PhysicsObject pallo, PhysicsObject kohde) 
     112    { 
     113        if (kohde == vasenreuna) 
     114        { 
     115            pelaajan2Pisteet.Value += 1; 
     116        } 
     117        else if (kohde == oikeareuna) 
     118        { 
     119            pelaajan1Pisteet.Value += 1; 
     120        } 
    39121    } 
    40122} 
Note: See TracChangeset for help on using the changeset viewer.