【问题标题】:Hex grid in ncursesncurses中的十六进制网格
【发布时间】:2015-05-11 17:38:13
【问题描述】:

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

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

【问题讨论】:

    标签: python c++ ncurses python-curses


    【解决方案1】:

    你可以靠近它。

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

    终端细胞倾向于接近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)]
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-09
        • 2011-06-01
        • 2012-08-01
        • 2013-01-21
        • 2020-02-12
        相关资源
        最近更新 更多