Changeset 3435


Ignore:
Timestamp:
2012-07-02 14:28:07 (9 years ago)
Author:
jomajusi
Message:

Talletus.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/27/JoukoS/Pong/Pong/Pong/Pong.cs

    r3425 r3435  
    1111public class Pong : PhysicsGame 
    1212{ 
     13    Vector nopeusYlos = new Vector(0, 200); 
     14    Vector nopeusAlas = new Vector(0, -200); 
     15 
     16    PhysicsObject pallo; 
    1317    PhysicsObject maila1; 
    1418    PhysicsObject maila2; 
    15     PhysicsObject pallo; 
    16     Vector nopeusYlos = new Vector(0, 200); 
    17     Vector nopeusAlas = new Vector(0, -200); 
     19 
     20    PhysicsObject vasenReuna; 
     21    PhysicsObject oikeaReuna; 
     22 
     23    IntMeter pelaajan1Pisteet; 
     24    IntMeter pelaajan2Pisteet; 
    1825 
    1926    public override void Begin() 
    2027    { 
    2128        LuoKentta(); 
     29        AsetaOhjaimet(); 
     30        LisaaLaskurit(); 
    2231        AloitaPeli(); 
    23         AsetaOhjaimet(); 
    24         AsetaNopeus(); 
    25         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    2632    } 
    2733 
     
    3339        pallo.Y = 0.0; 
    3440        pallo.Restitution = 1.0; 
     41        pallo.KineticFriction = 0.0; 
     42        pallo.MomentOfInertia = Double.PositiveInfinity; 
    3543        Add(pallo); 
     44        AddCollisionHandler(pallo, KasittelePallonTormays); 
    3645 
    37         LuoMaila(Level.Left + 20.0, 0.0); 
    38         LuoMaila(Level.Right - 20.0, 0.0); 
     46        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     47        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3948 
    40         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    41         maila.Shape = Shape.Rectangle; 
    42         maila.X = Level.Left + 20.0; 
    43         maila.Y = 0.0; 
    44         maila.Restitution = 1.0; 
    45         Add(maila); 
     49        vasenReuna = Level.CreateLeftBorder(); 
     50        vasenReuna.Restitution = 1.0; 
     51        vasenReuna.KineticFriction = 0.0; 
     52        vasenReuna.IsVisible = false; 
    4653 
    47         Level.CreateBorders(1.0, false); 
     54        oikeaReuna = Level.CreateRightBorder(); 
     55        oikeaReuna.Restitution = 1.0; 
     56        oikeaReuna.KineticFriction = 0.0; 
     57        oikeaReuna.IsVisible = false; 
     58 
     59        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     60        ylaReuna.Restitution = 1.0; 
     61        ylaReuna.KineticFriction = 0.0; 
     62        ylaReuna.IsVisible = false; 
     63 
     64        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     65        alaReuna.Restitution = 1.0; 
     66        alaReuna.IsVisible = false; 
     67        alaReuna.KineticFriction = 0.0; 
     68 
    4869        Level.BackgroundColor = Color.Black; 
    4970 
    5071        Camera.ZoomToLevel(); 
     72    } 
     73 
     74    PhysicsObject LuoMaila(double x, double y) 
     75    { 
     76        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     77        maila.Shape = Shape.Rectangle; 
     78        maila.X = x; 
     79        maila.Y = y; 
     80        maila.Restitution = 1.0; 
     81        maila.KineticFriction = 0.0; 
     82        Add(maila); 
     83        return maila; 
     84    } 
     85 
     86    void LisaaLaskurit() 
     87    { 
     88        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     89        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     90    } 
     91 
     92    IntMeter LuoPisteLaskuri(double x, double y) 
     93    { 
     94        IntMeter laskuri = new IntMeter(0); 
     95        laskuri.MaxValue = 10; 
     96 
     97        Label naytto = new Label(); 
     98        naytto.BindTo(laskuri); 
     99        naytto.X = x; 
     100        naytto.Y = y; 
     101        naytto.TextColor = Color.White; 
     102        naytto.BorderColor = Level.BackgroundColor; 
     103        naytto.Color = Level.BackgroundColor; 
     104        Add(naytto); 
     105 
     106        return laskuri; 
     107    } 
     108 
     109    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     110    { 
     111        if (kohde == oikeaReuna) 
     112        { 
     113            pelaajan1Pisteet.Value += 1; 
     114        } 
     115        else if (kohde == vasenReuna) 
     116        { 
     117            pelaajan2Pisteet.Value += 1; 
     118        } 
    51119    } 
    52120 
     
    56124        pallo.Hit(impulssi); 
    57125    } 
    58     void LuoMaila(double x, double y) 
    59     { 
    60         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    61         maila.Shape = Shape.Rectangle; 
    62         maila.X = x; 
    63         maila.Y = y; 
    64         maila.Restitution = 1.0; 
    65         Add(maila); 
    66     } 
     126 
    67127    void AsetaOhjaimet() 
    68128    { 
    69         Keyboard.Listen(Key.A, ButtonState.Down, LiikutaMaila1Ylos, "Pelaaja 1: Liikuta mailaa ylös"); 
    70         Keyboard.Listen(Key.A, ButtonState.Released, PysaytaMaila1, null); 
     129        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     130        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     131        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     132        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    71133 
     134        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     135        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     136        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     137        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     138 
     139        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    72140        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    73141    } 
     142 
    74143    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    75144    { 
     145        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     146        { 
     147            maila.Velocity = Vector.Zero; 
     148            return; 
     149        } 
     150        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     151        { 
     152            maila.Velocity = Vector.Zero; 
     153            return; 
     154        } 
     155 
    76156        maila.Velocity = nopeus; 
    77157    } 
    78  
    79158} 
Note: See TracChangeset for help on using the changeset viewer.