私は小さなゲームを作成しています。世界を生成するために、ルームオブジェクトをワールドオブジェクトに追加する必要があります。私のジレンマは、ルームを追加するための特別な方法が必要なため、すべての部屋がつながる(つまり、対角線や「島」の部屋はありません)ということです。下の写真。これを行うための最善の方法だろう何2次元配列の周囲の要素を確認する
(色を無視し、灰色の色は部屋あり、空のスペースですか)?有効が真であるならば、それは余裕が置かれることが可能であることを意味する現在、私は
if (this.board[posx-1][posy].isOcc())
valid == true;
if (this.board[posx][posy-1].isOcc())
valid == true;
if (this.board[posx][posy+1].isOcc())
valid == true;
if (this.board[posx+1][posy].isOcc())
valid == true;
の線に沿って何かを持っています。 これが問題になるのは境界から外れていくエッジです。
私は2D配列の一番上の行のランダムな列に1つのルームを配置する初期基底を持っています。したがって、常に構築するものがあります。いうだけのものより、2パスであることにあなたのマップジェネレータを切り替え、その後
class Room {
bool isTraversable = false;
Room rooms = new Room[4]
}
:すなわち -