我正在创建自己的第一个JavaFX游戏,并且正在努力实现某种方法。我有一个玩家,一个敌人和一个班级。当玩家和敌人在同一单元格上行走时,游戏结束。玩家和敌人都有x和y坐标。
要实现这一点,我想循环查看敌人所在的单元格,然后比较x和y坐标以判断玩家是否在与敌人一起的单元格中。
如果有更好的方法可以做到的话,我们将不胜感激。谢谢:)
答案 0 :(得分:0)
用于实现游戏中位置的相当标准的模型是,所有位置变化都要经历实现您的世界(或棋盘或地图)的任何类。然后,它会更新商品的位置,并记录从位置到该位置实体的地图。
interface Entity {
void setPosition(Position position);
Position getPosition();
boolean isEnemy();
}
class World {
private final Map<Position,Set<Entity>> entities = new HashMap<>();
public void move(Entity entity, Position position) {
entitySetAtPosition(entity.getPosition()).remove(entity);
entity.setPosition(position);
entitySetAtPosition(position).add(entity);
}
private Set<Entity> entitySetAtPosition(Position position) {
return entities.computeIfAbsent(position, () -> new HashSet<>());
}
public Stream<Entity> entitiesAtPosition(Position position) {
return entitySetAtPosition(position).stream();
}
}
检查玩家位置是否有敌人world.entitiesAtPosition(player.getPosition).anyMatch(Entity::isEnemy)
。