我正在尝试制作一个移动方法来移动单位,但是我卡住了。假设我在位置(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);
}我已经写了这段代码来移动单元,但它不工作。有人能看到我做错了什么吗?
Unit unitFrom = ((UnitImpl) getUnitAt(from));
if(unitFrom == null) { return false; }
Unit unitTo = ((UnitImpl) getUnitAt(to));
unitFrom = unitTo;
unitFrom = null;该单元不会移动到新位置
发布于 2013-11-07 03:06:35
根据您的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;
}发布于 2013-11-07 03:29:32
Lets say I have a unit at position(3,1), and I want to move it to position(4,1).
这意味着您希望以(4,1)处的单元结束,而不是(3,1)处的单元。
如果该单元跟踪其位置,则更新该指针。如果位置跟踪它们的单位,则更新这两个指针。
https://stackoverflow.com/questions/19820409
复制相似问题