我遇到了这段代码的问题,如果有人能指出我正确的方向,我将非常感激。已经坚持了几天!!
基本上我试图阻止船一旦到达边界就移动。 边界是6和-6。
这是代码。谢谢:))
public void move (int direction) //if position exceeds 5 then playership will
//no long move in that direction.
{
if (position > 5)
{
.... ?? What to write here?
}
else if (position < -5)
{
.... ?? What to write here?
}
position = position + direction;
gun1.move(direction);
gun2.move(direction);
}
答案 0 :(得分:2)
问题取决于。如果你想在物体到达边界时停止它,那么就像......
// Move first
position = position + direction;
// Boundary check second...
if (position > 5)
{
position = 5;
}
else if (position < -5)
{
position = -5;
}
gun1.move(direction);
gun2.move(direction);
如果你想“反弹”墙壁......
// Move first
position = position + direction;
// Boundary check second...
if (position > 5)
{
position = 5;
direction *= -1
}
else if (position < -5)
{
position = -5;
direction *= -1
}
gun1.move(direction);
gun2.move(direction);
可能会工作 - 没有更多的背景很难说出来......
答案 1 :(得分:2)
即使他试图离开边界,这也会让玩家保持在边界
public void move (int direction) //if position exceeds 5 then playership will
//no long move in that direction.
{
if (position > 5)
{
position = 5;
}
else if (position < -5)
{
position = -5;
}
position = position + direction;
gun1.move(direction);
gun2.move(direction);
}
答案 2 :(得分:0)
您的方法必须将状态(已移动或未移动)传达给调用代码。 您可以通过以下两种方式完成此任务:
1返回状态代码
public int move (int direction) //if position exceeds 5 then playership will //no long move in that direction. { if (position > 5 || position <-5) { return -1; //status code for no movement }
2当船不能移动时抛出异常
public void move (int direction) throws InvalidArgumentException//if position exceeds 5 then playership will //no long move in that direction. { if (position > 5 || position <-5) { throw new InvalidArgumentException("Cannot move!"); //status code for no movement }
调用代码可以处理状态代码/异常,看它是否合适。