Я сейчас работаю над игрой Pong для своего портфолио на Java, и у меня просто небольшая проблема с движением весла Pong.Очевидно, я не хочу, чтобы весла двигались за пределы экрана, поэтому я пытаюсь сделать так, чтобы, когда он достигнет определенной точки на своей оси Y, он не сдвинулся дальше.Я заставил его работать для верхней части экрана, но не для нижней части, и я не могу понять, почему.Условие, которое я использую, ДОЛЖНО работать, но оно просто переместится прямо за нижнюю часть экрана, если я зайду достаточно далеко.Вот условия для движения каждого весла.Если вам нужно больше моего кода, просто спросите.
// Check for Left Paddle movement.
if( ( wKey ) && ( paddle_left.getY() >= ( paddle_speed * 2 ) ) )
paddle_left.setY( paddle_left.getY() - paddle_speed );
else if( ( sKey ) && ( paddle_left.getY() <= ( boardHeight - 10 ) ) )
paddle_left.setY( paddle_left.getY() + paddle_speed );
// Check for Right Paddle movement
if( ( upKey ) && ( paddle_right.getY() >= ( paddle_speed * 2 ) ) )
paddle_right.setY( paddle_right.getY() - paddle_speed );
else if( ( downKey ) && ( paddle_right.getY() <= ( boardHeight - 10 ) ) )
paddle_right.setY( paddle_right.getY() + paddle_speed );
Переменная paddle_speed
- это константа, равная 5. Кроме того, boardHeight
- это высота экрана, на котором все нарисовано, чторавно 480.
Кроме того, это не так важно, но я заметил небольшую задержку с момента, когда я начинаю удерживать клавишу, до того момента, когда весло начинает двигаться.Я знаю, что это из-за начальной задержки нажатия клавиши, установленной на компьютере пользователя, но как я могу это компенсировать?
РЕДАКТИРОВАТЬ: Хорошо, я изменил свой код, чтобы отразить ваш ответ, и я получил это сейчас:
// Check for Left Paddle movement.
if( ( wKey ) && ( paddle_left.getY() >= ( paddle_speed * 2 ) ) ) paddle_left.setY( paddle_left.getY() - paddle_speed );
else if( ( sKey ) && ( paddle_left.getY() <= ( boardHeight - ((paddle_speed * 2) + paddleHeight) ) ) ) paddle_left.setY( paddle_left.getY() + paddle_speed );
// Check for Right Paddle movement.
if( ( upKey ) && ( paddle_right.getY() >= ( paddle_speed * 2 ) ) ) paddle_right.setY( paddle_right.getY() - paddle_speed );
else if( ( downKey ) && ( paddle_right.getY() <= ( boardHeight - ((paddle_speed * 2) + paddleHeight) ) ) ) paddle_right.setY( paddle_right.getY() + paddle_speed );
Тем не менее, он все еще идет немного ниже экрана.Теперь он останавливается, но все равно выходит за пределы экрана на 20 пикселей.Я не понимаюЯ даже использовал Paint, рисовал координаты и моделировал, как должна работать логика, и она должна останавливаться в 5 пикселях от края нижней части экрана.Вы можете понять, почему это не так?