正方形ではなく六角形のタイルを使用するローグライク ゲームを書きたいと思っています。(ヘクスはすべての隣接するヘクスから等距離です。) ncurses でこれを調整する方法はありますか? 実際には、パッド内のすべての奇数行を文字幅の 1/2 だけオフセットするだけで済みます。
Python の方が好きですが、C++ も知っています。後者が必要な場合に備えて、この質問に両方のタグを付けました。
正方形ではなく六角形のタイルを使用するローグライク ゲームを書きたいと思っています。(ヘクスはすべての隣接するヘクスから等距離です。) ncurses でこれを調整する方法はありますか? 実際には、パッド内のすべての奇数行を文字幅の 1/2 だけオフセットするだけで済みます。
Python の方が好きですが、C++ も知っています。後者が必要な場合に備えて、この質問に両方のタグを付けました。
あなたはそれに近づくことができます。
__ __ __ __
/ \__/ \__/ \__/ \
\__/ \__/ \__/ \__/
/ \__/ \__/ \__/ \
\__/ \__/ \__/ \__/
/ \__/ \__/ \__/ \
\__/ \__/ \__/ \__/
末端細胞は 2/1 の比率に近い傾向があります。X
4倍、 Y
2 倍し、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)]