Changeset 1103 for 2010/27


Ignore:
Timestamp:
2010-07-06 14:57:43 (9 years ago)
Author:
jupepaiv
Message:

Sain pongin valmiiksi

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/27/Jupepaiv/Pong/Peli.cs

    r1077 r1103  
    66public class Peli : PhysicsGame 
    77{ 
     8    Vector nopeusYlos = new Vector(0, 200); 
     9    Vector nopeusAlas = new Vector(0, -200); 
     10 
     11 
    812    PhysicsObject pallo; 
    9      
     13    PhysicsObject maila1; 
     14    PhysicsObject maila2; 
     15 
     16    IntMeter pelaajan1Pisteet; 
     17    IntMeter pelaajan2Pisteet; 
     18 
     19    PhysicsObject vasenReuna; 
     20    PhysicsObject oikeaReuna; 
     21 
     22 
    1023    protected override void Begin() 
    1124    { 
    1225        LuoKentta(); 
     26        AsetaOhjaimet(); 
     27        LisaaLaskurit(); 
    1328        AloitaPeli(); 
    14         Vector impulssi = new Vector(500.0, 0.0); 
    15         pallo.Hit(impulssi); 
    16  
    17  
    1829    } 
    1930 
     
    2233        pallo = new PhysicsObject(40.0, 40.0); 
    2334        pallo.Shape = Shapes.Circle; 
    24          
    2535        pallo.X = -200.0; 
    2636        pallo.Y = 0.0; 
    2737        pallo.Restitution = 1.0; 
    2838        Add(pallo); 
     39        AddCollisionHandler(pallo, KasittelePallonTormays); 
    2940 
    30         LuoMaila(Level.Left + 20.0, 0.0); 
    31         LuoMaila(Level.Right - 20.0, 0.0); 
     41        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     42        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3243 
     44        vasenReuna = Level.CreateLeftBorder(); 
     45        vasenReuna.Restitution = 1.0; 
     46        vasenReuna.IsVisible = false; 
     47        oikeaReuna = Level.CreateRightBorder(); 
     48        oikeaReuna.Restitution = 1.0; 
     49        oikeaReuna.IsVisible = false; 
     50        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     51        ylaReuna.Restitution = 1.0; 
     52        ylaReuna.IsVisible = false; 
     53        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     54        alaReuna.Restitution = 1.0; 
     55        alaReuna.IsVisible = false; 
    3356 
    34         Level.CreateBorders(1.0, false); 
    3557        Level.BackgroundColor = Color.Purple; 
     58 
    3659        Camera.ZoomToLevel(); 
    37          
     60    } 
    3861 
     62    PhysicsObject LuoMaila(double x, double y) 
     63    { 
     64        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     65        maila.Shape = Shapes.Rectangle; 
     66        maila.X = x; 
     67        maila.Y = y; 
     68        maila.Restitution = 1.0; 
     69        Add(maila); 
     70        return maila; 
     71    } 
     72 
     73    void LisaaLaskurit() 
     74    { 
     75        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     76        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     77    } 
     78 
     79    IntMeter LuoPisteLaskuri(double x, double y) 
     80    { 
     81        IntMeter laskuri = new IntMeter(0); 
     82        laskuri.MaxValue = 10; 
     83        Label naytto = new Label(); 
     84        naytto.BindTo(laskuri); 
     85        naytto.X = x; 
     86        naytto.Y = y; 
     87        naytto.TextColor = Color.White; 
     88        Add(naytto); 
     89        return laskuri; 
     90    } 
     91 
     92    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     93    { 
     94        if (kohde == oikeaReuna) 
     95        { 
     96            pelaajan1Pisteet.Value += 1; 
     97        } 
     98        else if (kohde == vasenReuna) 
     99        { 
     100            pelaajan2Pisteet.Value += 1; 
     101        } 
    39102    } 
    40103 
     
    45108    } 
    46109 
    47     void LuoMaila(double x, double y) 
     110    void AsetaOhjaimet() 
    48111    { 
    49         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    50         maila.Shape = Shapes.Rectangle; 
    51         maila.X = x; 
    52         maila.Y = y; 
    53         maila.Restitution = 1.0; 
    54         Add(maila); 
     112        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     113        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     114        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     115        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    55116 
     117        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     118        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     119        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     120        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     121 
     122        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     123        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     124 
     125        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     126        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     127        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     128        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     129 
     130        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     131        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     132        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     133        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     134 
     135        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     136        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
    56137    } 
    57138 
    58 }     
     139    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     140    { 
     141        if ((nopeus.Y < 0) && (maila.Y < Level.Bottom)) 
     142        { 
     143            maila.Velocity = Vector.Zero; 
     144            return; 
     145        } 
     146        if ((nopeus.Y > 0) && (maila.Y > Level.Top)) 
     147        { 
     148            maila.Velocity = Vector.Zero; 
     149            return; 
     150        } 
     151 
     152        maila.Velocity = nopeus; 
     153    } 
     154} 
     155 
Note: See TracChangeset for help on using the changeset viewer.