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 ShouldNotHitPlayer2()
        {
            var hasHit = false;

            for (sbyte j = 0; j < 2; j++)
            {
                for (sbyte i = 0; i < player2.Height + 2; i++)
                {
                    SetBallPositionForPlayer(j, i, player2);
                    if (CheckPosition.HasHitPlayer(player2, ball))
                    {
                        hasHit = true;
                    }
                }
            }
            Assert.IsFalse(hasHit);
        }
Example #3
0
 public void HasHitUpperMiddlePixelOfPlayer2()
 {
     SetBallPositionForPlayer(p2XOffset, UpperMiddlePixelOffset, player2);
     Assert.IsTrue(CheckPosition.HasHitPlayer(player2, ball));
 }
Example #4
0
 public void HasHitBottomPixelOfPlayer1()
 {
     SetBallPositionForPlayer(p1XOffset, BottomPixelOffset, player1);
     Assert.IsTrue(CheckPosition.HasHitPlayer(player1, ball));
 }