我现在正在用 Java 为我的投资组合开发 Pong 游戏,我只是在 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 个像素处停止。你能弄清楚为什么不是吗?