Ignore:
Timestamp:
2012-07-02 14:50:57 (8 years ago)
Author:
lekopakk
Message:

Talletus.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/27/LeeviK/Pong/Pong/Pong/Pong.cs

    r3427 r3439  
    1111public class Pong : PhysicsGame 
    1212{ 
    13     Vector nopeusYlos = new Vector(0, 300); 
    14     Vector nopeusAlas = new Vector(0, -300); 
    15  
     13    Vector nopeusYlos = new Vector(0, 200); 
     14    Vector nopeusAlas = new Vector(0, -200); 
     15 
     16    PhysicsObject Sun; 
     17    PhysicsObject Sun2; 
     18    PhysicsObject Sun3; 
     19    PhysicsObject Sun4; 
     20 
     21    Label Teksti; 
     22 
     23    PhysicsObject bonus; 
    1624    PhysicsObject pallo; 
    1725    PhysicsObject maila1; 
    1826    PhysicsObject maila2; 
    1927 
     28    PhysicsObject vasenReuna; 
     29    PhysicsObject oikeaReuna; 
     30 
     31    IntMeter pelaajan1Pisteet; 
     32    IntMeter pelaajan2Pisteet; 
     33 
    2034    public override void Begin() 
    2135    { 
    2236        LuoKentta(); 
    2337        AsetaOhjaimet(); 
     38        LisaaLaskurit(); 
    2439        AloitaPeli(); 
    2540    } 
     
    2742    void LuoKentta() 
    2843    { 
    29         pallo = new PhysicsObject(40.0, 40.0); 
    30         pallo.Shape = Shape.Ellipse; 
    31  
     44        Teksti = new Label(50.0, 50.0); 
     45        Teksti.X = 0.0; 
     46        Teksti.Y = 300.0; 
     47        Add(Teksti); 
     48        Teksti.TextColor = Color.White; 
     49 
     50         Sun = new PhysicsObject(20.0, 20.0); 
     51         Sun.Shape = Shape.Star; 
     52        Sun.X = -300.0; 
     53        Sun.Y = 200.0; 
     54        Sun.Color = Color.Yellow; 
     55        Add(Sun); 
     56 
     57        bonus = new PhysicsObject(20.0, 20.0); 
     58        bonus.Shape = Shape.Heart; 
     59        bonus.X = 0.0; 
     60        bonus.Y = 300.0; 
     61        bonus.Color = Color.Pink; 
     62        Add(bonus); 
     63 
     64 
     65        Sun = new PhysicsObject(31.0, 20.0); 
     66        Sun.Shape = Shape.Star; 
     67        Sun.X = 400.0; 
     68        Sun.Y = 200.0; 
     69        Sun.Color = Color.Yellow; 
     70        Add(Sun); 
     71 
     72        Sun2 = new PhysicsObject(20.0, 20.0); 
     73        Sun2.Shape = Shape.Star; 
     74        Sun2.X = 300.0; 
     75        Sun2.Y = 200.0; 
     76        Sun2.Color = Color.Yellow; 
     77        Add(Sun2); 
     78 
     79        Sun3 = new PhysicsObject(30.0, 40.0); 
     80        Sun3.Shape = Shape.Star; 
     81        Sun3.X = 0.0; 
     82        Sun3.Y = -50.0; 
     83        Sun3.Color = Color.Yellow; 
     84        Add(Sun3); 
     85 
     86        Sun4 = new PhysicsObject(20.0, 20.0); 
     87        Sun4.Shape = Shape.Star; 
     88        Sun4.X = -0.0; 
     89        Sun4.Y = 100.0; 
     90        Sun4.Color = Color.Yellow; 
     91        Add(Sun4); 
     92 
     93         //Pallon fysiikka 
     94 
     95        pallo = new PhysicsObject(50.0, 50.0); 
     96        pallo.Shape = Shape.Circle; 
    3297        pallo.X = -200.0; 
    3398        pallo.Y = 0.0; 
    3499        pallo.Restitution = 1.0; 
     100        pallo.KineticFriction = 0.0; 
     101        pallo.MomentOfInertia = Double.PositiveInfinity; 
    35102        Add(pallo); 
    36  
    37         maila1 = LuoMaila(Level.Left + 40.0, 0.0); 
    38         maila2 = LuoMaila(Level.Right - 40.0, 0.0); 
    39  
    40         Level.CreateBorders(1.0, false); 
    41         Level.BackgroundColor = Color.Aqua; 
    42  
     103        pallo.Color = Color.Red; 
     104        AddCollisionHandler(pallo, KasittelePallonTormays); 
     105 
     106        pallo = new PhysicsObject(50.0, 50.0); 
     107        pallo.Shape = Shape.Circle; 
     108        pallo.X = -200.0; 
     109        pallo.Y = 0.0; 
     110        pallo.Restitution = 1.0; 
     111        pallo.KineticFriction = 0.0; 
     112        pallo.MomentOfInertia = Double.PositiveInfinity; 
     113        Add(pallo); 
     114        pallo.Color = Color.Red; 
     115        AddCollisionHandler(pallo, KasittelePallonTormays); 
     116 
     117        maila1 = LuoMaila(Level.Left + 20.0, 0.0); 
     118        maila2 = LuoMaila(Level.Right - 20.0, 0.0); 
     119 
     120        vasenReuna = Level.CreateLeftBorder(); 
     121        vasenReuna.Restitution = 1.0; 
     122        vasenReuna.KineticFriction = 0.0; 
     123        vasenReuna.IsVisible = true; 
     124 
     125        oikeaReuna = Level.CreateRightBorder(); 
     126        oikeaReuna.Restitution = 1.0; 
     127        oikeaReuna.KineticFriction = 0.0; 
     128        oikeaReuna.IsVisible = true; 
     129 
     130        PhysicsObject ylaReuna = Level.CreateTopBorder(); 
     131        ylaReuna.Restitution = 1.0; 
     132        ylaReuna.KineticFriction = 0.0; 
     133        ylaReuna.IsVisible = true; 
     134 
     135        PhysicsObject alaReuna = Level.CreateBottomBorder(); 
     136        alaReuna.Restitution = 1.0; 
     137        alaReuna.IsVisible = true; 
     138        alaReuna.KineticFriction = 0.0; 
     139 
     140        Level.BackgroundColor = Color.Black; 
    43141 
    44142        Camera.ZoomToLevel(); 
     
    48146    { 
    49147        PhysicsObject maila = PhysicsObject.CreateStaticObject(20.0, 100.0); 
    50         maila.Shape = Shape.Pentagon; 
     148        maila.Shape = Shape.Ellipse; 
    51149        maila.X = x; 
    52150        maila.Y = y; 
    53151        maila.Restitution = 1.0; 
     152        maila.KineticFriction = 0.0; 
    54153        Add(maila); 
    55154        return maila; 
    56155    } 
    57156 
     157    void LisaaLaskurit() 
     158    { 
     159        pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     160        pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     161    } 
     162 
     163    IntMeter LuoPisteLaskuri(double x, double y) 
     164    { 
     165        IntMeter laskuri = new IntMeter(0); 
     166        laskuri.MaxValue = 10; 
     167 
     168        Label naytto = new Label(); 
     169        naytto.BindTo(laskuri); 
     170        naytto.X = x; 
     171        naytto.Y = y; 
     172        naytto.TextColor = Color.Red; 
     173        naytto.BorderColor = Level.BackgroundColor; 
     174        naytto.Color = Color.LightGreen; 
     175        Add(naytto); 
     176 
     177 
     178        return laskuri; 
     179    } 
     180 
     181    void KasittelePallonTormays(PhysicsObject pallo, PhysicsObject kohde) 
     182    { 
     183        
     184        if (kohde == oikeaReuna) 
     185        { 
     186            pelaajan1Pisteet.Value += 10; 
     187        } 
     188        else if (kohde == vasenReuna) 
     189        { 
     190            pelaajan2Pisteet.Value += 10; 
     191        } 
     192    } 
     193 
    58194    void AloitaPeli() 
    59195    { 
    60         Vector impulssi = new Vector(1000.0, 0.0); 
     196        Vector impulssi = new Vector(500.0, 0.0); 
    61197        pallo.Hit(impulssi); 
    62198    } 
     
    74210        Keyboard.Listen(Key.Down, ButtonState.Released, AsetaNopeus, null, maila2, Vector.Zero); 
    75211 
     212        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 
    76213        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
     214 
    77215    } 
    78216 
    79217    void AsetaNopeus(PhysicsObject maila, Vector nopeus) 
    80218    { 
     219        if ((nopeus.Y < 0) && (maila.Bottom < Level.Bottom)) 
     220        { 
     221            maila.Velocity = Vector.Zero; 
     222 
     223            return; 
     224        } 
     225        if ((nopeus.Y > 0) && (maila.Top > Level.Top)) 
     226        { 
     227            maila.Velocity = Vector.Zero; 
     228            return; 
     229        } 
     230 
    81231        maila.Velocity = nopeus; 
    82232    } 
Note: See TracChangeset for help on using the changeset viewer.