現在 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 ピクセルほど離れています。理解できません。ペイントを使用して座標を描画し、ロジックがどのように機能するかをシミュレートしたところ、画面の下部の端から 5 ピクセルで停止するはずです。なぜそうではないのか分かりますか?