ncurses中的十六进制网格

时间:2015-05-11 17:38:14

标签: python c++ ncurses python-curses

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

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

2 个答案:

答案 0 :(得分:3)

你可以接近它。

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

终端电池往往接近2/1的比例;将X乘以4,将Y乘以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

即。加倍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)]

答案 1 :(得分:0)

看看rhex:https://github.com/dpc/rhex,它在Rust中,但应该给你一个基本的想法,它是如何工作的。它使用hex2d-rs库。