Changeset 1087


Ignore:
Timestamp:
2010-07-06 13:04:14 (9 years ago)
Author:
paaaanro
Message:

Viimeistelin pong-pelin ja aloittelin lumiukkoa.

Location:
2010/27/jomialja
Files:
11 added
1 edited

Legend:

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

    r1073 r1087  
    66public class Peli : PhysicsGame 
    77{ 
     8    Vector nopeusYlos = new Vector(0, 200); 
     9    Vector nopeusAlas = new Vector(0, -200); 
     10 
    811    PhysicsObject pallo; 
    912    PhysicsObject maila1; 
    1013    PhysicsObject maila2; 
     14 
     15    PhysicsObject vasenReuna; 
     16    PhysicsObject oikeaReuna; 
     17 
     18    IntMeter pelaajan1Pisteet; 
     19    IntMeter pelaajan2Pisteet; 
    1120 
    1221    protected override void Begin() 
     
    1423        LuoKentta(); 
    1524        AsetaOhjaimet(); 
     25        LisaaLaskurit(); 
    1626        AloitaPeli(); 
    1727    } 
     
    2535        pallo.Restitution = 1.0; 
    2636        Add(pallo); 
     37        AddCollisionHandler(pallo, KasittelePallonTormays); 
    2738 
    28        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    29        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     39        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     40        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3041 
    31         Level.CreateBorders(1.0, false); 
    32         Level.BackgroundColor = Color.Black; 
     42        vasenReuna = Level.CreateLeftBorder(); 
     43        vasenReuna.Restitution = 1.0; 
     44        vasenReuna.IsVisible = false; 
     45        oikeaReuna = Level.CreateRightBorder(); 
     46        oikeaReuna.Restitution = 1.0; 
     47        oikeaReuna.IsVisible = false; 
     48        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     49        ylaReuna.Restitution = 1.0; 
     50        ylaReuna.IsVisible = false; 
     51        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     52        alaReuna.Restitution = 1.0; 
     53        alaReuna.IsVisible = false; 
     54 
     55        Level.BackgroundColor = Color.Pink; 
    3356 
    3457        Camera.ZoomToLevel(); 
    3558    } 
    36     void AsetaOhjaimet() 
     59 
     60    PhysicsObject LuoMaila(double x, double y) 
    3761    { 
    38         Keyboard.Listen(Key.W, ButtonState.Pressed, LiikutaMailaaYlos, "Pelaaja 1: Liikuta mailaa ylös", maila1); 
    39         Keyboard.Listen(Key.W, ButtonState.Released, PysaytaMaila, null, maila1); 
    40         Keyboard.Listen(Key.S, ButtonState.Pressed, LiikutaMailaaAlas, "Pelaaja 1: Liikuta mailaa alas", maila1); 
    41         Keyboard.Listen(Key.S, ButtonState.Released, PysaytaMaila, null, maila1); 
    42  
    43         Keyboard.Listen(Key.Up, ButtonState.Pressed, LiikutaMailaaYlos, "Pelaaja 2: Liikuta mailaa ylös", maila2); 
    44         Keyboard.Listen(Key.Up, ButtonState.Released, PysaytaMaila, null, maila2); 
    45         Keyboard.Listen(Key.Down, ButtonState.Pressed, LiikutaMailaaAlas, "Pelaaja 2: Liikuta mailaa alas", maila2); 
    46         Keyboard.Listen(Key.Down, ButtonState.Released, PysaytaMaila, null, maila2); 
    47  
    48         Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    49         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     62        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     63        maila.Shape = Shapes.Rectangle; 
     64        maila.X = x; 
     65        maila.Y = y; 
     66        maila.Restitution = 1.5; 
     67        Add(maila); 
     68        return maila; 
    5069    } 
    5170 
     71    void LisaaLaskurit() 
     72    { 
     73        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     74        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     75    } 
     76 
     77    IntMeter LuoPisteLaskuri(double x, double y) 
     78    { 
     79        IntMeter laskuri = new IntMeter(0); 
     80        laskuri.MaxValue = 10; 
     81        Label naytto = new Label(); 
     82        naytto.BindTo(laskuri); 
     83        naytto.X = x; 
     84        naytto.Y = y; 
     85        naytto.TextColor = Color.White; 
     86        Add(naytto); 
     87        return laskuri; 
     88    } 
     89 
     90    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     91    { 
     92        if (kohde == oikeaReuna) 
     93        { 
     94            pelaajan1Pisteet.Value += 1; 
     95        } 
     96        else if (kohde == vasenReuna) 
     97        { 
     98            pelaajan2Pisteet.Value += 1; 
     99        } 
     100    } 
    52101 
    53102    void AloitaPeli() 
     
    57106    } 
    58107 
    59     PhysicsObject LuoMaila(double x, double y) 
     108    void AsetaOhjaimet() 
     109    { 
     110        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     111        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     112        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     113        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     114 
     115        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     116        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     117        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     118        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     119 
     120        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     121        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     122 
     123        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     124        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     125        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     126        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     127 
     128        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     129        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     130        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     131        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     132 
     133        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     134        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     135    } 
     136 
     137    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     138    { 
     139        if ((nopeus.Y < 0) && (maila.Y < Level.Bottom)) 
    60140        { 
    61         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    62         maila.Shape = Shapes.Rectangle; 
    63         maila.X = x; 
    64         maila.Y = y; 
    65         maila.Restitution = 1.0; 
    66         Add(maila); 
    67         return maila; 
     141            maila.Velocity = Vector.Zero; 
     142            return; 
     143        } 
     144        if ((nopeus.Y > 0) && (maila.Y > Level.Top)) 
     145        { 
     146            maila.Velocity = Vector.Zero; 
     147            return; 
    68148        } 
    69149 
    70    void LiikutaMailaaYlos(PhysicsObject maila) 
    71         { 
    72             Vector nopeus = new Vector(0, 200); 
    73             maila.Velocity = nopeus; 
     150        maila.Velocity = nopeus; 
     151    } 
     152} 
    74153 
    75         } 
    76         void PysaytaMaila(PhysicsObject maila) 
    77         { 
    78             maila.Velocity = Vector.Zero; 
    79         } 
    80         void LiikutaMailaaAlas(PhysicsObject maila) 
    81         { 
    82             Vector nopeus = new Vector(0, -200); 
    83             maila.Velocity = nopeus; 
    84         } 
    85  
    86         
    87  
    88  
    89 } 
Note: See TracChangeset for help on using the changeset viewer.