0

自分用に簡単なマップジェネレーターを書きたいのですが、噛み方がわかりません。フィールドは六角形のくじを引く必要があります。

ランダム タイルを生成するときは、隣人を監視する必要があります。次に、すでに2つの隣人などを考慮に入れる必要があります。再帰?私は、フィールドは水、大地、山であるかもしれないと判断しました - しかし、1つのフィールドでは、水から土地への移行が側面の1つである可能性があります.

配列は、タイルのタイプを指定する数値で構成されます。私はPythonでそれをやりたい - 学習のために。

アドバイスをお願いします。

4

3 に答える 3

0

おそらく再帰を使用する必要はありません。これは学習演習として行うため、進行方法の概要のみを示します。

六角形のグリッドには、行と列の座標系が必要です。

neighboursタイルの座標 x,y を指定すると、そのタイルのすべての近傍を返す関数を作成します。

座標系を使用してすべてのタイルをループします。タイルごとに、隣接するタイルを取得します。隣にタイプがない場合は無視できます。それ以外の場合は、隣のタイルの特性に基づいてタイルの特性を決定します。

于 2012-09-19T10:16:05.277 に答える
0

最も重要なことは、隣人を簡単に確認できるように、マップ上で六角形を示すことだと思います...

賢明な選択の 1 つは、2D タプルを使用して、六角形 (1,1) の 6 つの隣接要素が (1,0),(2,0),(2,2),(1,2),(0 ,2) および (1,1) - 北/上から時計回りに進みます。

マップを作成するには、(現在の隣接タイルに基づいて) 許容されるタイルのセットからランダムに選択して、すべての正方形を反復処理します。

于 2012-09-19T10:16:19.723 に答える
0

何年も前に、いくつかの hexmap ルーチンを実装しました。詳細は正確には覚えていませんが、各行が次の行から 1 ずつオフセットされるような座標系を使用しました。

このような:

00  01  02  03  04  05  06  07
  10  11  12  13  14  15  16  17
20  21  22  23  24  25  26  27
  30  31  32  33  34  35  36  37

したがって、これらのオフセットをヘックス自体の座標に適用することで、ヘックスの隣接座標を見つけることができます (時計回りに上と左のヘックスから始めます)。

-1,-1  -1,0  0,1  1,0  1,-1  0,-1

したがって、16 進数 24 の隣は、13、14、25、34、33、24 です。

もちろん、マップの端に注意する必要があります。

于 2012-09-19T16:18:26.330 に答える