首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现move方法

实现move方法
EN

Stack Overflow用户
提问于 2013-11-07 02:55:29
回答 2查看 385关注 0票数 0

我正在尝试制作一个移动方法来移动单位,但是我卡住了。假设我在位置(3,1)有一个单元,我想将它移动到位置(4,1)。如何实现该方法?到目前为止,我有下面的代码。(我有一个表示单元的类,但我希望moveUnit在另一个类中(它现在所在的位置),来处理这些东西)。谢谢

代码语言:javascript
复制
public boolean moveUnit( Position from, Position to ) {

    return false;
}

关于Position方法,它的用法如下所示,其中我有一个包含使用JUnit的测试用例的类

代码语言:javascript
复制
@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);
}

我已经写了这段代码来移动单元,但它不工作。有人能看到我做错了什么吗?

代码语言:javascript
复制
Unit unitFrom = ((UnitImpl) getUnitAt(from));

    if(unitFrom == null) { return false; }
    Unit unitTo = ((UnitImpl) getUnitAt(to));

    unitFrom = unitTo;
    unitFrom = null;

该单元不会移动到新位置

EN

回答 2

Stack Overflow用户

发布于 2013-11-07 03:06:35

根据您的Unit类的设置,这是您希望您的方法看起来像这样:

代码语言:javascript
复制
public boolean moveUnit(Unit unitToMove, Position moveTo) {
    unitToMove.setPosition(moveTo);
    return true;
}

这里假设Unit有一个通过Position对象跟踪其位置的内部方法。您希望移动Unit,因此需要将其作为一个变量传递。

如果您希望Game类在内部获取单元,并且只是让它在给定位置移动一个单元,请执行以下操作:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 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)处的单元。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19820409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档