私は Java でボンバーマン ゲームを書いています。ゲームのマップ (タイルを含む)、プレイヤー (およびマップ内の動き) のコードを既に作成していますが、爆弾爆発のコードで立ち往生しています。 .
Map
の 2 次元配列を含むクラスがあります。これには、 s、s、およびsTiles
を含めることができます。オブジェクトには、爆弾と爆弾の位置でオブジェクトからメソッドを呼び出すメソッドがあります(すべてオブジェクトの参照があります)。メソッドが呼び出されると、マップは爆弾を正しい に配置します。私の問題は爆弾の爆発にあります。誰が気にする必要がありますか?爆弾そのもの?もしそうなら、爆弾はそれを含む への参照を持つべきですか? 今まで私のタイルは参照を必要としませんでした。Player
Block
Bomb
Player
dropBomb
receiveBomb
Map
Player
Map
Map
receiveBomb
Tile
Tile
Map
私が考えた1つの可能性はTile
、オブジェクト内に参照を持つことです。つまりBomb
、爆弾が爆発すると(そして爆弾はいつ爆発するかを知っています)、爆発のためにタイルオブジェクトのメソッドを呼び出し、タイルはマップのメソッドを呼び出します. ところで、これが良いアイデアかどうかはわかりません。私は何をすべきか?
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);
}
}
マップ クラス:
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);
}
}
動きはもういいので、動かし方は割愛します。