Changeset 2800 for 2012/23


Ignore:
Timestamp:
2012-06-05 15:54:52 (11 years ago)
Author:
hesahaut
Message:

BOMBDUDE:en grafiikoita ja hahmo liikkumaan

Location:
2012/23/SamuH
Files:
19 added
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/23/SamuH/Pong/Pong/Pong/Pong.cs

    r2766 r2800  
    88 
    99public class Pong : PhysicsGame 
     10 
    1011{ 
    11  
    12     Vector nopeusYlös = new Vector(0, 400); 
    13     Vector nopeusAlas = new Vector(0, -400); 
     12    Vector nopeusYlos = new Vector( 0, 900 ); 
     13    Vector nopeusAlas = new Vector( 0, -900 ); 
    1414 
    1515    PhysicsObject pallo; 
    16  
    1716    PhysicsObject maila1; 
    1817    PhysicsObject maila2; 
     18 
     19    PhysicsObject vasenReuna; 
     20    PhysicsObject oikeaReuna; 
     21 
     22    IntMeter pelaajan1Pisteet; 
     23    IntMeter pelaajan2Pisteet; 
    1924 
    2025    public override void Begin() 
    2126    { 
    2227        LuoKentta(); 
     28        AsetaOhjaimet(); 
     29        LisaaLaskurit(); 
    2330        AloitaPeli(); 
    24         AsetaOhjaimet(); 
    25  
    2631    } 
    2732 
    2833    void LuoKentta() 
    2934    { 
    30         pallo = new PhysicsObject(49, 49); 
     35        pallo = new PhysicsObject( 38.0, 38.0 ); 
    3136        pallo.Shape = Shape.Circle; 
    32         pallo.Color = Color.Yellow; 
     37        pallo.Color = Color.Silver; 
     38        pallo.X = -200.0; 
     39        pallo.Y = 0.0; 
    3340        pallo.Restitution = 1.0; 
    34         pallo.X = -120; 
    35         pallo.Y = 80; 
     41        pallo.KineticFriction = 0.0; 
     42        pallo.MomentOfInertia = Double.PositiveInfinity; 
     43        Add( pallo ); 
     44        AddCollisionHandler( pallo, KasittelePallonTormays ); 
    3645 
    37         Add(pallo); 
     46        maila1 = LuoMaila( Level.Left + 20.0, 0.0 ); 
     47        maila2 = LuoMaila( Level.Right - 20.0, 0.0 ); 
    3848 
    39         maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    40         maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     49        vasenReuna = Level.CreateLeftBorder(); 
     50        vasenReuna.Restitution = 1.0; 
     51        vasenReuna.KineticFriction = 0.0; 
     52        vasenReuna.IsVisible = true; 
     53        oikeaReuna = Level.CreateRightBorder(); 
     54        oikeaReuna.Restitution = 1.0; 
     55        oikeaReuna.KineticFriction = 0.0; 
     56        oikeaReuna.IsVisible = true; 
     57        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     58        ylaReuna.Restitution = 1.0; 
     59        ylaReuna.KineticFriction = 0.0; 
     60        ylaReuna.IsVisible = true; 
     61        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     62        alaReuna.Restitution = 1.0; 
     63        alaReuna.IsVisible = true; 
     64        alaReuna.KineticFriction = 0.0; 
    4165 
    42         Level.BackgroundColor = Color.DarkGray; 
    43         Level.CreateBorders(1.0, false); 
     66        Level.BackgroundColor = Color.Gray; 
    4467 
    4568        Camera.ZoomToLevel(); 
    46  
    47         MessageDisplay.TextColor = Color.LightGreen; 
    48  
    49     } 
    50     void AloitaPeli() 
    51     { 
    52         Vector impulssi = new Vector(500.0, 0.0); 
    53         pallo.Hit(impulssi); 
    54  
    55  
    56  
    5769    } 
    5870 
    59     PhysicsObject LuoMaila(double x, double y) 
     71    PhysicsObject LuoMaila( double x, double y ) 
    6072    { 
    61  
    62         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     73        PhysicsObject maila = PhysicsObject.CreateStaticObject( 20.0, 100.0 ); 
    6374        maila.Shape = Shape.Rectangle; 
    64         maila.Color = Color.DarkOrange; 
    6575        maila.X = x; 
    6676        maila.Y = y; 
    6777        maila.Restitution = 1.0; 
    68         Add(maila); 
     78        maila.KineticFriction = 0.0; 
     79        Add( maila ); 
     80        return maila; 
     81    } 
    6982 
    70         return maila; 
     83    void LisaaLaskurit() 
     84    { 
     85        pelaajan1Pisteet = LuoPisteLaskuri( Screen.Left + 100.0, Screen.Top - 100.0 ); 
     86        pelaajan2Pisteet = LuoPisteLaskuri( Screen.Right - 100.0, Screen.Top - 100.0 ); 
     87    } 
    7188 
     89    IntMeter LuoPisteLaskuri( double x, double y ) 
     90    { 
     91        IntMeter laskuri = new IntMeter( 0 ); 
     92        laskuri.MaxValue = 5; 
     93        Label naytto = new Label(); 
     94        naytto.BindTo( laskuri ); 
     95        naytto.X = x; 
     96        naytto.Y = y; 
     97        naytto.TextColor = Color.Red; 
     98        naytto.BorderColor = Level.BackgroundColor; 
     99        naytto.Color = Level.BackgroundColor; 
     100        Add( naytto ); 
     101        return laskuri; 
     102    } 
     103 
     104    void KasittelePallonTormays( PhysicsObject pallo, PhysicsObject kohde ) 
     105    { 
     106        if ( kohde == oikeaReuna ) 
     107        { 
     108            pelaajan1Pisteet.Value += 1; 
     109        } 
     110        else if ( kohde == vasenReuna ) 
     111        { 
     112            pelaajan2Pisteet.Value += 1; 
     113        } 
     114    } 
     115 
     116    void AloitaPeli() 
     117    { 
     118        Vector impulssi = new Vector( 600.0, 0.0 ); 
     119        pallo.Hit( impulssi ); 
    72120    } 
    73121 
    74122    void AsetaOhjaimet() 
    75123    { 
     124        Keyboard.Listen( Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1 Liikuta mailaa ylös.", maila1, nopeusYlos ); 
     125        Keyboard.Listen( Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
     126        Keyboard.Listen( Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1 Liikuta mailaa alas.", maila1, nopeusAlas ); 
     127        Keyboard.Listen( Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
    76128 
    77         Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja1, liikuta mailaa ylös.", maila1, nopeusYlös); 
    78         Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    79         Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja1, liikuta mailaa alas.", maila1, nopeusAlas); 
    80         Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     129        Keyboard.Listen( Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2 Liikuta mailaa ylös.", maila2, nopeusYlos ); 
     130        Keyboard.Listen( Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero ); 
     131        Keyboard.Listen( Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2 Liikuta mailaa alas.", maila2, nopeusAlas ); 
     132        Keyboard.Listen( Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero ); 
    81133 
    82         Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja2, liikuta mailaa ylös.", maila2, nopeusYlös); 
    83         Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    84         Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja2, liikuta mailaa alas.", maila2, nopeusAlas); 
    85         Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     134        Keyboard.Listen( Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet." ); 
     135        Keyboard.Listen( Key.Escape, ButtonState.Pressed, Exit, "Poistu." ); 
    86136 
    87         Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet."); 
    88         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu."); 
     137        ControllerOne.Listen( Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös.", maila1, nopeusYlos ); 
     138        ControllerOne.Listen( Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
     139        ControllerOne.Listen( Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas.", maila1, nopeusAlas ); 
     140        ControllerOne.Listen( Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
    89141 
     142        ControllerTwo.Listen( Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös.", maila2, nopeusYlos ); 
     143        ControllerTwo.Listen( Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero ); 
     144        ControllerTwo.Listen( Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas.", maila2, nopeusAlas ); 
     145        ControllerTwo.Listen( Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero ); 
     146 
     147        ControllerOne.Listen( Button.Back, ButtonState.Pressed, Exit, "Poistu." ); 
     148        ControllerTwo.Listen( Button.Back, ButtonState.Pressed, Exit, "Poistu." ); 
    90149    } 
    91150 
    92     void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     151    void AsetaNopeus( PhysicsObject maila, Vector nopeus ) 
    93152    { 
    94          
    95         if (maila.Top > Level.Top) 
    96          
     153        if ( ( nopeus.Y < 0 ) && ( maila.Bottom < Level.Bottom ) ) 
    97154        { 
    98  
    99155            maila.Velocity = Vector.Zero; 
    100156            return; 
    101157        } 
    102          
     158        if ( ( nopeus.Y > 0 ) && ( maila.Top > Level.Top ) ) 
     159        { 
     160            maila.Velocity = Vector.Zero; 
     161            return; 
     162        } 
     163 
    103164        maila.Velocity = nopeus; 
    104      
    105165    } 
    106  
    107      
    108      
     166} 
    109167     
    110168 
Note: See TracChangeset for help on using the changeset viewer.