Example #1
0
        public static void UpdateBallPosition()
        {
            if (!Ball.CanMove())
            {
                return;
            }
            UpdateLastPosition(Ball);
            if (Ball.YStartValue != Board.YMargin + 1 && Ball.YStartValue != Board.Height - 1)
            {
                State.HasHitWall = false;
            }

            if (CheckPosition.HasHitWall(Ball.YStartValue))
            {
                if (!State.HasHitWall)
                {
                    State.HasHitWall = true;
                    Ball.SetAngleAfterWallHit(Ball.XStartValue, Ball.YStartValue);
                    MoveBall();
                    return;
                }
            }

            var hasScored = false;

            if (CheckPosition.HasPlayer1Scored(Ball.XStartValue))
            {
                ScoreBoard.Player1Score++;
                hasScored = true;
            }

            if (CheckPosition.HasPlayer2Scored(Ball.XStartValue))
            {
                ScoreBoard.Player2Score++;
                hasScored = true;
            }

            if (hasScored)
            {
                State.ScreenNeedsRedraw = true;
                ResetBallPosition();
                MoveBall();
                return;
            }

            if (CheckPosition.HasHitPlayer(Player1, Ball))
            {
                PlayerHit(Player1);
                return;
            }

            if (CheckPosition.HasHitPlayer(Player2, Ball))
            {
                PlayerHit(Player2);
                return;
            }

            Ball.Move();
        }
Example #2
0
 public void HasHitBottomWall()
 {
     Assert.IsTrue(CheckPosition.HasHitWall(Board.Height + BottomWallOffset));
 }
Example #3
0
 public void HasHitWallTopWall()
 {
     Assert.IsTrue(CheckPosition.HasHitWall(Board.YMargin + TopWallOffset));
 }