我正在创建基于回合的平铺游戏(采用龙与地下城的风格),但是在创建基于回合的系统本身时却很挣扎。 当播放器开始其回合(通过按“开始回合”按钮)时,代码将计算播放器与阵列中所有图块之间的距离。 如果距离超过一定值,我想将图块的实体度更改为实体,否则,让他们移动。本质上是限制玩家在一圈内可以移动多远。我不确定我是否以最佳方式实现此目标,因为我可以将其作为指向和点击系统,而不是使用键盘输入-但无论如何
它现在的工作方式是在地图类的tick方法中,我们检查是否已按下“开始移动”按钮,然后调用Tile Checker方法计算出距离。
似乎成功地计算了距离,但是现在我不确定如何将信息发送到另一个类,然后使用该值来更改确定图块是否为Solid的布尔值。
我已经具有碰撞功能,并且将Tile的各个类中的“ isSolid”方法更改为true将使其牢固,以便玩家无法通过它。我只是不知道如何执行有关阵列的操作。
这是我第一次问一个问题,所以不能完全确定我应该包括的所有代码,因此,这是指向整个项目的github链接: https://github.com/Chadface/D-D-Simulator
我试图以几种不同的方式来实现这一点,例如尝试检查Tile类中的距离,但是我对如何与数组正确交互感到困惑
所有在我的地图课程中
public void tick() {
itemManager.tick();
entityManager.tick();
if (GameState.ButtonPressed() && !tileCheck) {
tileChecker(distanceCalculation);
}
}
public void tileChecker(double distanceCalculation) {
xPosition = entityManager.getPlayer().getX();
yPosition = entityManager.getPlayer().getY();
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
if (!getTile(x, y).isSolid()) { // only check tiles that aren't solid
getTile(x, y);
tileX = x;
tileY = y;
calculation(tileX, tileY, distanceCalculation);
}
}
}
tileCheck = true;
}
草砖类
public class GrassTile extends Tile {
public GrassTile(int id) {
super(Assets.grass, id);
}
public boolean isSolid() {
return false;
}
}