Changeset 2691


Ignore:
Timestamp:
2012-04-16 12:00:44 (11 years ago)
Author:
anonymous
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/JAO/JaakkoSivill/pong/pong/pong/pong.cs

    r2683 r2691  
    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; 
    1217 
    13      
     18    PhysicsObject vasenReuna; 
     19    PhysicsObject oikeaReuna; 
     20 
     21    IntMeter pelaajan1Pisteet; 
     22    IntMeter pelaajan2Pisteet; 
    1423 
    1524    public override void Begin() 
    1625    { 
    1726        LuoKentta(); 
     27        AsetaOhjaimet(); 
     28        LisaaLaskurit(); 
    1829        AloitaPeli(); 
    19         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    20         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    2130    } 
     31 
    2232    void LuoKentta() 
    2333    { 
    2434        pallo = new PhysicsObject(40.0, 40.0); 
    25         Add(pallo); 
    2635        pallo.Shape = Shape.Circle; 
    2736        pallo.X = -200.0; 
    2837        pallo.Y = 0.0; 
     38        pallo.Restitution = 1.0; 
     39        pallo.KineticFriction = 0.0; 
     40        pallo.MomentOfInertia = Double.PositiveInfinity; 
     41        Add(pallo); 
     42        AddCollisionHandler(pallo, KasittelePallonTormays); 
     43 
     44        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     45        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     46 
     47        vasenReuna = Level.CreateLeftBorder(); 
     48        vasenReuna.Restitution = 1.0; 
     49        vasenReuna.KineticFriction = 0.0; 
     50        vasenReuna.IsVisible = false; 
     51        oikeaReuna = Level.CreateRightBorder(); 
     52        oikeaReuna.Restitution = 1.0; 
     53        oikeaReuna.KineticFriction = 0.0; 
     54        oikeaReuna.IsVisible = false; 
     55        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     56        ylaReuna.Restitution = 1.0; 
     57        ylaReuna.KineticFriction = 0.0; 
     58        ylaReuna.IsVisible = false; 
     59        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     60        alaReuna.Restitution = 1.0; 
     61        alaReuna.IsVisible = false; 
     62        alaReuna.KineticFriction = 0.0; 
     63 
     64        Level.BackgroundColor = Color.Black; 
     65 
     66        Camera.ZoomToLevel(); 
     67    } 
     68 
     69    PhysicsObject LuoMaila(double x, double y) 
     70    { 
     71        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     72        maila.Shape = Shape.Rectangle; 
     73        maila.X = x; 
     74        maila.Y = y; 
     75        maila.Restitution = 1.0; 
     76        maila.KineticFriction = 0.0; 
     77        Add(maila); 
     78        return maila; 
     79    } 
     80 
     81    void LisaaLaskurit() 
     82    { 
     83        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     84        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     85    } 
     86 
     87    IntMeter LuoPisteLaskuri(double x, double y) 
     88    { 
     89        IntMeter laskuri = new IntMeter(0); 
     90        laskuri.MaxValue = 10; 
     91        Label naytto = new Label(); 
     92        naytto.BindTo(laskuri); 
     93        naytto.X = x; 
     94        naytto.Y = y; 
     95        naytto.TextColor = Color.White; 
     96        naytto.BorderColor = Level.BackgroundColor; 
     97        naytto.Color = Level.BackgroundColor; 
     98        Add(naytto); 
     99        return laskuri; 
     100    } 
     101 
     102    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     103    { 
     104        if (kohde == oikeaReuna) 
     105        { 
     106            pelaajan1Pisteet.Value += 1; 
     107        } 
     108        else if (kohde == vasenReuna) 
     109        { 
     110            pelaajan2Pisteet.Value += 1; 
     111        } 
     112    } 
     113 
     114    void AloitaPeli() 
     115    { 
    29116        Vector impulssi = new Vector(500.0, 0.0); 
    30117        pallo.Hit(impulssi); 
    31         Level.CreateBorders(); 
    32         pallo.Restitution = 1.0; 
    33         Level.BackgroundColor = Color.Black; 
    34         Camera.ZoomToLevel(); 
    35         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    36         maila.Shape = Shape.Rectangle; 
    37         maila.X = Level.Left + 20.0; 
    38         maila.Y = 0.0; 
    39         maila.Restitution = 1.0; 
    40         Add(maila); 
     118    } 
     119 
     120    void AsetaOhjaimet() 
     121    { 
     122        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     123        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     124        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     125        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     126 
     127        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     128        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     129        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     130        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     131 
     132        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     133        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     134 
     135        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     136        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     137        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     138        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     139 
     140        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     141        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     142        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     143        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     144 
     145        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     146        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     147    } 
     148 
     149    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     150    { 
     151        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     152        { 
     153            maila.Velocity = Vector.Zero; 
     154            return; 
     155        } 
     156        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     157        { 
     158            maila.Velocity = Vector.Zero; 
     159            return; 
     160        } 
     161 
     162        maila.Velocity = nopeus; 
    41163    } 
    42164} 
     165         
     166         
     167     
     168     
     169 
Note: See TracChangeset for help on using the changeset viewer.