Changeset 1314 for 2010/30/jyniinin


Ignore:
Timestamp:
2010-07-27 11:27:46 (9 years ago)
Author:
jyniinin
Message:

pong valmis

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/30/jyniinin/pong/Peli.cs

    r1294 r1314  
    1414    PhysicsObject maila2; 
    1515 
     16    PhysicsObject vasenReuna; 
     17    PhysicsObject oikeaReuna; 
     18 
     19    IntMeter pelaajan1Pisteet; 
     20    IntMeter pelaajan2Pisteet; 
     21 
    1622    protected override void Begin() 
    1723    { 
    1824        LuoKentta(); 
    1925        AsetaOhjaimet(); 
     26        LisaaLaskurit(); 
    2027        AloitaPeli(); 
    2128    } 
     
    2936        pallo.Restitution = 1.0; 
    3037        Add(pallo); 
     38        AddCollisionHandler(pallo, KasittelePallonTormays); 
    3139 
    3240      maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    3341      maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3442 
    35          
     43      vasenReuna = Level.CreateLeftBorder(); 
     44      vasenReuna.Restitution = 1.0; 
     45      vasenReuna.IsVisible = false; 
     46      oikeaReuna = Level.CreateRightBorder(); 
     47      oikeaReuna.Restitution = 1.0; 
     48      oikeaReuna.IsVisible = false; 
     49      PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     50      ylaReuna.Restitution = 1.0; 
     51      ylaReuna.IsVisible = false; 
     52      PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     53      alaReuna.Restitution = 1.0; 
     54      alaReuna.IsVisible = false; 
    3655 
    37         Level.CreateBorders(1.0, false); 
     56 
    3857        Level.BackgroundColor = Color.Black; 
    3958 
     
    5069        return maila; 
    5170        } 
     71 
     72         void LisaaLaskurit() 
     73         { 
     74             pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     75             pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     76  
     77         } 
     78 
     79         IntMeter LuoPisteLaskuri(double x, double y) 
     80         { 
     81             IntMeter laskuri = new IntMeter(0); 
     82             laskuri.MaxValue = 10; 
     83             Label naytto = new Label(); 
     84             naytto.BindTo(laskuri); 
     85             naytto.X = x; 
     86             naytto.Y = y; 
     87             naytto.TextColor = Color.White; 
     88             Add(naytto); 
     89             return laskuri; 
     90         } 
     91         void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     92         { 
     93          if (kohde == oikeaReuna) 
     94          { 
     95                 pelaajan1Pisteet.Value += 1; 
     96                 pallo.X = 0.0; 
     97                 pallo.Y = 0.0; 
     98                 Vector impulssi = new Vector(500.0, 0.0); 
     99                 pallo.Hit(impulssi); 
     100                 pallo.Restitution = 1.0; 
     101 
     102          } 
     103          else if (kohde == vasenReuna) 
     104          { 
     105                 pelaajan2Pisteet.Value += 1; 
     106                 pallo.X = 0.0; 
     107                 pallo.Y = 0.0; 
     108                 Vector impulssi = new Vector(500.0, 0.0); 
     109                 pallo.Hit(impulssi); 
     110                 pallo.Restitution = 1.0; 
     111                 
     112 
     113          } 
     114 
     115         } 
     116 
     117 
    52118        void AloitaPeli() 
    53119        { 
     
    70136            Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    71137            Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
     138 
     139            ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     140            ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     141            ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     142            ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     143 
     144            ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     145            ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     146            ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     147            ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     148 
     149            ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     150            ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     151 
     152            ControllerOne.Listen(Button.Start, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     153            ControllerTwo.Listen(Button.Start, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     154 
     155            MessageDisplay.TextColor = Color.White; 
    72156        } 
    73157 
    74158 
    75159    void AsetaNopeus( PhysicsObject maila, Vector nopeus ) 
    76         { 
    77            if (maila.Top > Level.Top) 
    78            { 
    79            maila.Velocity = Vector.Zero; 
    80            return; 
    81            } 
     160{ 
     161 
     162    if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     163    { 
     164        maila.Velocity = Vector.Zero; 
     165        return; 
     166    } 
     167 
     168        if ( (nopeus.Y > 0) && (maila.Top > Level.Top) ) 
     169       {    
     170        maila.Velocity = Vector.Zero; 
     171        return; 
     172       } 
    82173 
    83174          maila.Velocity = nopeus; 
Note: See TracChangeset for help on using the changeset viewer.