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(); }
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); }
public void HasHitUpperMiddlePixelOfPlayer2() { SetBallPositionForPlayer(p2XOffset, UpperMiddlePixelOffset, player2); Assert.IsTrue(CheckPosition.HasHitPlayer(player2, ball)); }
public void HasHitBottomPixelOfPlayer1() { SetBallPositionForPlayer(p1XOffset, BottomPixelOffset, player1); Assert.IsTrue(CheckPosition.HasHitPlayer(player1, ball)); }