1

10x10 の部屋を含むマップを自動的に生成するテキスト ベースのゲームを作成しました。いくつかの部屋はさまざまながれきによってブロックされており、プレーヤーがまだキーに到達して取得できるかどうかを確認する最も効率的な方法を見つけることができませんでした。マップから切り離されることなく出口へ。

現在、必要な部屋がマップの残りの部分から切り離されている可能性が低いため、レベルが不可能になっています。隣接する各正方形を開始位置にチェックしてから、アクセス可能なすべての正方形がに設定されるまで繰り返します。変数で「アクセス可能」になり、3 つのオブジェクトに到達できない場合は、到達するまでマップを再生成します。ただし、数回再生成すると、これは遅くなる可能性があります。

反復部分を高速に保つためのアイデア、またはこれを達成するためのより良い方法について誰か考えていますか?

生成されたマップのイメージを次に示します。# はブロックされた部屋です。 http://postimg.org/image/8oo88jxgb/

4

4 に答える 4

2

ダイクストラのアルゴリズム、またはその他の経路探索アルゴリズムを使用して、部屋の入り口から各オブジェクトへの道があるかどうかを確認し、無効な部屋を破棄できます。ただし、特に部屋が大きくなったり、オブジェクトを追加したりすると、おそらく少し遅くなります。

より良い選択肢は、部屋の各部分に到達できることを建設によって保証することです. これは、 Binary Space Partitioning (BSP)を使用して実現できます。すべての部屋が接続されていることを保証しながら、ランダムなダンジョンを作成するために使用できます。詳細については、このチュートリアルを参照してください。

手続き的に生成されたダンジョンに関する資料がたくさんあります。ここで別の興味深いチュートリアルを確認できます。

于 2015-04-01T04:27:47.947 に答える