Changeset 40


Ignore:
Timestamp:
2009-07-20 14:52:06 (12 years ago)
Author:
paritala
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • panu_l/Pong/Peli.cs

    r8 r40  
    2121    public class Peli : PhysicsGame 
    2222    { 
     23        const double mailanNopeus = 200.0; 
     24 
     25        PhysicsObject pallo; 
     26        PhysicsObject pallo2; 
     27        PhysicsObject maila1; 
     28        PhysicsObject maila2; 
     29        Meter<int> pelaajan1Pisteet; 
     30        Meter<int> pelaajan2Pisteet; 
     31 
     32         
    2333        protected override void LoadContent() 
    2434        { 
     35            Level = LuoKentta(); 
     36            AsetaOhjaimet(); 
     37            LisaaLaskurit(); 
     38 
     39            AloitaPeli(); 
     40 
     41 
     42        } 
     43        Level LuoKentta() 
     44        { 
     45            Level kentta = new Level(this); 
     46            kentta.BackgroundColor = Color.Purple; 
     47 
    2548            IShape ympyra = Shapes.CreateCircle(20.0); 
    2649            //IShape suorakaide = Shapes.CreateRectangle(50.8, 50); 
    27             //PhysicsObject nelio = new PhysicsObject(10.0, suorakaide); 
    28             PhysicsObject pallo = new PhysicsObject(10.0, ympyra); 
    29             PhysicsObject olio = new PhysicsObject(10, Shapes.CreateRectangle(100, 100)); 
    30             olio.Color = new Color(255, 0, 150); 
    31             Level.Objects.Add(olio); 
    32         
    33            
     50            //PhysicsObject pallo = new PhysicsObject(10.0, suorakaide); 
     51            pallo = new PhysicsObject(10.0, ympyra); 
     52            //PhysicsObject olio = new PhysicsObject(10, Shapes.CreateRectangle(100, 100)); 
     53            //olio.Color = new Color(255, 0, 150); 
     54            //Level.Objects.Add(olio); 
     55 
     56 
     57            pallo.X = -300.0; 
     58            pallo.Y = -100.0; 
     59            pallo.Restitution = 1.1; 
     60            //pallo.MomentOfInertia = double.PositiveInfinity; 
     61 
     62            IShape ympyra2 = Shapes.CreateCircle(20.0); 
     63            pallo2 = new PhysicsObject(10.0, ympyra2); 
     64            pallo2.X = 290.0; 
     65            pallo2.Y = 90.0; 
     66            pallo2.Restitution = 1.1; 
     67 
     68 
     69            kentta.Objects.Add(pallo); 
     70            kentta.Objects.Add(pallo2); 
     71 
     72            maila1 = LuoMaila(kentta.Left + 20.0, 0.0, kentta); 
     73            maila2 = LuoMaila(kentta.Right - 20.0, 0.0, kentta); 
    3474 
    3575 
    3676 
    37             Level.Objects.Add(pallo); 
    38             //Vector2D impulssi = new Vector2D(5000.0, 1000.0); 
    39             //nelio.Hit(impulssi); 
    40             
    41             //nelio.X = -300.0; 
    42             //nelio.Y = -100.0; 
    43             //nelio.Restitution = 1.0; 
    44             //nelio.MomentOfInertia = double.PositiveInfinity; 
    45             //Level.CreateBorder( 1.0, false ); 
    46             //Level.BackgroundColor = Color.Black; 
     77            kentta.CreateBorder(2.0, true); 
     78            AddCollisionHandler(pallo, KasittelePallonTormays); 
     79 
     80            return kentta; 
     81        } 
     82        void AloitaPeli() 
     83        { 
     84            Vector2D impulssi = new Vector2D(5000.0, 1000.0); 
     85            pallo.Hit(impulssi); 
     86 
     87            Vector2D impulssi2 = new Vector2D(-5000.0, -1000.0); 
     88            pallo2.Hit(impulssi); 
     89        } 
     90 
     91 
     92        PhysicsObject LuoMaila(double x, double y, Level kentta) 
     93        { 
     94            IShape suorakulmio = Shapes.CreateRectangle(20.0, 100.0); 
     95            PhysicsObject maila = PhysicsObject.CreateStaticObject(suorakulmio); 
     96            maila.X = x; 
     97            maila.Y = y; 
     98            maila.Restitution = 1.1; 
     99            kentta.Objects.Add(maila); 
     100            return maila; 
     101        } 
     102        void AsetaOhjaimet() 
     103        { 
     104            Controls.Listen(Keys.A, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa ylös", maila1, 200.0); 
     105            Controls.Listen(Keys.Z, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa alas", maila1, -200.0); 
     106 
     107            Controls.Listen(Keys.Up, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa ylös", maila2, 200.0); 
     108            Controls.Listen(Keys.Down, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa alas", maila2, -200.0); 
     109 
    47110 
    48111        } 
     112 
     113        bool LiikutaMailaa(ControlEvent e) 
     114        { 
     115            PhysicsObject maila = e.Parameter0.ToPhysicsObject(); 
     116            double nopeus = 2*e.Parameter1.ToDouble(); 
     117            double sekuntejaKulunut = e.Time.ElapsedGameTime.TotalSeconds; 
     118            double uusiY = maila.Y + nopeus * sekuntejaKulunut; 
     119 
     120            if ((Level.Bottom < uusiY) && (uusiY < Level.Top)) 
     121            { 
     122                maila.Y = uusiY; 
     123            } 
     124 
     125            return false; 
     126        } 
     127        void LisaaLaskurit() 
     128        { 
     129            double x1 = Screen.Left + 100.0; 
     130            double y1 = Screen.Top - 100.0; 
     131            pelaajan1Pisteet = LuoPisteLaskuri(x1, y1); 
     132 
     133            double x2 = Screen.Right - 100.0; 
     134            double y2 = Screen.Top - 100.0; 
     135            pelaajan2Pisteet = LuoPisteLaskuri(x2, y2); 
     136        } 
     137        Meter<int> LuoPisteLaskuri(double x, double y) 
     138        { 
     139            Meter<int> laskuri = new Meter<int>(0, 0, 10); 
     140            ValueDisplay naytto = new ValueDisplay(this); 
     141            naytto.BindTo(laskuri); 
     142            naytto.X = x; 
     143            naytto.Y = y; 
     144            naytto.ValueColor = Color.White; 
     145            Add(naytto); 
     146            return laskuri; 
     147        } 
     148        void KasittelePallonTormays(Collision collision) 
     149        { 
     150            PhysicsObject pallo = collision.Obj; 
     151            PhysicsObject kohde = collision.Other; 
     152 
     153            if (kohde == Level.RightBorder) 
     154            { 
     155                pelaajan1Pisteet.Value += 1; 
     156            } 
     157            else if (kohde == Level.LeftBorder) 
     158            { 
     159                pelaajan2Pisteet.Value += 1; 
     160            } 
     161        } 
     162 
     163 
     164 
     165 
     166 
    49167    } 
     168 
     169 
    50170} 
     171 
Note: See TracChangeset for help on using the changeset viewer.