小编Ryl*_*nza的帖子

在Python中存储三角形/六边形网格的最佳方法

我正在用六角形瓷砖制作游戏,并决定使用三角形/六边形网格.我发现这个问题帮助我生成坐标,并稍微修改了代码,将所有坐标存储为字典中的键,其值为".".(floor)或"X"(wall,)并包括一个打印出地图的字符串表示的函数,其中每个非空白字符代表一个六边形图块.这是新代码:

deltas = [[1,0,-1],[0,1,-1],[-1,1,0],[-1,0,1],[0,-1,1],[1,-1,0]]
class HexGrid():
    def __init__(self, radius):
        self.radius = radius
        self.tiles = {(0, 0, 0): "X"}
        for r in range(radius):
            a = 0
            b = -r
            c = +r
            for j in range(6):
                num_of_hexas_in_edge = r
                for i in range(num_of_hexas_in_edge):
                    a = a+deltas[j][0]
                    b = b+deltas[j][1]
                    c = c+deltas[j][2]           
                    self.tiles[a,b,c] = "X"

    def show(self):
        l = []
        for y in range(20):
            l.append([])
            for x in range(60):
                l[y].append(".")
        for (a,b,c), tile in self.tiles.iteritems():
            l[self.radius-1-b][a-c+(2*(self.radius-1))] = self.tiles[a,b,c]
        mapString …
Run Code Online (Sandbox Code Playgroud)

python dictionary hexagonal-tiles

7
推荐指数
3
解决办法
8485
查看次数

标签 统计

dictionary ×1

hexagonal-tiles ×1

python ×1