Java:实体在边界内从一侧到另一侧

Java: entity going from one side to the other within boundaries

我正在尝试为一个实体编写代码,该实体从页面的一侧跳到另一侧,直到它到达边界,此时它转向并跳到相反的方向。 4和-4是我的边界,也是两边的最大位置。

位置应该如何改变的例子:

我正在从扫描仪方法中导入我的位置和方向。这是我遇到问题的代码部分:

    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 将解决此问题。