1

正方形ではなく六角形のタイルを使用するローグライク ゲームを書きたいと思っています。(ヘクスはすべての隣接するヘクスから等距離です。) ncurses でこれを調整する方法はありますか? 実際には、パッド内のすべての奇数行を文字幅の 1/2 だけオフセットするだけで済みます。

Python の方が好きですが、C++ も知っています。後者が必要な場合に備えて、この質問に両方のタグを付けました。

4

2 に答える 2

4

あなたはそれに近づくことができます。

 __    __    __    __
/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/
/  \__/  \__/  \__/  \
\__/  \__/  \__/  \__/

末端細胞は 2/1 の比率に近い傾向があります。X4倍、 Y2 倍し、1 行おきに 2 文字ずらすと、六角形のグリッドに十分近づくことができます。

x   x   x   x   x   x   x

  x   x   x   x   x   x
           \ /
x   x   x --x-- x   x   x
           / \
  x   x   x   x   x   x

x   x   x   x   x   x   x

より細かいグリッドを構築することもできます

x x x x x x x x x x x x x
 x x x x x o o x x x x x
x x x x x o + o x x x x x
 x x x x x o o x x x x x
x x x x x x x x x x x x x

つまり、2X行おきに 1 スペースずつシフトします。

コード内 (Python):

def screen_pos(i, j):
    return i*2 + (j & 1), j

def neighbors(i, j):
    h = 1 - (j & 1)
    return [(i-1, j), (i+1, j),
            (i-h, j-1), (i-h, j+1),
            (i-h+1, j-1), (i-h+1, j+1)]
于 2015-05-11T17:50:50.483 に答える