gpt4 book ai didi

java - 乒乓 Racket 运动问题

转载 作者:行者123 更新时间:2023-12-01 05:29:20 26 4
gpt4 key购买 nike

我现在正在用 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。

此外,这并不那么重要,但我注意到从我开始按住按键到桨开始移动之间有轻微的延迟。我知道这是由于用户计算机上设置的初始按键延迟造成的,但我该如何对此进行补偿?

编辑:好的,我更改了代码以反射(reflect)您的答案,现在我已经得到了:

// 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 个像素的地方。你能找出为什么不是吗?

最佳答案

这可能是因为您在检查屏幕底部时没有考虑桨的尺寸。因此,如果您的桨大于您的速度大小 (5),那么它将绘制在屏幕底部下方。

对于按键重复延迟问题,您可能必须保留哪些按键被按下的标志。在 keyPressed() 事件上设置标志并在 keyReleased() 上清除它,然后使用计时器更新桨。

关于java - 乒乓 Racket 运动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9250666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com