我刚刚开始通过 futurelearn.com 上的类(class)学习编程。
我有一个位图和一个球。任务是对 x 方向的边界进行编码。
工作代码如下所示:
if ((mBallX <= mBall.getWidth()/2 && mBallSpeedX < 0) || (mBallX >= mCanvasWidth - mBall.getWidth()/2 && mBallSpeedX > 0)){
mBallSpeedX = -mBallSpeedX;
但是我有一个逻辑问题。我想明白为什么我不能使用“==”而不是“<=”。当我这样做时,球会从屏幕右侧飞出。
这里有一个视频供您理解。它应该包含所有可能缺失的信息。:
https://www.futurelearn.com/courses/begin-programming/7/steps/42942
最佳答案
请记住,球并不是连续移动的 - 您是以某个固定大小的离散步骤移动它。因此,球不太可能完全落在屏幕的一端或另一端。相反,更有可能的是它意外地超出了屏幕的一侧一小部分。如果您检查球是否恰好位于屏幕一侧,您将无法正确考虑这些情况。另一方面,如果您询问球是否移过屏幕两侧,那么您将正确地解释这些情况。
关于java - 为什么此代码在使用 == 时会失败,但使用 <= 时却可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906135/