python六角形的绘制 编程_在Python中存储三角形/六边形网格的最佳方法

我正在用六角形瓷砖制作游戏,并决定使用三角形/六边形网格.我发现

this问题帮助我生成坐标,并稍微修改了代码,将所有坐标存储为字典中的键,其值为“.”. (floor)或“X”(wall,)并包括一个打印出地图的字符串表示的函数,其中每个非空白字符代表一个六边形图块.这是新代码:

deltas = [[1,-1],[0,1,[-1,0],1],-1,[1,0]]

class HexGrid():

def __init__(self,radius):

self.radius = radius

self.tiles = {(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,c),tile in self.tiles.iteritems():

l[self.radius-1-b][a-c+(2*(self.radius-1))] = self.tiles[a,c]

mapString = ""

for y in range(len(l)):

for x in range(len(l[y])):

mapString += l[y][x]

mapString += "\n"

print(mapString)

使用此代码,我可以生成半径内的所有坐标,如下所示:

import hexgrid

hg = hexgrid.HexGrid(radius)

并访问这样的坐标:

hg.tiles[a,c]

这似乎现在工作正常,但我确信以这种方式存储地图肯定存在一些缺点.如果有任何缺点,请指出它们,并提出更好的存储方式?非常感谢你的时间.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值