示例#1
0
 public GameEngine(GameStructure GameStructure)
 {
     this.GameStructure = GameStructure;
     Collisions         = new PingPongCollisionDetector(GameStructure);
     TeamScoredDelegate = new TeamScoredDelegateClass(OnTeamScored);
     random             = new Random();
     ResetBall();
 }
示例#2
0
        private void CalculateWallCollisions(TeamScoredDelegateClass OnTeamScored)
        {
            if (GameStructure.Ball.PositionX >= GameStructure.GameField.Width - GameStructure.Ball.Radius)
            {
                if (GameStructure.scoring)
                {
                    GameStructure.GameTeams[0].score++;
                    OnTeamScored();
                }

                else
                {
                    GameStructure.Ball.PositionX = (GameStructure.GameField.Width - GameStructure.Ball.Radius) - (GameStructure.Ball.PositionX - (GameStructure.GameField.Width - GameStructure.Ball.Radius));
                    GameStructure.Ball.ReverseDirectionX();
                }
            }

            if (GameStructure.Ball.PositionY >= GameStructure.GameField.Height - GameStructure.Ball.Radius)
            {
                GameStructure.Ball.PositionY = (GameStructure.GameField.Height - GameStructure.Ball.Radius) - (GameStructure.Ball.PositionY - (GameStructure.GameField.Height - GameStructure.Ball.Radius));
                GameStructure.Ball.ReverseDirectionY();
            }
            if (GameStructure.Ball.PositionX <= GameStructure.Ball.Radius)
            {
                if (GameStructure.scoring)
                {
                    GameStructure.GameTeams[1].score++;
                    OnTeamScored();
                }

                else
                {
                    GameStructure.Ball.PositionX = GameStructure.Ball.PositionX * -1;
                    GameStructure.Ball.ReverseDirectionX();
                }
            }

            if (GameStructure.Ball.PositionY <= GameStructure.Ball.Radius)
            {
                GameStructure.Ball.PositionY = GameStructure.Ball.Radius + (GameStructure.Ball.Radius - GameStructure.Ball.PositionY);
                GameStructure.Ball.ReverseDirectionY();
            }
        }
示例#3
0
 public void CalculateCollisions(TeamScoredDelegateClass OnTeamScored)
 {
     CalculatePlayerBallCollisions();
     CalculateWallCollisions(OnTeamScored);
 }