Changeset 6531 for 2015


Ignore:
Timestamp:
2015-06-29 14:55:39 (4 years ago)
Author:
misakana
Message:
 
Location:
2015/27/MarkR
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • 2015/27/MarkR/Pong/Pong/Pong/Pong.cs

    r6504 r6531  
    99public class Pong : PhysicsGame 
    1010{ 
     11    Vector nopeusYlos = new Vector(0, 200); 
     12    Vector nopeusAlas = new Vector(0, -200); 
     13 
    1114    PhysicsObject pallo; 
     15    PhysicsObject maila1; 
     16    PhysicsObject maila2; 
     17 
     18    PhysicsObject vasenReuna; 
     19    PhysicsObject oikeaReuna; 
     20 
     21    IntMeter pelaajan1Pisteet; 
     22    IntMeter pelaajan2Pisteet; 
    1223 
    1324    public override void Begin() 
     
    1526        LuoKentta(); 
    1627        AsetaOhjaimet(); 
     28        LisaaLaskurit(); 
    1729        AloitaPeli(); 
    1830 
     
    2133        pallo.Hit(impulssi); 
    2234 
    23         
    24     }     
     35 
     36    } 
    2537    void LuoKentta() 
    2638    { 
     
    3244        pallo.Y = 0.0; 
    3345 
    34         LuoMaila(Level.Left + 20.0, 0.0); 
    35         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); 
    3648 
    37         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    38         maila.Shape = Shape.Rectangle; 
    39         maila.X = Level.Left + 20.0; 
    40         maila.Y = 0.0; 
    41         maila.Restitution = 1.0; 
    42         Add(maila); 
    4349 
    44         PhysicsObject maila2 = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    45         maila2.Shape = Shape.Rectangle; 
    46         maila2.X = Level.Left + 20.0; 
    47         maila2.Y = 0.0; 
    48         maila2.Restitution = 1.0; 
    49         Add(maila2); 
    5050 
    51         Level.CreateBorders(1.0, false); 
     51        vasenReuna = Level.CreateLeftBorder(); 
     52        vasenReuna.Restitution = 1.0; 
     53        vasenReuna.IsVisible = false; 
     54 
     55        oikeaReuna = Level.CreateRightBorder(); 
     56        oikeaReuna.Restitution = 1.0; 
     57        oikeaReuna.IsVisible = false; 
     58 
     59        PhysicsObject ylareuna = Level.CreateTopBorder(); 
     60        oikeaReuna.Restitution = 1.0; 
     61        oikeaReuna.IsVisible = false; 
     62 
     63        PhysicsObject alareuna = Level.CreateBottomBorder(); 
     64        oikeaReuna.Restitution = 1.0; 
     65        oikeaReuna.IsVisible = false; 
     66 
    5267        Level.Background.Color = Color.Black; 
    5368 
    5469        Camera.ZoomToLevel(); 
     70 
     71        AddCollisionHandler(pallo, KasittelePallonTormays); 
    5572    } 
    5673 
     
    6178    } 
    6279 
    63     void LuoMaila(double x, double y) 
     80    PhysicsObject LuoMaila(double x, double y) 
    6481    { 
    6582        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     
    6986        maila.Restitution = 1.0; 
    7087        Add(maila); 
     88        return maila; 
    7189    } 
    7290    void AsetaOhjaimet() 
    73 { 
    74         Keyboard.Listen(Key.W, ButtonState.Down, LiikutaMaila1Ylos, "Pelaaja1: Liikuta mailaa ylös"); 
    75     Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     91    { 
     92        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     93        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     94        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     95        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    7696 
     97        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     98        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    7799 
    78 } 
     100        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     101        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     102        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     103        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     104    } 
     105    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     106    { 
     107        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     108        { 
     109            maila.Velocity = Vector.Zero; 
     110            return; 
     111        } 
     112        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     113        { 
     114 
     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 
     126    IntMeter LuoPisteLaskuri(double x, double y) 
     127    { 
     128        IntMeter laskuri = new IntMeter(0); 
     129        laskuri.MaxValue = 10; 
     130        
     131 
     132        Label naytto = new Label(); 
     133        naytto.BindTo(laskuri); 
     134        naytto.X = x; 
     135        naytto.Y = y; 
     136        naytto.TextColor = Color.White; 
     137        naytto.BorderColor = Level.Background.Color; 
     138        naytto.Color = Level.Background.Color; 
     139        Add(naytto); 
     140 
     141        return laskuri; 
     142    } 
     143 
     144    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     145    { 
     146        if (kohde == oikeaReuna) 
     147        { 
     148            pelaajan1Pisteet.Value += 1; 
     149        } 
     150        else if (kohde == vasenReuna) 
     151        { 
     152            pelaajan2Pisteet.Value += 1; 
     153        } 
     154 
     155    } 
    79156} 
    80157 
Note: See TracChangeset for help on using the changeset viewer.