我期待着寫一個使用六邊形瓷磚而不是方形的瓷磚的roguelike遊戲。 (一個十六進制與其所有鄰居等距。)有沒有一種方法可以將它安排在ncurses中?實際上,只需要將字符寬度的1/2中的每個奇數行偏移一次即可。ncurses中的十六進制網格
我喜歡Python,但我知道C++也。如果後者是必要的,則將這個問題標記爲兩者。
我期待着寫一個使用六邊形瓷磚而不是方形的瓷磚的roguelike遊戲。 (一個十六進制與其所有鄰居等距。)有沒有一種方法可以將它安排在ncurses中?實際上,只需要將字符寬度的1/2中的每個奇數行偏移一次即可。ncurses中的十六進制網格
我喜歡Python,但我知道C++也。如果後者是必要的,則將這個問題標記爲兩者。
你可以接近它。
__ __ __ __
/\__/ \__/ \__/ \
\__/ \__/ \__/ \__/
/\__/ \__/ \__/ \
\__/ \__/ \__/ \__/
/\__/ \__/ \__/ \
\__/ \__/ \__/ \__/
終端細胞趨於接近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
和一個空間的每個其他行轉移。
在代碼(蟒蛇):
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)]
在rhex看看:https://github.com/dpc/rhex,它是鏽,但應該給你一個基本思路是如何工作的。它使用一個hex2d-rs庫。