Java:实体在边界内从一侧到另一侧
Java: entity going from one side to the other within boundaries
我正在尝试为一个实体编写代码,该实体从页面的一侧跳到另一侧,直到它到达边界,此时它转向并跳到相反的方向。 4和-4是我的边界,也是两边的最大位置。
位置应该如何改变的例子:
起始位置 0,方向 2:0 > 2 > 4 > 2 > 0 > ... 但我得到的是 0 > 2 > 4 > 0 > -2
起始位置 -1,方向 2:-1 > 1 > 3 > 3 > 1 > ... 但我得到的是 -1 > 1 > 3 > 1 > -1
我正在从扫描仪方法中导入我的位置和方向。这是我遇到问题的代码部分:
public void methodSample() {
if (position + direction > 4) {
position = 8 - (position + direction);
direction = - direction;
}
if (position + direction < -4) {
position = -8 - (position + direction);
direction = - direction;
}
else {
position = position + direction;
}}
但是当我 运行 代码时,我得到了完全不相关的值。如果有人能发现我的代码哪里出了问题,那就太好了。
你想要做的是这样的:
- 如果您的实体会离开右边缘,则切换方向并向左走;
- 如果你的实体会离开左边,然后切换方向并向右走;
- 如果两者都不是,则朝相同的方向前进。
然而,事实并非如此。真正发生的事情是这样的:
- 如果您的实体会离开右边缘,则切换方向并向左移动然后再向左移动一步。
这是因为您缺少 "else"。如果position + direction > 4
,那么你的程序执行第一个if
中的代码。但是,由于第二个 if 上没有 else
,因此程序会继续到第二个 if
。由于 position + direction < -4
现在为假,程序执行 else
部分。这意味着当你碰到右边缘时,程序执行 both 第一个 if
语句的主体 和 的 else 部分第二个 if
语句。将第二个 if
更改为 else if
将解决此问题。
我正在尝试为一个实体编写代码,该实体从页面的一侧跳到另一侧,直到它到达边界,此时它转向并跳到相反的方向。 4和-4是我的边界,也是两边的最大位置。
位置应该如何改变的例子:
起始位置 0,方向 2:0 > 2 > 4 > 2 > 0 > ... 但我得到的是 0 > 2 > 4 > 0 > -2
起始位置 -1,方向 2:-1 > 1 > 3 > 3 > 1 > ... 但我得到的是 -1 > 1 > 3 > 1 > -1
我正在从扫描仪方法中导入我的位置和方向。这是我遇到问题的代码部分:
public void methodSample() {
if (position + direction > 4) {
position = 8 - (position + direction);
direction = - direction;
}
if (position + direction < -4) {
position = -8 - (position + direction);
direction = - direction;
}
else {
position = position + direction;
}}
但是当我 运行 代码时,我得到了完全不相关的值。如果有人能发现我的代码哪里出了问题,那就太好了。
你想要做的是这样的:
- 如果您的实体会离开右边缘,则切换方向并向左走;
- 如果你的实体会离开左边,然后切换方向并向右走;
- 如果两者都不是,则朝相同的方向前进。
然而,事实并非如此。真正发生的事情是这样的:
- 如果您的实体会离开右边缘,则切换方向并向左移动然后再向左移动一步。
这是因为您缺少 "else"。如果position + direction > 4
,那么你的程序执行第一个if
中的代码。但是,由于第二个 if 上没有 else
,因此程序会继续到第二个 if
。由于 position + direction < -4
现在为假,程序执行 else
部分。这意味着当你碰到右边缘时,程序执行 both 第一个 if
语句的主体 和 的 else 部分第二个 if
语句。将第二个 if
更改为 else if
将解决此问题。