1

迷路を構築するプログラムを生成する必要があります。このゲームでは、最大 60 ~ 70 人のプレイヤーが参加します。問題は、グリッドを使いたくないということです。なぜなら、それはあまりにも多くのメモリを浪費し、この表現 (= グリッド) の複雑さはそれほど簡単ではないと思うからです。そこで、いくつか考えた結果、グラフを使用することにしました。

  • それぞれRoomの迷路は、グラフの頂点を表します
  • 迷路のそれぞれConnectorは、グラフのエッジを表します

コネクタは次の場合があります。 1. 外部ドア 2. 外部の部屋 3. 外壁

私の質問は、(x、y)座標からグラフを作成するにはどうすればよいですか(実行時に、ユーザーが座標を挿入している間に迷路を作成したい)?私はこれまで Java (または他の言語) でグラフを操作したことがないので、その方法がよくわかりません。

説明していただけますか?

編集: ゲームには宝物があり、すべてのプレイヤーは少なくとも 1 つの宝物を取得する必要があります。* 各プレイヤーには、ゲーム内で独自のステップがあり (おそらく、次のプレイヤーを決定するのに役立つ優先キューのようなもの)、各プレイヤーは、移動中に迷路内を 1 ステップ移動できます。

4

2 に答える 2

1

頂点リストをエッジ テーブルと共に使用して、迷路を定義できます。基本的に、部屋のリストはグラフの頂点になります。

List<Room> rooms;  // vertex each room will have an x,y location
boolean[][] edges;     // the columns and row are indexes into rooms

したがって、エッジ リストは、edges = new boolean[ rooms.size ][ rooms.size ] マトリックスになります。部屋 1 に部屋 2 につながる廊下がある場合、edges[1][2] = true (edges[2][1] = true とマークすることもできます)。このようにして、部屋 1 を 2 に接続し、2 を 1 に接続します。

コネクタ タイプの場合、ブール値の代わりに Enum を使用できます。Enum.EXTERNAL_WALL、DOOR、NO_CONNECTION など

于 2012-01-19T18:21:02.573 に答える
1

ノードのクラス、コネクタの具体的なタイプ (またはタイプ フラグを持つ) のサブクラス化されるコネクタの基本クラスを作成し、実行時にコネクタとノード間の関係を追加することができます。

あなたの説明は少し曖昧なので、それで十分です。基本的に、グラフについて特別なことは何もありません (非常に大きなグラフやそれらの検索アルゴリズムなどが必要な場合を除きますが、それは今のところやり過ぎです)。

于 2012-01-19T18:17:55.973 に答える