gpt4 book ai didi

java - 炸弹人游戏中的炸弹爆炸

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:06 25 4
gpt4 key购买 nike

我正在用 Java 编写一个炸弹人游戏,我已经编写了游戏 map (包含方 block )、玩家(以及他们在 map 中的移动)的代码,现在我陷入了代码中炸弹爆炸。

我有一个 Map 类,它包含 Tiles 的二维数组,它可以包含 PlayerBlock炸弹Player 对象有一个方法 dropBombMap 对象调用方法 receiveBomb (每个 Player 具有 Map 对象的引用)以及炸弹的位置和炸弹。当 Map 方法 receiveBomb 被调用时, map 将炸弹放入正确的 Tile 中。我的问题是炸弹爆炸。谁应该关心它?炸弹本身?如果是,炸弹是否应该具有包含它的 Tile 的引用?到目前为止,我的图 block 还不需要 Map 引用。

我想到的一种可能性是在 Bomb 对象中包含 Tile 引用,因此,当炸弹爆炸时(炸弹知道它应该何时爆炸)它为爆炸调用瓦片对象中的方法,瓦片调用 map 中的方法。顺便说一句,我不知道这是个好主意。我该怎么办?

public class Tile {

private boolean available; //if the tile is not occupied by a indestructible block or bomb
private List<Entity> entities; //you can have more than one player at a tile
public boolean receiveEntity(Entity entity) {
boolean received = false;
if (available) {
this.entities.add(entity);
received = true;
if (entity instanceof Block || entity instanceof Bomb) {
available = false;
}
}
return received;
}

public boolean removePlayer(Player player) {
return entities.remove(player);
}
}

玩家类:

public class Player implements Entity {

private Map gameMap;
private int posX;
private int posY;
private int explosionRange; //the explosion range for bombs
public Player(int posX, int posY, Map gameMap) {
this.gameMap = gameMap;
this.posX = posX;
this.posY = posY;
this.explosionRange = 1;
}

public void dropBomb() {
gameMap.receiveBomb(new Bomb(explosionRange), posX, posY);
}
}

map 类:

public class Map {

private Grid<Tile> tileGrid;
private int width;
private int height;

public Map(int width, int height, BuildingStrategy buildingStrategy) {
this.width = width;
this.height = height;
this.tileGrid = new Grid<Tile>(width, height);
buildingStrategy.buildMap(this);
}
public void receiveBomb(Bomb bomb, int posX, int posY) {
tileGrid.get(posX, posY).receiveEntity(bomb);
}
}

我省略了移动方法,因为移动已经可以了。

最佳答案

我一直在学习,并遵循“ table 自己画画”的规则生活。画家可能会选择颜色并调用方法,地板可能会决定泄漏和飞溅的显示方式,但 table 会自己绘画。

回到您的问题:炸弹会自行爆炸。这样你就可以对不同的炸弹产生不同的效果。炸弹对瓷砖有影响,瓷砖对此使用react。

示例:炸弹具有威力和爆炸类型。炸弹(我认为只占据一格又一格?)会将其效果“赋予”一格。

现在是处理分配此力的图 block 。假设您有几种炸弹,一种威力(比如 1 到 10 之间的数字)和两种类型(比如普通、燃烧、卡住)。

现在你的炸弹爆炸了,因为你的化身是 5 级火法师,所以你的炸弹威力为 4,类型为燃烧弹。所以你对你的瓷砖说:我以 4 的力量爆炸,我要让你着火!

现在方 block 开始玩了。任何被爆炸力“触及”的瓷砖都需要调用它的“爆炸”功能来做事。如果它也着火了,就在“onFire”函数中做更多的事情

“爆破”的方 block 来自力。力为 4 的普通瓦片会向 4 范围内的所有方格发出爆炸,但如果它是一个特殊的瓦片(它自己知道这一点),比如山瓦片,它可能无法用那个力前进。

瓷砖 1 以 4 爆炸,并以 3 的力量将其传递给相邻的瓷砖。其中一个瓷砖可能是一堵墙,所以不要做任何进一步的事情。另一个是普通的瓷砖,会爆炸,并继续用力 2 向前推,等等。如果它是“水”瓷砖,爆炸会向前推,但火不会,等等

所以:

  • 炸弹自己爆炸并调用方 block 爆炸函数
  • 瓦片爆炸并根据瓦片类型插入爆炸。
  • 随后的瓷砖因此而爆炸。

最终看起来大部分工作都是由 tile 完成的,甚至可能是这样。但第一步:计算力、类型和第一次调用来自炸弹。炸弹爆炸了。然后爆炸对瓷砖产生影响。 tile 处理它,并在需要时传播它。

关于java - 炸弹人游戏中的炸弹爆炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19380364/

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