Changeset 3608 for 2012/27


Ignore:
Timestamp:
2012-07-05 15:06:11 (11 years ago)
Author:
mikrats
Message:

Talletus.

Location:
2012/27/MikaelK
Files:
40 added
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/27/MikaelK/pong/pong/pong/pong.cs

    r3458 r3608  
    99public class pong : PhysicsGame 
    1010{ 
     11    Vector nopeusYlös = new Vector(0, 200); 
     12    Vector nopeusAlas = new Vector(0, -200); 
     13    
     14    PhysicsObject vasenReuna; 
     15    PhysicsObject oikeaReuna; 
     16 
    1117    PhysicsObject pallo; 
     18    PhysicsObject maila1; 
     19    PhysicsObject maila2; 
     20 
     21    IntMeter pelaajan1Pisteet; 
     22    IntMeter pelaajan2Pisteet; 
     23 
    1224    public override void Begin() 
    1325    { 
    1426        // TODO: Kirjoita ohjelmakoodisi tähän 
    15         
    16        Luokenttä(); 
    17        AsettaOhjaimet(); 
    18        Aloitapeli(); 
    1927 
    20       
     28        Luokenttä(); 
     29        AsetaOhjaimet(); 
     30        LisaaLaskurit(); 
     31        Aloitapeli(); 
    2132 
    22         
     33 
     34 
     35 
    2336    } 
    2437    void Luokenttä() 
     
    3043        pallo.Restitution = 1.0; 
    3144 
    32         
    33         LuoMaila(Level.Left + 20.0, 0.0); 
    34         LuoMaila(Level.Right - 20.0, 0.0); 
    35         
    3645 
     46        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     47        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3748 
    38         Level.CreateBorders(1.0, false); 
     49        vasenReuna = Level.CreateLeftBorder(); 
     50        vasenReuna.Restitution = 1.0; 
     51        vasenReuna.IsVisible = false; 
     52         
     53        oikeaReuna = Level.CreateRightBorder(); 
     54        vasenReuna.Restitution = 1.0; 
     55        vasenReuna.IsVisible = false; 
     56 
     57        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     58        vasenReuna.Restitution = 1.0; 
     59        vasenReuna.IsVisible = false; 
     60         
     61        PhysicsObject yläReuna = Level.CreateTopBorder(); 
     62        vasenReuna.Restitution = 1.0; 
     63        vasenReuna.IsVisible = false; 
     64 
     65       
    3966        Level.BackgroundColor = Color.Black; pallo.Shape = Shape.Circle; 
    4067        Camera.ZoomToLevel(); 
    41 } 
    42         void Aloitapeli() 
     68 
     69        AddCollisionHandler(pallo, KasittelePallonTormays); 
     70 
     71    } 
     72    void Aloitapeli() 
    4373    { 
    4474        Vector impulssi = new Vector(500.0, 0.0); 
    45         pallo.Hit(impulssi);  
     75        pallo.Hit(impulssi); 
    4676    } 
    47         void LuoMaila(double x, double y) 
     77    PhysicsObject LuoMaila(double x, double y) 
     78    { 
     79        PhysicsObject maila = PhysicsObject.CreateStaticObject(2.0, 100.0); 
     80        maila.Shape = Shape.Rectangle; 
     81        maila.X = x; 
     82        maila.Y = y; 
     83        maila.Restitution = 1.0; 
     84        Add(maila); 
     85        return maila; 
     86    } 
     87    void AsetaOhjaimet() 
     88    { 
     89        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     90        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     91        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     92 
     93        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlös); 
     94        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     95        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     96        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     97 
     98        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     99 
     100        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "pelaaja 1: liikuta Mailaa Ylös", maila1, nopeusYlös); 
     101        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     102    } 
     103    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     104    { 
     105         
     106        if (( nopeus.Y > 0 ) && maila.Top > Level.Top) 
    48107        { 
    49             PhysicsObject maila = PhysicsObject.CreateStaticObject(2.0, 100.0); 
    50             maila.Shape = Shape.Rectangle; 
    51             maila.X = x; 
    52             maila.Y = y; 
    53             maila.Restitution = 1.0; 
    54             Add(maila); 
     108            maila.Velocity = Vector.Zero; 
     109            return; 
    55110        } 
    56         void Asetaohjaimet() 
     111 
     112            maila.Velocity = nopeus; 
     113    } 
     114 
     115    void LisaaLaskurit() 
     116    {   
     117    pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     118    pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     119 
     120    } 
     121 
     122    IntMeter LuoPisteLaskuri(double x, double y ) 
     123    { 
     124    IntMeter laskuri = new IntMeter(0); 
     125    laskuri.MaxValue = 10; 
     126    Label naytto = new Label(); 
     127    naytto.BindTo(laskuri); 
     128    naytto.X = x; 
     129    naytto.Y = y; 
     130    naytto.TextColor = Color.White; 
     131    naytto.BorderColor = Level.BackgroundColor; 
     132    naytto.Color = Level.BackgroundColor; 
     133    Add(naytto); 
     134    return laskuri; 
     135    } 
     136    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     137    { 
     138        if (kohde == oikeaReuna) 
    57139        { 
    58             Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    59             Keyboard.Listen(Key.A, ButtonState.Down, LiikutaMailaYlös, "pelaaja 1 liikuta Mailaa Ylös"); 
    60             Keyboard.Listen(Key.A, ButtonState.Released, PysäytäMaila, null); 
     140            pelaajan1Pisteet.Value += 1; 
    61141        } 
     142        else if (kohde == vasenReuna) 
     143        { 
     144            pelaajan2Pisteet.Value += 1; 
     145        } 
     146 
     147    } 
     148 
    62149} 
    63150 
Note: See TracChangeset for help on using the changeset viewer.