Changeset 1567


Ignore:
Timestamp:
2010-08-03 14:55:10 (13 years ago)
Author:
paaaanro
Message:

Viimeistelin Pongin!!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/31/beosjukk/Pong/Peli.cs

    r1530 r1567  
    66public class Peli : PhysicsGame 
    77{ 
     8    Vector nopeusYlos = new Vector(0, 200); 
     9    Vector nopeusAlas = new Vector(0, -200); 
     10 
    811    PhysicsObject pallo; 
     12    PhysicsObject maila1; 
     13    PhysicsObject maila2; 
     14 
     15    PhysicsObject vasenReuna; 
     16    PhysicsObject oikeaReuna; 
     17 
     18    IntMeter pelaajan1Pisteet; 
     19    IntMeter pelaajan2Pisteet; 
    920 
    1021    protected override void Begin() 
    1122    { 
    12      LuoKentta(); 
    13      AloitaPeli(); 
     23        LuoKentta(); 
     24        AsetaOhjaimet(); 
     25        LisaaLaskurit(); 
     26        AloitaPeli(); 
    1427    } 
    1528 
    16      
    17         LuoKentta(); 
    18         Vector impulssi = new Vector( 500.0, 40.0 ); 
    19         pallo.Hit(impulssi); 
    20     } 
    21          
    2229    void LuoKentta() 
    2330    { 
    2431        pallo = new PhysicsObject(40.0, 40.0); 
    25         Add(pallo); 
    2632        pallo.X = -200.0; 
    2733        pallo.Y = 0.0; 
    28         Level.CreateBorders( 1.0, false ); 
    2934        pallo.Shape = Shapes.Circle; 
    3035        pallo.Restitution = 1.0; 
    31         Level.BackgroundColor = Color.Black; 
     36        pallo.Color = Color.Black; 
     37        Add(pallo); 
     38        AddCollisionHandler(pallo, KasittelePallonTormays); 
     39 
     40        vasenReuna = Level.CreateLeftBorder(); 
     41        vasenReuna.Restitution = 1.0; 
     42        vasenReuna.IsVisible = false; 
     43        oikeaReuna = Level.CreateRightBorder(); 
     44        oikeaReuna.Restitution = 1.0; 
     45        oikeaReuna.IsVisible = false; 
     46        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     47        ylaReuna.Restitution = 1.0; 
     48        ylaReuna.IsVisible = false; 
     49        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     50        alaReuna.Restitution = 1.0; 
     51        alaReuna.IsVisible = false; 
     52 
     53        Level.CreateBorders(1.0, false); 
     54        Level.BackgroundColor = Color.White; 
     55 
     56        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     57        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     58        maila1.Color = Color.Black; 
     59        maila2.Color = Color.Black; 
     60 
    3261        Camera.ZoomToLevel(); 
    33         PhysicsObject maila = PhysicsObject.CreateStaticObject( 20.0, 100.0 ); 
     62    } 
     63 
     64    PhysicsObject LuoMaila(double x, double y) 
     65    { 
     66        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    3467        maila.Shape = Shapes.Rectangle; 
    35         maila.X = Level.Left + 20.0; 
    36         maila.Y = 0.0; 
     68        maila.X = x; 
     69        maila.Y = y; 
    3770        maila.Restitution = 1.0; 
    38         Add( maila ); 
     71        Add(maila); 
     72        return maila; 
     73    } 
     74        void LisaaLaskurit() 
     75    { 
     76        pelaajan1Pisteet = LuoPisteLaskuri( Screen.Left + 100.0, Screen.Top - 100.0 ); 
     77        pelaajan2Pisteet = LuoPisteLaskuri( Screen.Right - 100.0, Screen.Top - 100.0 ); 
     78    } 
     79 
     80    IntMeter LuoPisteLaskuri( double x, double y ) 
     81    { 
     82        IntMeter laskuri = new IntMeter( 0 ); 
     83        laskuri.MaxValue = 10; 
     84        Label naytto = new Label(); 
     85        naytto.BindTo( laskuri ); 
     86        naytto.X = x; 
     87        naytto.Y = y; 
     88        naytto.TextColor = Color.Black; 
     89        Add( naytto ); 
     90        return laskuri; 
     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        } 
     102 
    39103    } 
    40104    void AloitaPeli() 
    41105    { 
    42         Vector impulssi = new Vector( 500.0, 0.0 ); 
    43         pallo.Hit( impulssi ); 
     106        Vector impulssi = new Vector(600.0, 5.0); 
     107        pallo.Hit(impulssi); 
     108    } 
     109    void AsetaOhjaimet() 
     110    { 
     111        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     112        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     113        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     114        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     115 
     116        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     117        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     118        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     119        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     120 
     121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     122        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     123 
     124        Keyboard.Listen( Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos ); 
     125        Keyboard.Listen( Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
     126        Keyboard.Listen( Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas ); 
     127        Keyboard.Listen( Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero ); 
     128 
     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 ); 
     133 
     134        Keyboard.Listen( Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet" ); 
     135        Keyboard.Listen( Key.Escape, ButtonState.Pressed, Exit, "Poistu" ); 
     136 
     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 ); 
     141 
     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" ); 
     149    } 
     150 
     151    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     152    { 
     153        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     154        { 
     155            maila.Velocity = Vector.Zero; 
     156            return; 
     157        } 
     158        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     159        { 
     160            maila.Velocity = Vector.Zero; 
     161            return; 
     162        } 
     163        maila.Velocity = nopeus; 
    44164    } 
    45165} 
    46  
Note: See TracChangeset for help on using the changeset viewer.