2015-05-11 25 views
1

我期待着寫一個使用六邊形瓷磚而不是方形的瓷磚的roguelike遊戲。 (一個十六進制與其所有鄰居等距。)有沒有一種方法可以將它安排在ncurses中?實際上,只需要將字符寬度的1/2中的每個奇數行偏移一次即可。ncurses中的十六進制網格

我喜歡Python,但我知道C++也。如果後者是必要的,則將這個問題標記爲兩者。

回答

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和一個空間的每個其他行轉移。

在代碼(蟒蛇):

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)] 
0

在rhex看看:https://github.com/dpc/rhex,它是鏽,但應該給你一個基本思路是如何工作的。它使用一個hex2d-rs庫。