我正在寻找一个使用六角形瓷砖而不是方形瓷砖的roguelike游戏。 (十六进制与其所有邻居等距离。)有没有办法在ncurses中安排这个?实际上,只需将垫中的每个奇数行偏移一个字符宽度的1/2即可。
我更喜欢python,但我也知道c ++。标记这个问题,以防后者是必要的。
答案 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库。