1

私はタイルベースの 2D ゲームに取り組んでおり、マップの生成に小さな問題があります。

一般的な概念は、デフォルトで 1 つの部屋を作成し、X 個の部屋が構築されるか、Y 回の試行が失敗するまで既存の部屋から構築するというものです。

私が直面している問題はおそらく単純で、頭に浮かぶことはできませんが、丸で囲まれたタイルを削除するにはどうすればよいでしょうか? 生成された各マップは手続き型であるため、丸で囲まれたようなスポットがいつ表示されるか正確にはわかりませんが、目で簡単に見つけることができます...マップの後でそれらを処理するための包括的な方法を考えることはできません.はすでに生成されています。

目標は、必要のない場所で壁を二重にしないことです。マップの生成方法を変更したくはありませんが、事後に変更します。また、部屋の隅などをなくしたくありません。

私がやろうとしていることは、画像編集などで名前が付けられるような気がしますが、それは私の得意分野ではありません。

説明画像

4

2 に答える 2

1

できれば答えの代わりにコメントしますが、答えられないので試してみます。

レベルの詳細をどのように保存していますか? 2 つの水平な壁または 2 つの垂直な壁が接触している場所を知りたいようで、それらがコーナーでない限り削除します。

1つか2つのルールが必要なようです...

それが水平な壁で、どちらかの側にタイルがある場合は、上または下を削除します。

垂直の壁で、上下にタイルがある場合は、左右のいずれかを削除します

于 2012-09-20T15:05:13.620 に答える
1

特定の状況では、ルールを破ることなく、あなたが丸で囲んだアイテムまたは反対側を削除できるため、丸で囲まれたアイテムはあいまいです (外部の黒いタイルに開かれたミキシングルームはありません)。

いずれにせよ、私はそれについてもう少し考える必要がありますが、それらは削除された後に2つの部屋に参加せず、隣接する(対角線を含む)黒いタイルを持たないタイルのように見えます.

すべての部屋に番号を割り当てて、次のタイルを削除できると思います。

  • 番号の異なる 2 つのフロア タイルを接続しない
  • どちらも隣接する黒いブロックを持っていません

部屋に番号を付けずにそれを行うこともできますが、すべての隣人が同じ部屋から来ているかどうかを、側面の隣接性を利用して理解する必要があります。

于 2012-09-20T03:42:01.170 に答える