Changeset 7721


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

moi

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

Legend:

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

    r7685 r7721  
    99public class Pong : PhysicsGame 
    1010{ 
     11 
     12    const double PALLON_MIN_NOPEUS = 400; 
     13 
    1114    PhysicsObject pallo; 
     15    Vector nopeusYlos = new Vector(0, 200); 
     16    Vector nopeusAlas = new Vector(0, -200); 
     17 
     18    PhysicsObject maila1; 
     19    PhysicsObject maila2; 
     20 
     21    PhysicsObject vasenReuna; 
     22    PhysicsObject oikeaReuna; 
     23 
     24    IntMeter pelaajan1Pisteet; 
     25    IntMeter pelaajan2Pisteet; 
    1226    public override void Begin() 
    1327    { 
     
    1529        AloitaPeli(); 
    1630        AsetaOhjaimet(); 
     31        LisaaLaskurit(); 
    1732 
    18          
     33 
    1934    } 
    2035    void LuoKentta() 
    2136    { 
    22         pallo = new PhysicsObject(40.0, 40.0); 
     37        pallo = new PhysicsObject(60.0, 60.0); 
    2338        pallo.Shape = Shape.Circle; 
    2439        pallo.X = -200.0; 
    2540        pallo.Y = 0.0; 
    2641        pallo.Restitution = 1.0; 
     42        pallo.Color = Color.Green; 
    2743        Add(pallo); 
    2844 
    29         LuoMaila(Level.Left + 20.0, 0.0); 
    30         LuoMaila(Level.Right - 20.0, 0.0); 
     45        AddCollisionHandler(pallo, KasittelePallonTormays); 
     46 
     47        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     48        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
    3149 
    3250        Level.Background.Color = Color.Black; 
    33         Level.CreateBorders(1.0, false); 
     51         vasenReuna = Level.CreateLeftBorder(); 
     52        vasenReuna.Restitution = 1.0; 
     53        vasenReuna.IsVisible = false; 
     54        PhysicsObject yläReuna = Level.CreateTopBorder(); 
     55        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     56         oikeaReuna = Level.CreateRightBorder(); 
     57        oikeaReuna.Restitution = 1.0; 
     58        oikeaReuna.IsVisible = false; 
     59        alaReuna.Restitution = 1.0; 
     60        alaReuna.IsVisible = false; 
     61        yläReuna.Restitution = 1.0; 
     62        yläReuna.IsVisible = false; 
    3463 
    3564        Camera.ZoomToLevel(); 
     
    3766    void AloitaPeli() 
    3867    { 
    39         Vector impulssi = new Vector(500.0, 0.0); 
     68        Vector impulssi = new Vector(400.0, 0.0); 
    4069        pallo.Hit(impulssi); 
    4170    } 
    4271 
    43     void LuoMaila(double x, double y) 
     72    PhysicsObject LuoMaila(double x, double y) 
    4473    { 
    4574        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
     
    4978        maila.Restitution = 1.0; 
    5079        Add(maila); 
     80        return maila; 
    5181 
    5282    } 
     
    5484    void AsetaOhjaimet() 
    5585    { 
    56        // Keyboard.Listen(Key.W, ButtonState.Down, LiikutaMaila1Ylos, "Pelaaja 1: Liikuta mailaa ylös"); 
    57         //Keyboard.Listen(Key.W, ButtonState.Released, PysaytaMaila1, null); 
     86        Keyboard.Listen(Key.A, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa ylös", maila1, nopeusYlos); 
     87        Keyboard.Listen(Key.A, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     88        Keyboard.Listen(Key.Z, ButtonState.Down, AsetaNopeus, "Pelaaja 1: Liikuta mailaa alas", maila1, nopeusAlas); 
     89        Keyboard.Listen(Key.Z, ButtonState.Released, AsetaNopeus, null, maila1, Vector.Zero); 
     90 
     91        Keyboard.Listen(Key.Up, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa ylös", maila2, nopeusYlos); 
     92        Keyboard.Listen(Key.Up, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     93        Keyboard.Listen(Key.Down, ButtonState.Down, AsetaNopeus, "Pelaaja 2: Liikuta mailaa alas", maila2, nopeusAlas); 
     94        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
     95 
     96        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    5897        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    5998    } 
     
    61100    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    62101    { 
     102        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     103        { 
     104            maila.Velocity = Vector.Zero; 
     105            return; 
     106        } 
     107        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     108        { 
     109            maila.Velocity = Vector.Zero; 
     110            return; 
     111        } 
     112 
    63113        maila.Velocity = nopeus; 
     114    } 
     115 
     116    void LisaaLaskurit() 
     117    { 
     118        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     119        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     120    } 
     121 
     122 
     123    IntMeter LuoPisteLaskuri(double x, double y) 
     124    { 
     125        IntMeter laskuri = new IntMeter(0); 
     126        laskuri.MaxValue = 10; 
     127 
     128        Label naytto = new Label(); 
     129        naytto.BindTo(laskuri); 
     130        naytto.X = x; 
     131        naytto.Y = y; 
     132        naytto.TextColor = Color.Gold; 
     133        naytto.BorderColor = Level.Background.Color; 
     134        naytto.Color = Level.Background.Color; 
     135        Add(naytto); 
     136        naytto.TextScale = new Vector(5, 5); 
     137 
     138        return laskuri; 
    64139    } 
    65140 
     
    67142 
    68143 
     144    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     145    { 
     146        if (kohde == oikeaReuna) 
     147        { 
     148            pelaajan1Pisteet.Value += 1; 
     149        } 
     150        else if (kohde == vasenReuna) 
     151        { 
     152            pelaajan2Pisteet.Value += 1; 
     153        } 
    69154 
    70155 
     
    72157 
    73158 
     159    } 
     160 
     161 
     162     
     163 
     164    protected override void Update(Time time) 
     165    { 
     166        if (pallo != null && Math.Abs(pallo.Velocity.X) < PALLON_MIN_NOPEUS) 
     167        { 
     168            pallo.Velocity = new Vector(pallo.Velocity.X * 1.1, pallo.Velocity.Y); 
     169        } 
     170        base.Update(time); 
     171    } 
    74172 
    75173 
     
    77175 
    78176} 
     177 
     178 
     179 
     180 
Note: See TracChangeset for help on using the changeset viewer.