public GameEngine(GameStructure GameStructure) { this.GameStructure = GameStructure; Collisions = new PingPongCollisionDetector(GameStructure); TeamScoredDelegate = new TeamScoredDelegateClass(OnTeamScored); random = new Random(); ResetBall(); }
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(); } }
public void CalculateCollisions(TeamScoredDelegateClass OnTeamScored) { CalculatePlayerBallCollisions(); CalculateWallCollisions(OnTeamScored); }