gpt4 book ai didi

java - 实现移动方法

转载 作者:行者123 更新时间:2023-12-01 13:53:00 26 4
gpt4 key购买 nike

我正在尝试制定一种移动方法来移动单位,但我被卡住了。假设我在位置(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;

该单位没有移动到新位置

最佳答案

根据您的 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;
}

关于java - 实现移动方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com