Changeset 843 for 2010/24/malaleht


Ignore:
Timestamp:
2010-06-15 11:30:51 (13 years ago)
Author:
malaleht
Message:
 
Location:
2010/24/malaleht
Files:
22 added
1 edited

Legend:

Unmodified
Added
Removed
  • 2010/24/malaleht/pong1/Peli.cs

    r809 r843  
    22using Jypeli; 
    33using Jypeli.ScreenObjects; 
    4 using Jypeli.Assets; 
    54 
    65public class Peli : PhysicsGame 
    76{ 
     7    Vector nopeusYlos = new Vector(0, 1000); 
     8    Vector nopeusAlas = new Vector(0, -1000); 
     9 
     10    PhysicsObject pallo; 
     11    PhysicsObject maila1; 
     12    PhysicsObject maila2; 
     13 
     14    PhysicsObject vasenReuna; 
     15    PhysicsObject oikeaReuna; 
     16 
     17    IntMeter pelaajan1Pisteet; 
     18    IntMeter pelaajan2Pisteet; 
     19 
    820    protected override void Begin() 
    921    { 
    10         //TODO: Alusta peli tässä 
    11        
     22        LuoKentta(); 
     23        AsetaOhjaimet(); 
     24        LisaaLaskurit(); 
     25        AloitaPeli(); 
     26    } 
    1227 
    13         PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    14         maila.Shape = Shapes.Rectangle; 
    15         maila.X = Level.Left + 20.0; 
    16         maila.Y = 0.0; 
    17         maila.Restitution = 1.0; 
    18         Add(maila); 
    19  
    20         Level.BackgroundColor = Color.Turquoise; 
    21         PhysicsObject maila2 = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    22         maila2.Shape = Shapes.Rectangle; 
    23         maila2.X = Level.Right - 20.0; 
    24         maila2.Y = 0.0; 
    25                maila2.Restitution = 1.0; 
    26         Add(maila2); 
    27          
    28         Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
    29         luokenttä(); 
    30     } 
    31          
    32  
    33         void luokenttä() 
    34         { 
    35             PhysicsObject pallo = new PhysicsObject(40.0, 40.0); 
    36  
    37              Vector impulssi = new Vector( 50.0, 0.0 ); 
    38         pallo.Hit( impulssi ); 
    39   
     28    void LuoKentta() 
     29    { 
     30        pallo = new PhysicsObject(40.0, 40.0); 
    4031        pallo.Shape = Shapes.Circle; 
    4132        pallo.X = -200.0; 
    4233        pallo.Y = 0.0; 
    43         pallo.Restitution = 1.0; 
     34        pallo.Restitution = 5.0; 
    4435        Add(pallo); 
     36        AddCollisionHandler(pallo, KasittelePallonTormays); 
    4537        pallo.Color = Color.Pink; 
    46         Vector qwerty = new Vector(-20,55) ; 
    47         pallo.Hit(qwerty); 
    48         Level.CreateBorders(1.0, false); 
    49         Level.BackgroundColor = Color.Black; 
     38 
     39        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     40        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     41 
     42        vasenReuna = Level.CreateLeftBorder(); 
     43        vasenReuna.Restitution = 1.0; 
     44        vasenReuna.IsVisible = false; 
     45        oikeaReuna = Level.CreateRightBorder(); 
     46        oikeaReuna.Restitution = 1.0; 
     47        oikeaReuna.IsVisible = false; 
     48        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     49        ylaReuna.Restitution = 1.0; 
     50        ylaReuna.IsVisible = false; 
     51        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     52        alaReuna.Restitution = 1.0; 
     53        alaReuna.IsVisible = false; 
     54 
     55        Level.BackgroundColor = Color.SkyBlue; 
    5056 
    5157        Camera.ZoomToLevel(); 
     58    } 
    5259 
    53          
     60    PhysicsObject LuoMaila(double x, double y) 
     61    { 
     62        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     63        maila.Shape = Shapes.Rectangle; 
     64        maila.X = x; 
     65        maila.Y = y; 
     66        maila.Restitution = 5.0; 
     67        Add(maila); 
     68        return maila; 
     69        maila.Color = Color.Turquoise; 
     70    } 
    5471 
     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    IntMeter LuoPisteLaskuri(double x, double y) 
     79    { 
     80        IntMeter laskuri = new IntMeter(0); 
     81        laskuri.MaxValue = 10; 
     82        ValueDisplay naytto = new ValueDisplay(); 
     83        naytto.BindTo(laskuri); 
     84        naytto.X = x; 
     85        naytto.Y = y; 
     86        naytto.ValueColor = Color.White; 
     87        Add(naytto); 
     88        return laskuri; 
     89    } 
     90 
     91    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     92    { 
     93        if (kohde == oikeaReuna) 
     94        { 
     95            pelaajan1Pisteet.Value += 1; 
    5596        } 
    56      
     97        else if (kohde == vasenReuna) 
     98        { 
     99            pelaajan2Pisteet.Value += 1; 
     100        } 
     101    } 
    57102 
     103    void AloitaPeli() 
     104    { 
     105        Vector impulssi = new Vector(500.0, 0.0); 
     106        pallo.Hit(impulssi); 
     107    } 
    58108 
    59      
     109    void AsetaOhjaimet() 
     110    { 
     111        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     112        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     113        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     114        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    60115 
     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); 
    61120 
    62             void asetaohjaimet(); 
    63          { 
    64               Keyboard.Listen( Key.A, ButtonState.Pressed, , liikuta maila ylos "Pelaaja 1: Liikuta mailaa ylös" ); 
    65             Keyboard.Listen( Key.A, ButtonState.Released, PysaytaMaila, null ); 
    66              
    67             Keyboard.Listen( Key.Escape, ButtonState.Pressed, Exit, "Poistu" ); 
    68          } 
     121        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
     122        Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Poistu"); 
    69123 
     124        ControllerOne.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila1, nopeusYlos); 
     125        ControllerOne.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     126        ControllerOne.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila1, nopeusAlas); 
     127        ControllerOne.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
    70128 
     129        ControllerTwo.Listen(Button.DPadUp, ButtonState.Down, AsetaNopeus, "Liikuta mailaa ylös", maila2, nopeusYlos); 
     130        ControllerTwo.Listen(Button.DPadUp, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     131        ControllerTwo.Listen(Button.DPadDown, ButtonState.Down, AsetaNopeus, "Liikuta mailaa alas", maila2, nopeusAlas); 
     132        ControllerTwo.Listen(Button.DPadDown, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     133 
     134        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     135        ControllerTwo.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu"); 
     136    } 
     137 
     138    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     139    { 
     140        if ((nopeus.Y < 100) && (maila.Y < Level.Bottom)) 
     141        { 
     142            maila.Velocity = Vector.Zero; 
     143            return; 
     144        } 
     145        if ((nopeus.Y > 100) && (maila.Y > Level.Top)) 
     146        { 
     147            maila.Velocity = Vector.Zero; 
     148            return; 
     149        } 
     150 
     151        maila.Velocity = nopeus; 
     152    } 
    71153} 
Note: See TracChangeset for help on using the changeset viewer.