Changeset 841


Ignore:
Timestamp:
2010-06-15 11:29:29 (13 years ago)
Author:
hniemi
Message:

tein pongin loppuun ja aloitin vaihe 3. ja aloin lisätä "pari" palloa lisää

Location:
2010/24/elariilo
Files:
77 added
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/24/elariilo/Pong/Peli.cs

    r814 r841  
    55public class Peli : PhysicsGame 
    66{ 
     7    Vector nopeusYlos = new Vector(0, 500); 
     8    Vector nopeusAlas = new Vector(0, -500); 
     9 
    710    PhysicsObject pallo; 
     11    PhysicsObject pallo2; 
    812    PhysicsObject maila1; 
    913    PhysicsObject maila2; 
     14 
     15    PhysicsObject vasenReuna; 
     16    PhysicsObject oikeaReuna; 
     17 
     18    IntMeter pelaajan1Pisteet; 
     19    IntMeter pelaajan2Pisteet; 
    1020 
    1121    protected override void Begin() 
    1222    { 
    1323        LuoKentta(); 
    14         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     24        LuoPallo2();  
    1525        AsetaOhjaimet(); 
     26        LisaaLaskurit(); 
    1627        AloitaPeli(); 
    17     } 
    18     PhysicsObject LuoMaila(double x, double y) 
    19     { 
    20         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    21         maila.Shape = Shapes.Rectangle; 
    22         maila.X = x; 
    23         maila.Y = y; 
    24         maila.Restitution = 1.0; 
    25         Add(maila); 
    26  
    27         return maila; 
    2828    } 
    2929 
     
    3232        pallo = new PhysicsObject(40.0, 40.0); 
    3333        pallo.Shape = Shapes.Circle; 
     34        pallo.Color = Color.Cyan; 
    3435        pallo.X = -200.0; 
    3536        pallo.Y = 0.0; 
    3637        pallo.Restitution = 1.0; 
    3738        Add(pallo); 
     39        AddCollisionHandler(pallo, KasittelePallonTormays); 
    3840 
    39         LuoMaila(Level.Left + 20.0, 0.0); 
    40         LuoMaila(Level.Right - 20.0, 0.0); 
     41        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     42        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    4143 
    42          
    43         Level.CreateBorders(false); 
    44         Level.BackgroundColor = Color.GreenYellow; 
     44        vasenReuna = Level.CreateLeftBorder(); 
     45        vasenReuna.Restitution = 1.0; 
     46        vasenReuna.IsVisible = false; 
     47        oikeaReuna = Level.CreateRightBorder(); 
     48        oikeaReuna.Restitution = 1.0; 
     49        oikeaReuna.IsVisible = false; 
     50        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     51        ylaReuna.Restitution = 1.0; 
     52        ylaReuna.IsVisible = false; 
     53        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     54        alaReuna.Restitution = 1.0; 
     55        alaReuna.IsVisible = false; 
     56 
     57        Level.BackgroundColor = Color.Black; 
    4558 
    4659        Camera.ZoomToLevel(); 
    4760    } 
    4861 
    49     void AsetaOhjaimet() 
     62    void LuoPallo2() 
    5063    { 
    51         Keyboard.Listen(Key.A, ButtonState.Pressed, LiikutaMailaaYlos, "Pelaaja 1: Liikuta mailaa ylös", maila1); 
    52         Keyboard.Listen(Key.A, ButtonState.Released, PysaytaMaila, null, maila1); 
    53  
    54         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     64     pallo2 = new PhysicsObject(50.0, 50.0); 
     65    } 
     66     
     67     
     68     
     69     
     70    PhysicsObject LuoMaila(double x, double y) 
     71    { 
     72        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     73        maila.Shape = Shapes.Rectangle; 
     74        maila.Color = RandomGen.NextColor(); 
     75        maila.X = x; 
     76        maila.Y = y; 
     77        maila.Restitution = 1.0; 
     78        Add(maila); 
     79        return maila; 
    5580    } 
    5681 
    57     void LiikutaMailaaYlos(PhysicsObject maila) 
     82    void LisaaLaskurit() 
    5883    { 
    59         Vector nopeus = new Vector(0, 200); 
    60         maila.Velocity = nopeus; 
     84        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     85        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
    6186    } 
    6287 
    63      
    64     void PysaytaMaila(PhysicsObject maila) 
     88    IntMeter LuoPisteLaskuri(double x, double y) 
    6589    { 
     90        IntMeter laskuri = new IntMeter(0); 
     91        laskuri.MaxValue = 10; 
     92        ValueDisplay naytto = new ValueDisplay(); 
     93        naytto.BindTo(laskuri); 
     94        naytto.X = x; 
     95        naytto.Y = y; 
     96        naytto.ValueColor = Color.White; 
     97        Add(naytto); 
     98        return laskuri; 
     99    } 
    66100 
     101    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     102    { 
     103        if (kohde == oikeaReuna) 
     104        { 
     105            pelaajan1Pisteet.Value += 1; 
     106        } 
     107        else if (kohde == vasenReuna) 
     108        { 
     109            pelaajan2Pisteet.Value += 1; 
     110        } 
    67111    } 
    68112 
     
    73117    } 
    74118 
     119    void AsetaOhjaimet() 
     120    { 
     121        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     122        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     123        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     124        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    75125 
     126        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     127        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     128        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     129        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     130 
     131        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     132        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     133 
     134        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     135        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     136        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     137        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     138 
     139        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     140        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     141        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     142        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     143 
     144        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     145        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     146    } 
     147 
     148    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     149    { 
     150        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     151        { 
     152            maila.Velocity = Vector.Zero; 
     153            return; 
     154        } 
     155        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     156        { 
     157            maila.Velocity = Vector.Zero; 
     158            return; 
     159        } 
     160 
     161        maila.Velocity = nopeus; 
     162    } 
    76163} 
Note: See TracChangeset for help on using the changeset viewer.