Changeset 30


Ignore:
Timestamp:
2009-07-20 14:48:26 (10 years ago)
Author:
aledhiet
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • aleksi_h/Pong/Peli.cs

    r12 r30  
    2121    public class Peli : PhysicsGame 
    2222    { 
     23        PhysicsObject pallo; 
     24        PhysicsObject maila1; 
     25        PhysicsObject maila2; 
     26 
     27        Meter<int> pelaajan1Pisteet; 
     28        Meter<int> pelaajan2Pisteet; 
     29 
    2330        protected override void LoadContent() 
    2431        { 
    25             //IShape ympyrä = Shapes.CreateCircle(20.0) 
    26             //IShape ympyrä = Shapes.CreateCircle(58.0) 
    27             IShape ympyra = Shapes.CreateRectangle(30.0, 20.0); 
    28             PhysicsObject pallo = new PhysicsObject(10.0, ympyra); 
    29             pallo.X = -200.0; 
     32            Level = LuoKentta(); 
     33            AsetaOhjaimet(); 
     34            LisaaLaskurit(); 
     35            AloitaPeli(); 
     36        } 
     37        Level LuoKentta() 
     38        { 
     39            Level kentta = new Level(this); 
     40            kentta.BackgroundColor = Color.Black; 
     41 
     42            IShape ympyra = Shapes.CreateCircle(20.0); 
     43            pallo = new PhysicsObject(10.0, ympyra); 
     44            pallo.X = -200; 
    3045            pallo.Y = 0.0; 
    31             Level.Objects.Add(pallo); 
    32             Vector2D impulssi = new Vector2D(4000.0, 0.0); 
     46            pallo.Restitution = 1.0; 
     47            kentta.Objects.Add(pallo); 
     48 
     49            maila1 = LuoMaila(kentta.Left + 20, 0.0, kentta); 
     50            maila2 = LuoMaila(kentta.Right - 20, 0.0, kentta); 
     51 
     52            kentta.CreateBorder(1.0, false); 
     53 
     54            return kentta; 
     55        } 
     56        void AloitaPeli() 
     57        { 
     58            Vector2D impulssi = new Vector2D(2000.0, 0.0); 
    3359            pallo.Hit(impulssi); 
    34             pallo.Restitution = 1.0; 
    35             Level.CreateBorder(1.0, false); 
    36             Level.BackgroundColor = Color.Black; 
     60        } 
     61        PhysicsObject LuoMaila(double x, double y, Level kentta) 
     62        { 
     63            IShape suorakulmio = Shapes.CreateRectangle(20.0, 100.0); 
     64            PhysicsObject maila = PhysicsObject.CreateStaticObject(suorakulmio); 
     65            maila.X = x; 
     66            maila.Y = y; 
     67            maila.Restitution = 1.0; 
     68            kentta.Objects.Add(maila); 
     69            return maila; 
     70        } 
     71        void AsetaOhjaimet() 
     72        { 
     73            Controls.Listen(Keys.A, ButtonPosition.Down, LiikutaMailaa, "Pelaaja1: Liikuta mailaa ylös", maila1, 200.0); 
     74            Controls.Listen(Keys.Z, ButtonPosition.Down, LiikutaMailaa, "Pelaaja1: Liikuta mailaa alas", maila1, -200.0); 
     75 
     76            Controls.Listen(Keys.Up, ButtonPosition.Down, LiikutaMailaa, "Pelaaja2: Liikuta mailaa ylös", maila2, 200.0); 
     77            Controls.Listen(Keys.Down, ButtonPosition.Down, LiikutaMailaa, "Pelaaja2: Liikuta mailaa alas", maila2, -200.0); 
     78        } 
     79        bool LiikutaMailaa(ControlEvent e) 
     80        { 
     81            PhysicsObject maila = e.Parameter0.ToPhysicsObject(); 
     82            double nopeus = e.Parameter1.ToDouble(); 
     83            double sekuntejaKulunut = e.Time.ElapsedGameTime.TotalSeconds; 
     84            double uusiY = maila.Y + nopeus * sekuntejaKulunut; 
     85 
     86            if ((Level.Bottom < uusiY) && (uusiY < Level.Top)) 
     87            { 
     88                maila.Y = uusiY; 
     89            } 
     90 
     91            return false; 
     92        } 
     93        void LisaaLaskurit() 
     94        { 
     95            pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     96            pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     97        } 
     98        Meter<int> LuoPisteLaskuri(double x, double y) 
     99        { 
     100            Meter<int> laskuri = new Meter<int>(0, 0, 10); 
     101            ValueDisplay naytto = new ValueDisplay(this); 
     102            naytto.BindTo(laskuri); 
     103            naytto.X = x; 
     104            naytto.Y = y; 
     105            naytto.ValueColor = Color.White; 
     106            Add(naytto); 
     107            return laskuri; 
    37108        } 
    38109    } 
Note: See TracChangeset for help on using the changeset viewer.