Changeset 5382


Ignore:
Timestamp:
2014-07-03 15:01:04 (5 years ago)
Author:
ramatika
Message:

hahmon likkumaan,kenttä

Location:
2014/27/RahulM
Files:
232 added
6 edited

Legend:

Unmodified
Added
Removed
  • 2014/27/RahulM/pong/pong/pong/pong.cs

    r5185 r5382  
    1313 
    1414    PhysicsObject pallo; 
    15  
    1615    PhysicsObject maila1; 
    1716    PhysicsObject maila2; 
    1817 
    19     public override void Begin() 
    20     { 
    21  
    22  
    23          pallo = new PhysicsObject(40.0, 40.0); 
     18    PhysicsObject vasenReuna; 
     19    PhysicsObject oikeaReuna; 
     20 
     21    IntMeter pelaajan1Pisteet; 
     22    IntMeter pelaajan2Pisteet; 
     23 
     24     public override void Begin() 
     25     { 
     26         LuoKentta(); 
     27        AsetaOhjaimet(); 
     28        LisaaLaskurit(); 
     29        AloitaPeli(); 
     30 
     31     } 
     32 
     33    void LuoKentta() 
     34    { 
     35        pallo = new PhysicsObject(40.0, 40.0); 
    2436        pallo.Shape = Shape.Circle; 
    2537        pallo.X = -200.0; 
    2638        pallo.Y = 0.0; 
    2739        pallo.Restitution = 1.0; 
     40        pallo.KineticFriction = 0.0; 
     41        pallo.MomentOfInertia = Double.PositiveInfinity; 
    2842        Add(pallo); 
     43        AddCollisionHandler(pallo, KasittelePallonTormays); 
    2944 
    3045        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
    31         maila1 = LuoMaila(Level.Right - 20.0, 0.0); 
     46        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     47 
    3248         
    33  
    34         Level.CreateBorders(1.0, false); 
     49        vasenReuna = Level.CreateLeftBorder(); 
     50        vasenReuna.Restitution = 1.0; 
     51        vasenReuna.KineticFriction = 0.0; 
     52        vasenReuna.IsVisible = false; 
     53 
     54        oikeaReuna = Level.CreateRightBorder(); 
     55        oikeaReuna.Restitution = 1.0; 
     56        oikeaReuna.KineticFriction = 0.0; 
     57        oikeaReuna.IsVisible = false; 
     58 
     59        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     60        ylaReuna.Restitution = 1.0; 
     61        ylaReuna.KineticFriction = 0.0; 
     62        ylaReuna.IsVisible = false; 
     63 
     64        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     65        alaReuna.Restitution = 1.0; 
     66        alaReuna.IsVisible = false; 
     67        alaReuna.KineticFriction = 0.0; 
     68 
    3569        Level.Background.Color = Color.Black; 
    3670 
    3771        Camera.ZoomToLevel(); 
    38         AloitaPeli(); 
    39  
    40         AsetaOhjaimet(); 
    41  
    42         PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    43         Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    44     } 
    45  
    46     void AloitaPeli() 
    47     { 
    48  
    49         Vector impulssi = new Vector(500.0, 0.0); 
    50         pallo.Hit(impulssi); 
    51     } 
     72    } 
     73 
    5274    PhysicsObject LuoMaila(double x, double y) 
    5375    { 
     
    5779        maila.Y = y; 
    5880        maila.Restitution = 1.0; 
     81        maila.KineticFriction = 0.0; 
    5982        Add(maila); 
    6083        return maila; 
    6184    } 
    6285 
    63        void AsetaOhjaimet() 
    64        { 
    65         Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös",maila1, nopeusYlös); 
     86    void LisaaLaskurit() 
     87    { 
     88        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     89        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     90    } 
     91 
     92     IntMeter LuoPisteLaskuri(double x, double y) 
     93    { 
     94        IntMeter laskuri = new IntMeter(0); 
     95        laskuri.MaxValue = 10; 
     96         
     97        Label naytto = new Label(); 
     98        naytto.BindTo(laskuri); 
     99        naytto.X = x; 
     100        naytto.Y = y; 
     101        naytto.TextColor = Color.White; 
     102        naytto.BorderColor = Level.Background.Color; 
     103        naytto.Color = Level.Background.Color; 
     104        Add(naytto); 
     105 
     106        return laskuri; 
     107    } 
     108 
     109    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     110    { 
     111        if (kohde == oikeaReuna) 
     112        { 
     113            pelaajan1Pisteet.Value += 1; 
     114        } 
     115        else if (kohde == vasenReuna) 
     116        { 
     117            pelaajan2Pisteet.Value += 1; 
     118        } 
     119    } 
     120 
     121        void AloitaPeli() 
     122    { 
     123        Vector impulssi = new Vector(500.0, 0.0); 
     124        pallo.Hit(impulssi); 
     125    } 
     126 
     127     
     128    void AsetaOhjaimet() 
     129    { 
     130        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlös); 
    66131        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    67132        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     
    70135        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlös); 
    71136        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    72         Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2,nopeusAlas); 
     137        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
    73138        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    74139 
    75140        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    76141        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    77        } 
    78          
     142 
     143        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlös); 
     144        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     145        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     146        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     147 
     148        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlös); 
     149        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     150        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     151        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     152 
     153        ControllerOne.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     154        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     155    } 
     156 
    79157        void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    80         { 
    81             maila.Velocity = nopeus; 
    82         } 
    83  
     158    { 
     159        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     160        { 
     161            maila.Velocity = Vector.Zero; 
     162            return; 
     163        } 
     164        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     165        { 
     166            maila.Velocity = Vector.Zero; 
     167            return; 
     168        } 
     169 
     170        maila.Velocity = nopeus; 
     171    } 
    84172} 
     173 
     174 
     175 
     176 
     177 
     178 
     179 
     180 
     181 
     182 
     183 
     184 
     185 
     186 
     187 
     188 
     189 
     190 
     191 
     192 
     193 
     194 
     195 
     196 
     197 
     198 
     199 
     200 
     201 
     202 
     203 
     204 
     205 
     206 
     207 
     208 
     209 
Note: See TracChangeset for help on using the changeset viewer.