实现移动方法

时间:2013-11-06 18:55:29

标签: java

我正在试图采用移动方法来移动单位,但我陷入困境。假设我在位置(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;

单位不会移动到新位置

2 个答案:

答案 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)则无单位。

如果单位跟踪它的位置,请更新该指针。 如果位置跟踪他们的单位,请更新这两个指针。