我正在试图采用移动方法来移动单位,但我陷入困境。假设我在位置(3,1)有一个单位,我想将它移动到位置(4,1)。我该如何实现该方法?到目前为止,我有以下代码。 (我有一个代表单位的类,但是我想把moveUnit放在另一个类(现在是它)中,它处理这些东西)。 感谢
public boolean moveUnit( Position from, Position to ) {
return false;
}
关于Position方法,使用如下所示,其中我有一个使用JUnit的测试用例类
@Test
public void shouldBePossibleToMoveUnits() {
Unit u = game.getUnitAt(new Position(2, 0));
boolean moved = game.moveUnit(new Position(2, 0), new Position(3, 0));
assertTrue("It should be possible to move units", moved);
assertNotNull("There should be a unit at 3, 0", u);
}
------------------------------------- UPDATE --------- ---------------------
我已编写此代码来移动设备,但它不起作用。有人能看出我做错了吗?
Unit unitFrom = ((UnitImpl) getUnitAt(from));
if(unitFrom == null) { return false; }
Unit unitTo = ((UnitImpl) getUnitAt(to));
unitFrom = unitTo;
unitFrom = null;
单位不会移动到新位置
答案 0 :(得分:1)
根据Unit
课程的设置方式,您希望自己的方法如下:
public boolean moveUnit(Unit unitToMove, Position moveTo) {
unitToMove.setPosition(moveTo);
return true;
}
这假设Unit
有一个内部方法来通过Position
对象跟踪其位置。您想要移动Unit
,因此您需要将其作为变量之一传递。
如果您希望Game
类在内部获取单位,并让它在给定位置移动单位,请执行以下操作:
public boolean moveUnit(Position unitPosition, Position moveTo) {
Unit unitToMove = getUnitAt(unitPosition);
if (unitToMove == null) {
//If no Unit exists at the given position, return false
return false;
}
unitToMove.setPosition(moveTo);
return true;
}
答案 1 :(得分:0)
Lets say I have a unit at position(3,1), and I want to move it to position(4,1).
这意味着您希望以(4,1)为单位结束,而(3,1)则无单位。
如果单位跟踪它的位置,请更新该指针。 如果位置跟踪他们的单位,请更新这两个指针。