-5

当船出界(8,-8)时,我需要让船朝相反的方向移动。

船移动但将其当前速度添加到其当前位置。如果船撞到边界,它会掉头并在 opp 中移动。方向...

    }

public void move(int direction)
{
    this.position = position + direction;
    this.velocity = velocity + position;
    if ( position > 5)
    {
        direction = - 1;

    }
    else if ( position < -5)
    {
        direction = + 1;
    }


    }
}

它不起作用..任何帮助都会很棒。

谢谢 :)

4

1 回答 1

1

我会将代码修改为:

public void move(int direction)
{    
    if ( position > 5)
    {
        direction = - 1;    
    }
    else if ( position < -5)
    {
        direction = + 1;
    }
    this.position = position + direction;
    this.velocity = velocity + position;
}

首先将方向设置为 +/-1(根据您的逻辑),然后才更改位置!

您当前执行此操作的方式 - 只有在您执行“移动”后更改direction(这是一个局部变量)的值并完成该方法的执行(然后此局部变量的值被删除) .

顺便一提:

  1. 您没有“覆盖” position == 5 的情况(也许是故意的?)
  2. 如果您在方法内部设置方向 - 为什么还要在方法的签名中传递它?
于 2013-09-18T06:46:57.340 回答