Changeset 7719 for 2016/27


Ignore:
Timestamp:
2016-07-04 14:55:44 (3 years ago)
Author:
karkaite
Message:

Moro!

Location:
2016/27/TomiR/Pong
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • 2016/27/TomiR/Pong/Pong/Pong/Pong.cs

    r7678 r7719  
    1010{ 
    1111    PhysicsObject pallo; 
    12  
     12    Vector NopeusYlos = new Vector(0, 200); 
     13    Vector NopeusAlas = new Vector(0, -200); 
    1314    PhysicsObject maila1; 
    1415    PhysicsObject maila2; 
     16 
     17    PhysicsObject vasenReuna; 
     18    PhysicsObject oikeaReuna; 
     19    const double PALLON_MIN_NOPEUS = 500; 
     20    IntMeter pelaajan1Pisteet; 
     21    IntMeter pelaajan2Pisteet; 
    1522    public override void Begin() 
    1623    { 
     24        LisaaLaskurit(); 
    1725        LuoKentta(); 
    1826        AloitaPeli(); 
     
    2533        pallo.Shape = Shape.Circle; 
    2634        pallo.Restitution = 1.0; 
     35        pallo.Color = Color.Red; 
    2736        pallo.X = -200.0; 
    2837        pallo.Y = 0.0; 
    2938        Add(pallo); 
    3039 
    31         maila1=LuoMaila(Level.Left+20.0, 0.0, Color.Blue); 
     40        AddCollisionHandler(pallo, KasittelePallonTormays); 
     41 
     42        maila1 =LuoMaila(Level.Left+20.0, 0.0, Color.Blue); 
    3243        maila2=LuoMaila(Level.Right - 20.0, 0.0, Color.DarkGreen); 
    3344 
    3445 
    35         Level.CreateBorders(1.0, false); 
     46        vasenReuna = Level.CreateLeftBorder(); 
     47        vasenReuna.Restitution = 1.0; 
     48        vasenReuna.IsVisible = false; 
     49 
     50        oikeaReuna = Level.CreateRightBorder(); 
     51        oikeaReuna.Restitution = 1.0; 
     52        oikeaReuna.IsVisible = false; 
     53 
     54        PhysicsObject yläreuna = Level.CreateTopBorder(); 
     55        vasenReuna.Restitution = 1.0; 
     56        vasenReuna.IsVisible = false; 
     57 
     58        PhysicsObject alareuna = Level.CreateBottomBorder(); 
     59        vasenReuna.Restitution = 1.0; 
     60        vasenReuna.IsVisible = false; 
     61 
     62 
     63 
    3664        Level.Background.Color = Color.Black; 
    3765        Camera.ZoomToLevel(); 
     
    5987    void AsetaOhjaimet() 
    6088    { 
    61         //Keyboard.Listen(Key.S, ButtonState.Down, LiikutaMailaYlös, "Pelaaja 1: Liikuta mailaa ylös");) 
    62         //Keyboard.Listen(Key.S, ButtonState.Released, PysaytaMaila1, null); 
     89        Keyboard.Listen(Key.W, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, NopeusYlos); 
     90        Keyboard.Listen(Key.W, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     91        Keyboard.Listen(Key.S, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, NopeusAlas); 
     92        Keyboard.Listen(Key.S, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     93 
     94        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, NopeusYlos); 
     95        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     96        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, NopeusAlas); 
     97        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    6398 
    6499 
     
    66101    } 
    67102 
     103    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
     104    { 
     105        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     106        { 
     107            maila.Velocity = Vector.Zero; 
     108            return; 
     109        } 
     110        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     111        { 
     112            maila.Velocity = Vector.Zero; 
     113            return; 
     114 
     115        } 
     116            maila.Velocity = nopeus; 
     117        } 
     118 
     119           void LisaaLaskurit() 
     120    { 
     121        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     122        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     123    } 
     124 
     125    IntMeter LuoPisteLaskuri(double x, double y) 
     126    { 
     127        IntMeter laskuri = new IntMeter(0); 
     128        laskuri.MaxValue = 10; 
     129 
     130        Label naytto = new Label(); 
     131        naytto.BindTo(laskuri); 
     132        naytto.X = x; 
     133        naytto.Y = y; 
     134        naytto.TextColor = Color.Gold; 
     135        naytto.TextScale = new Vector(5,5); 
     136         
     137        Add(naytto); 
     138 
     139        return laskuri; 
     140    } 
     141 
     142    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     143    { 
     144        if (kohde == oikeaReuna) 
     145        { 
     146            pelaajan1Pisteet.Value += 1; 
     147        } 
     148        else if (kohde == vasenReuna) 
     149        { 
     150            pelaajan2Pisteet.Value += 1; 
     151        } 
     152    } 
     153     
     154 
     155    protected override void Update(Time time) 
     156    { 
     157        if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_MIN_NOPEUS) 
     158        { 
     159            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y); 
     160        } 
     161        base.Update(time); 
     162    } 
    68163 
    69164} 
    70165 
     166 
     167 
     168 
     169 
     170 
Note: See TracChangeset for help on using the changeset viewer.