Changeset 7459 for 2016/25


Ignore:
Timestamp:
2016-06-19 15:46:09 (3 years ago)
Author:
koannak
Message:
 
Location:
2016/25/SaanaR
Files:
32 added
6 edited

Legend:

Unmodified
Added
Removed
  • 2016/25/SaanaR/FysiikkaPeli1/FysiikkaPeli1/FysiikkaPeli1/Pong.cs

    r7453 r7459  
    1010{ 
    1111    PhysicsObject pallo; 
     12    PhysicsObject maila1; 
     13    PhysicsObject maila2; 
     14 
     15    PhysicsObject vasenReuna; 
     16    PhysicsObject oikeaReuna; 
     17 
     18    IntMeter pelaajan1Pisteet; 
     19    IntMeter pelaajan2Pisteet; 
     20 
     21    Vector nopeusYlos = new Vector(0, 200); 
     22    Vector nopeusAlas = new Vector(0, -200); 
    1223 
    1324    public override void Begin() 
    1425    { 
    1526        LuoKentta(); 
     27        AloitaPeli(); 
     28        AsetaOhjaimet(); 
     29        LisaaLaskurit(); 
    1630        // TODO: Kirjoita ohjelmakoodisi tähän 
     31    } 
     32    void LisaaLaskurit() 
     33    { 
     34        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     35        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     36    } 
     37    IntMeter LuoPisteLaskuri(double x, double y) 
     38    { 
     39        IntMeter laskuri = new IntMeter(0); 
     40        laskuri.MaxValue = 10; 
    1741 
    18         Vector impulssi = new Vector(-500.0, 0.0); 
    19         pallo.Hit(impulssi); 
     42        Label naytto = new Label(); 
     43        naytto.BindTo(laskuri); 
     44        naytto.X = x; 
     45        naytto.Y = y; 
     46        naytto.TextColor = Color.Black; 
     47        naytto.BorderColor = Level.Background.Color; 
     48        naytto.Color = Level.Background.Color; 
     49        Add(naytto); 
     50 
     51        return laskuri; 
     52    } 
     53    // ... 
     54 
     55    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     56    { 
     57        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     58        { 
     59            maila.Velocity = Vector.Zero; 
     60            return; 
     61        } 
     62        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     63        { 
     64            maila.Velocity = Vector.Zero; 
     65            return; 
     66        } 
     67        maila.Velocity = nopeus; 
     68 
     69    } 
     70    void AsetaOhjaimet() 
     71    { 
    2072        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 
    2173        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     74        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     75        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     76        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     77        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     78 
     79        Keyboard.Listen(Key.Space, ButtonState.Pressed, AloitaPeli, null); 
     80 
     81        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     82        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     83        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     84        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     85 
     86 
     87        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    2288    } 
    2389    void LuoKentta() 
    2490    { 
    25          pallo = new PhysicsObject(50, 50); 
     91        pallo = new PhysicsObject(50, 50); 
     92        AddCollisionHandler(pallo, KasittelePallonTormays); 
    2693        pallo.Shape = Shape.Circle; 
    2794        pallo.Color = Color.White; 
     
    3097        Add(pallo); 
    3198 
    32         Level.CreateBorders(1.0, false); 
     99        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     100        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     101        vasenReuna = Level.CreateLeftBorder(); 
     102        vasenReuna.Restitution = 1.0; 
     103        vasenReuna.IsVisible = false; 
     104 
     105        oikeaReuna = Level.CreateRightBorder(); 
     106        oikeaReuna.Restitution = 1.0; 
     107        oikeaReuna.IsVisible = false; 
     108 
     109        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     110        alaReuna.Restitution = 1.0; 
     111        alaReuna.IsVisible = false; 
     112 
     113        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     114        ylaReuna.Restitution = 1.0; 
     115        ylaReuna.IsVisible = false; 
     116 
    33117        pallo.Restitution = 90; 
    34118        Level.Background.CreateGradient(Color.LightBlue, Color.LightGreen); 
    35119        Camera.ZoomToLevel(); 
    36  
     120     
     121    } 
     122    PhysicsObject LuoMaila(double x, double y) 
     123    { 
    37124        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    38125        maila.Shape = Shape.Rectangle; 
    39         maila.X = Level.Left + 20.0; 
    40         maila.Y = 0.0; 
     126        maila.X = x; 
     127        maila.Y = y; 
    41128        maila.Restitution = 1.0; 
    42129        Add(maila); 
     130        return maila; 
     131    } 
    43132 
    44          
    45     } 
    46133    void AloitaPeli() 
    47134    { 
    48135        Vector impulssi = new Vector(500.0, 0.0); 
    49         pallo.Hit(impulssi); Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     136        pallo.Hit(impulssi); 
     137    } 
     138    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     139    { 
     140        if (kohde == oikeaReuna) 
     141        { 
     142            pelaajan1Pisteet.Value += 1; 
     143        } 
     144        else if (kohde == vasenReuna) 
     145        { 
     146            pelaajan2Pisteet.Value += 1; 
     147        } 
     148 
    50149    } 
    51150} 
    52              
    53  
Note: See TracChangeset for help on using the changeset viewer.