1

我正在寻找使用六边形瓷砖而不是方形瓷砖的roguelike游戏。(一个十六进制与其所有邻居的距离相等。)有没有办法在 ncurses 中安排这个?实际上,只需将填充中的每个奇数行偏移字符宽度的 1/2。

我更喜欢 python,但我也知道 c++。将此问题标记为两者,以防后者是必要的。

4

2 回答 2

4

你可以靠近它。

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

终端细胞倾向于接近2/1的比例;通过乘以X4,乘以Y2 并每隔一行移动两个字符,您就可以足够接近六边形网格了。

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

即加倍X并每隔一行移动一个空格。

在代码中(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 回答
0

看看 rhex:https ://github.com/dpc/rhex ,它在 Rust 中,但应该让您基本了解它是如何工作的。它使用 hex2d-rs 库。

于 2016-01-23T08:03:12.750 回答