Changeset 9053 for 2017/30


Ignore:
Timestamp:
2017-07-24 14:03:18 (2 years ago)
Author:
npo17_56
Message:

Valmis

Location:
2017/30/OlliL/Pong
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • 2017/30/OlliL/Pong/Pong/Pong/Pong.cs

    r9038 r9053  
    99public class Pong : PhysicsGame 
    1010{ 
    11     Vector nopeusYlos = new Vector(object, 200); 
     11    Vector nopeusYlos = new Vector(0, 200); 
    1212    Vector nopeusAlas = new Vector(0, -200); 
    1313 
    1414    PhysicsObject Pallo; 
     15    PhysicsObject maila1; 
     16    PhysicsObject maila2; 
    1517 
    16     IPhysicsObject maila1; 
    17     IPhysicsObject maila2; 
     18    PhysicsObject vasenReuna; 
     19    PhysicsObject oikeaReuna; 
     20 
     21    IntMeter pelaajan1Pisteet; 
     22    IntMeter pelaajan2Pisteet; 
    1823 
    1924    public override void Begin() 
     
    2328 
    2429        LuoKentta(); 
    25               
     30        AsetaOhjaimet(); 
     31        LisaaLaskurit(); 
    2632    } 
    2733    void LuoKentta() 
     
    2935        Pallo = new PhysicsObject(40.0, 40.0); 
    3036        Pallo.Shape = Shape.Circle; 
     37        Pallo.CanRotate = false; 
    3138        Add(Pallo); 
    3239        Pallo.Restitution = 1.0; 
    3340 
    34         Vector impulssi = new Vector(200.0, 100.0); 
     41        AddCollisionHandler(Pallo, KasittelePallonTormays); 
     42 
     43        Vector impulssi = new Vector(500.0, 20.0); 
    3544        Pallo.Hit(impulssi); 
    3645 
    37         maila1 = (Level.Left + 20.0, 0.0); 
    38         maila2 = (Level.Right - 20.0, 0.0); 
     46        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     47        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3948 
    40         
    4149 
    42         Level.CreateBorders(1.0, true); 
     50 
     51        vasenReuna = Level.CreateLeftBorder(); 
     52        vasenReuna.Restitution = 1.0; 
     53        vasenReuna.IsVisible = false; 
     54 
     55        oikeaReuna = Level.CreateRightBorder(); 
     56        oikeaReuna.Restitution = 1.0; 
     57        oikeaReuna.IsVisible = false; 
     58 
     59        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     60        alaReuna.Restitution = 1.0; 
     61        alaReuna.IsVisible = false; 
     62 
     63        PhysicsObject yläReuna = Level.CreateTopBorder(); 
     64        yläReuna.Restitution = 1.0; 
     65        yläReuna.IsVisible = false; 
    4366        Level.Background.Color = Color.SkyBlue; 
    4467 
    4568        Camera.ZoomToLevel(); 
    4669    } 
     70    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     71    { 
     72            if (kohde == oikeaReuna) 
     73        { 
     74            pelaajan1Pisteet.Value += 1; 
     75        } 
     76        else if (kohde == vasenReuna) 
     77        { 
     78            pelaajan2Pisteet.Value += 1; 
     79        } 
     80    } 
     81    void LisaaLaskurit() 
     82    { 
     83        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     84        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     85    } 
     86        IntMeter LuoPisteLaskuri(double x, double y) 
     87    { 
     88        IntMeter laskuri = new IntMeter(0); 
     89        laskuri.MaxValue = 10; 
     90 
     91        Label naytto = new Label(); 
     92        naytto.BindTo(laskuri); 
     93        naytto.X = x; 
     94        naytto.Y = y; 
     95        naytto.TextColor = Color.White; 
     96        naytto.BorderColor = Level.Background.Color; 
     97        naytto.Color = Level.Background.Color; 
     98        Add(naytto); 
     99 
     100        return laskuri; 
     101    }   
     102         
    47103    void Aloitapeli() 
    48104    { 
     
    53109    void AsetaOhjaimet() 
    54110    { 
    55         Keyboard.Listen(Key.W, ButtonState.Released, Aseta 
    56             , null, maila1, Vector.Zero); 
    57         Keyboard.Listen(Key.W, ButtonState.Down, LiikutaMaila1Ylos, "pelaaja 1: Liikuta mailaa ylös"); 
    58          
     111        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     112        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     113        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja1: Liikuta mailaa alas", maila1, nopeusAlas); 
     114        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     115 
     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); 
     120 
    59121        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    60122    } 
    61     void LuoMaila(double x, double y) 
     123     PhysicsObject LuoMaila(double x, double y) 
    62124    { 
    63125        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     
    69131        return maila; 
    70132    } 
    71     void AsetaNopeus(IPhysicsObject maila, Vector nopeus) 
     133    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    72134    { 
    73         maila.Velocity = nopeus; 
     135        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     136        { 
     137            maila.Velocity = Vector.Zero; 
     138            return; 
     139        } 
     140        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     141        { 
     142            maila.Velocity = Vector.Zero; 
     143            return; 
     144        } 
     145 
     146            maila.Velocity = nopeus; 
    74147    } 
    75148        
Note: See TracChangeset for help on using the changeset viewer.