Changeset 90 for sarita_p/Pong


Ignore:
Timestamp:
2009-07-22 11:36:47 (11 years ago)
Author:
sajupaan
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • sarita_p/Pong/Peli.cs

    r17 r90  
    1919namespace Pong 
    2020{ 
     21 
     22 
    2123    public class Peli : PhysicsGame 
    2224    { 
     25        const double mailanNopeus = 200.0; 
     26 
     27        PhysicsObject pallo; 
     28        PhysicsObject maila1; 
     29        PhysicsObject maila2; 
     30 
     31        Meter<int> pelaajan1Pisteet; 
     32        Meter<int> pelaajan2Pisteet; 
     33 
     34 
    2335        protected override void LoadContent() 
    2436        { 
    25             // 
    26             IShape ympyra = Shapes.CreateRectangle (50.8, 40.0); 
    27             PhysicsObject pallo = new PhysicsObject(10.0, ympyra); 
    28             Level.Objects.Add(pallo); 
     37            Level = LuoKentta(); 
     38            AsetaOhjaimet(); 
     39            LisaaLaskurit(); 
     40            AloitaPeli(); 
     41        } 
     42 
     43        Level LuoKentta() 
     44        { 
     45            Level kentta = new Level(this); 
     46            kentta.BackgroundColor = Color.Black; 
     47 
     48            IShape ympyra = Shapes.CreateCircle(20.0); 
     49            pallo = new PhysicsObject( 10.0, ympyra ); 
    2950            pallo.X = -200.0; 
    3051            pallo.Y = 0.0; 
    31             Level.CreateBorder(1.0, false); 
    32             Level.BackgroundColor = Color.Black; 
     52            pallo.Restitution = 2000.0; 
     53            kentta.Objects.Add( pallo ); 
     54            AddCollisionHandler(pallo, KasittelePallonTormays); 
    3355 
    3456 
    35             Vector2D impulssi = new Vector2D(2000.0, 0.0); 
    36             pallo.Hit(impulssi); 
    37             pallo.Restitution = 1.0; 
     57            maila1 = LuoMaila(kentta.Left + 20.0, 0.0, kentta ); 
     58            maila2 = LuoMaila(kentta.Right - 20.0, 0.0, kentta ); 
     59 
     60 
     61            kentta.CreateBorder(1.0, false); 
     62 
     63            return kentta; 
     64        } 
     65            PhysicsObject LuoMaila( double x, double y, Level kentta ) 
     66        { 
     67            IShape suorakulmio = Shapes.CreateRectangle( 20.0, 100.0 ); 
     68            PhysicsObject maila = PhysicsObject.CreateStaticObject( suorakulmio ); 
     69            maila.X = x; 
     70            maila.Y = y; 
     71            maila.Restitution = 1.0; 
     72            kentta.Objects.Add( maila ); 
     73            return maila;} 
     74 
     75            void LisaaLaskurit() 
     76            { 
     77                pelaajan1Pisteet = LuoPisteLaskuri(Screen.Left + 100.0, Screen.Top - 100.0); 
     78                pelaajan2Pisteet = LuoPisteLaskuri(Screen.Right - 100.0, Screen.Top - 100.0); 
     79            } 
     80            Meter<int> LuoPisteLaskuri(double x, double y) 
     81            { 
     82                Meter<int> laskuri = new Meter<int>(0, 0, 10); 
     83                ValueDisplay naytto = new ValueDisplay(this); 
     84                naytto.BindTo(laskuri); 
     85                naytto.X = x; 
     86                naytto.Y = y; 
     87                naytto.ValueColor = Color.White; 
     88                Add(naytto); 
     89                return laskuri; 
     90            } 
     91            void KasittelePallonTormays(Collision collision) 
     92            { 
     93                PhysicsObject pallo = collision.Obj; 
     94                PhysicsObject kohde = collision.Other; 
     95 
     96                if (kohde == Level.RightBorder) 
     97                { 
     98                    pelaajan1Pisteet.Value += 1; 
     99                } 
     100                else if (kohde == Level.LeftBorder) 
     101                { 
     102                    pelaajan2Pisteet.Value += 1; 
     103                } 
     104            } 
     105 
     106 
     107        void AloitaPeli() 
     108        { 
     109            Vector2D impulssi = new Vector2D( 2000.0, 1500.0 ); 
     110            pallo.Hit( impulssi );} 
     111 
     112      void AsetaOhjaimet() 
     113        { 
     114            Controls.Listen( Keys.A, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa ylös", maila1, 200.0 ); 
     115            Controls.Listen( Keys.Z, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa alas", maila1, -200.0 ); 
     116 
     117            Controls.Listen( Keys.Up, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa ylös", maila2, 200.0 ); 
     118            Controls.Listen( Keys.Down, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa alas", maila2, -200.0 ); 
     119        } 
     120 
     121      bool LiikutaMailaa(ControlEvent e) 
     122      { 
     123          PhysicsObject maila = e.Parameter0.ToPhysicsObject(); 
     124          double nopeus = e.Parameter1.ToDouble(); 
     125          double sekuntejaKulunut = e.Time.ElapsedGameTime.TotalSeconds; 
     126 
     127          if ((Level.Bottom < maila.Y) && (maila.Y < Level.Top)) 
     128          { 
     129              maila.Y += nopeus * sekuntejaKulunut; 
     130          } 
     131 
     132          return false; 
     133      } 
    38134 
    39135 
    40136        } 
    41     } 
    42 } 
     137 
     138          
     139 
     140 
     141        } 
     142    
     143 
Note: See TracChangeset for help on using the changeset viewer.