Changeset 31 for aleksi_o


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

Legend:

Unmodified
Added
Removed
  • aleksi_o/Pong/Peli.cs

    r15 r31  
    2121    public class Peli : PhysicsGame 
    2222    { 
     23        const double mailanNopeus = 200.0; 
     24 
    2325        PhysicsObject pallo; 
     26        PhysicsObject []pallot; 
    2427        PhysicsObject maila1; 
    2528        PhysicsObject maila2; 
     29        Meter<int> pelaajan1Pisteet; 
     30        Meter<int> pelaajan2Pisteet; 
     31 
    2632 
    2733        protected override void LoadContent() 
     
    2935            Level = LuoKentta(); 
    3036            AsetaOhjaimet(); 
     37            LisaaLaskurit(); 
    3138            AloitaPeli(); 
    3239        } 
     
    3643            Level kentta = new Level(this); 
    3744            kentta.BackgroundColor = Color.Black; 
     45            pallot = new PhysicsObject[10]; 
     46            for (int i=0; i < pallot.Length; i++) 
     47            { 
     48                IShape ympyra = Shapes.CreateCircle(5.0); 
     49                pallo = new PhysicsObject(10.0, ympyra); 
     50                pallo.X = -200.0; 
     51                pallo.Y = 0.0; 
     52                pallo.Restitution = 1.0; 
     53                kentta.Objects.Add(pallo); 
     54                AddCollisionHandler(pallo, KasittelePallonTormays); 
    3855 
    39             IShape ympyra = Shapes.CreateCircle(20.0); 
    40             pallo = new PhysicsObject(10.0, ympyra); 
    41             pallo.X = -200.0; 
    42             pallo.Y = 0.0; 
    43             pallo.Restitution = 1.0; 
    44             kentta.Objects.Add(pallo); 
     56                IShape ympyra1 = Shapes.CreateCircle(5.0); 
     57                 
     58                PhysicsObject pallo1 = new PhysicsObject(10.0, ympyra1); 
     59                pallot[i] = pallo1; 
     60                pallo1.X = -200.0; 
     61                pallo1.Y = 0.0; 
     62                pallo1.Restitution = 1.0; 
     63                kentta.Objects.Add(pallo1); 
     64                AddCollisionHandler(pallo1, KasittelePallonTormays); 
     65            } 
     66 
    4567 
    4668            maila1 = LuoMaila(kentta.Left + 20.0, 0.0, kentta); 
    4769            maila2 = LuoMaila(kentta.Right - 20.0, 0.0, kentta); 
    48  
     70             
    4971            kentta.CreateBorder(1.0, false); 
    5072 
    5173            return kentta; 
    52          
     74 
    5375        } 
    5476         
    55         void AloitaPeli() 
     77        void KasittelePallonTormays(Collision collision) 
    5678        { 
    57             Vector2D impulssi = new Vector2D(2000.0, 0.0); 
    58             pallo.Hit(impulssi); 
    59         }  
    60     
    61         PhysicsObject LuoMaila( double x, double y, Level kentta ) 
     79            PhysicsObject pallo = collision.Obj; 
     80            PhysicsObject kohde = collision.Other; 
     81 
     82            if (kohde == Level.RightBorder) 
     83            { 
     84                pelaajan1Pisteet.Value += 1; 
     85            } 
     86            else if (kohde == Level.LeftBorder) 
     87            { 
     88                pelaajan2Pisteet.Value += 1; 
     89            } 
     90             
     91            PhysicsObject pallo1 = collision.Obj; 
     92            PhysicsObject kohde1 = collision.Other; 
     93 
     94            if (kohde1 == Level.RightBorder) 
     95            { 
     96                pelaajan1Pisteet.Value += 1; 
     97            } 
     98            else if (kohde1 == Level.LeftBorder) 
     99            { 
     100                pelaajan2Pisteet.Value += 1; 
     101            } 
     102             
     103 
     104        } 
     105 
     106        PhysicsObject LuoMaila(double x, double y, Level kentta) 
    62107        { 
    63             IShape suorakulmio = Shapes.CreateRectangle( 20.0, 100.0 ); 
    64             PhysicsObject maila = PhysicsObject.CreateStaticObject( suorakulmio ); 
     108            IShape suorakulmio = Shapes.CreateRectangle(20.0, 100.0); 
     109            PhysicsObject maila = PhysicsObject.CreateStaticObject(suorakulmio); 
    65110            maila.X = x; 
    66111            maila.Y = y; 
    67112            maila.Restitution = 1.0; 
    68             kentta.Objects.Add( maila ); 
     113            kentta.Objects.Add(maila); 
    69114            return maila; 
    70115        } 
    71116 
     117        void AloitaPeli() 
     118 
     119        { 
     120            for (int i = 0; i < pallot.Length; i++) 
     121            { 
     122                PhysicsObject pallo = pallot[i]; 
     123 
     124                Vector2D impulssi1 = new Vector2D(5000.0, 200.0); 
     125                pallo.Hit(impulssi1); 
     126            } 
     127 
     128          
     129        } 
     130 
     131 
    72132        void AsetaOhjaimet() 
    73133        { 
    74             Controls.Listen(Keys.A, ButtonPosition.Down, LiikutaMailaaYlos, "Pelaaja 1: Liikuta mailaa ylös", maila1); 
    75             Controls.Listen(Keys.Z, ButtonPosition.Down, LiikutaMailaaAlas, "Pelaaja 1: Liikuta mailaa alas", maila1); 
     134            Controls.Listen(Keys.A, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa ylös", maila1, 200.0); 
     135            Controls.Listen(Keys.Z, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 1: Liikuta mailaa alas", maila1, -200.0); 
    76136 
    77             Controls.Listen(Keys.Up, ButtonPosition.Down, LiikutaMailaaYlos, "Pelaaja 2: Liikuta mailaa ylös", maila2); 
    78             Controls.Listen(Keys.Down, ButtonPosition.Down, LiikutaMailaaAlas, "Pelaaja 2: Liikuta mailaa alas", maila2); 
     137            Controls.Listen(Keys.Up, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa ylös", maila2, 200.0); 
     138            Controls.Listen(Keys.Down, ButtonPosition.Down, LiikutaMailaa, "Pelaaja 2: Liikuta mailaa alas", maila2, -200.0); 
     139        } 
     140 
     141        Meter<int> LuoPisteLaskuri(double x, double y) 
     142        { 
     143            Meter<int> laskuri = new Meter<int>(0, 0, 10); 
     144            ValueDisplay naytto = new ValueDisplay(this); 
     145            naytto.BindTo(laskuri); 
     146            naytto.X = x; 
     147            naytto.Y = y; 
     148            naytto.ValueColor = Color.White; 
     149            Add(naytto); 
     150            return laskuri; 
    79151        } 
    80152         
    81         bool LiikutaMailaaYlos(ControlEvent e) 
     153        void LisaaLaskurit() 
     154        { 
     155            double x1 = Screen.Left + 100.0; 
     156            double y1 = Screen.Top - 100.0; 
     157            pelaajan1Pisteet = LuoPisteLaskuri(x1, y1); 
     158 
     159            double x2 = Screen.Right - 100.0; 
     160            double y2 = Screen.Top - 100.0; 
     161            pelaajan2Pisteet = LuoPisteLaskuri(x2, y2); 
     162        } 
     163 
     164 
     165 
     166        bool LiikutaMailaa(ControlEvent e) 
    82167        { 
    83168            PhysicsObject maila = e.Parameter0.ToPhysicsObject(); 
    84             if (maila.Y < Level.Top) 
     169            double nopeus = e.Parameter1.ToDouble(); 
     170            double sekuntejaKulunut = e.Time.ElapsedGameTime.TotalSeconds; 
     171            double uusiY = maila.Y + nopeus * sekuntejaKulunut; 
     172 
     173            if ((Level.Bottom < uusiY) && (uusiY < Level.Top)) 
    85174            { 
    86                 maila.Y += 10.0; 
     175                maila.Y = uusiY; 
    87176            } 
    88177            return false; 
    89178        } 
    90179 
    91         bool LiikutaMailaaAlas(ControlEvent e) 
    92         { 
    93             PhysicsObject maila = e.Parameter0.ToPhysicsObject(); 
    94             if (maila.Y < Level.Top) 
    95             { 
    96                 maila.Y += -10.0; 
    97             } 
    98             return false; 
    99         } 
    100180 
    101          
    102     } 
    103 } 
     181    }    
     182 } 
Note: See TracChangeset for help on using the changeset viewer.