3

私はさらに別の迷路ゲームを作成するという考えを持っています. ただし、重要な違いがあります。迷路はゲーム中にオンザフライで変化します。この問題について考えると、次の制限が頭に浮かびます。

  1. 迷路には変わることのないメインルートがある
  2. メインルートはフィニッシュにつながる唯一のルートです
  3. 迷路の突然変異は、メイン ルートに戻るパスをブロックしてはなりません

また、制御するのも良いでしょう (ゲームの難易度に影響します):

  1. 1回の突然変異で迷路がどれだけ変化するか
  2. 必要に応じて、制限 #3 を無効にします (つまり、プレーヤーはしばらく迷路でブロックされる可能性があります)

編集: 質問は: 指定された制限に違反しない、説明された迷路の生成/突然変異のアルゴリズムを提案 (またはアイデアを提供) できますか?

4

3 に答える 3

1

迷路のすべてのセルとそれらの間の歩行可能な接続を接続するグラフを作成します。迷路を変更するには、まずランダムな壁を選んで倒します。これにより、グラフに新しいエッジが生成されます。次に、そのエッジを含むグラフ内のサイクルを見つけ、そのサイクル内のメインパスではないランダムなエッジを削除します。これにより、別の場所にエッジが作成されます。

このアルゴリズムにより、最初にすべてのセルが到達可能であった場合、それらは引き続き到達可能であることが保証されます。閉じ込められないように、おそらくその機能が必要です。

于 2010-12-17T00:48:14.563 に答える
1

あなたは出来る:

  1. パスをランダムにブロックします (またはいくつかの卑劣な基準を使用して)。

  2. 迷路をスキャンして、接続されていない 2 つの領域に分割されているかどうかを確認します。

  3. 切断された場合、壁が両方の領域に隣接している限り、ランダムに壁を倒すことができます。

迷路の任意の 2 点間のパスが 1 つしかない場合、ステップ 2 は常に迷路を分割するため、#3 が常に必要になります。

于 2010-12-16T14:35:05.020 に答える
0

これはおそらく非常に簡単です。標準の深さ優先探索アルゴリズムを使用して迷路を生成します。開始から終了までの (唯一の) パスを形成するセルのリストをリストに格納します。迷路を変異させることに決めたら、次の手順を実行します。

  1. 迷路全体をデフォルトの状態 (すべての壁が配置されている状態) にリセットします。ただし、クリティカル パスに沿ったすべてのセルと、オプションで、プレイヤーの現在位置の見通し内にあるいくつかのセルを除きます。
  2. 最初から幅優先探索アルゴリズムを再実行しますが、1 つの変更があります。探索する未訪問の隣接を選択するときは、既に壁が除去されているエッジを優先します。

2 番目のステップでの変更により、アルゴリズムが最初に既存のパスを探索し、そこから副通路などを追加することが保証されます。クリティカル パスを保持したくない場合は、必ずしも厳密に保持する必要はありません。ユーザーが立っている場所を除いて、迷路全体を再生成することができ、それは有効なままです。

これは、元のアルゴリズムと同じ方法で常に有効なツリーを生成する必要があると思いますが、ユーザーの周りのセルを保存することの意味については 100% 確信が持てません。これはクリティカル パス上にない可能性がありますただし、再構成された迷路は、ユーザーが立っている場所から常に解けると確信しています。

これもなかなかのアイデアですね。ユーザーが見ていない場所で、迷路が大幅に再配置されるというアイデアが気に入っています。一人称視点でこれを行う場合、カメラ ビューを使用して、ユーザーが見ていないときに背後の壁を変更することもできます!

于 2010-12-17T01:08:26.467 に答える