“TypeError:'int'对象在2D,基于文本的Map Generator中是不可订阅的”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“TypeError:'int'对象在2D,基于文本的Map Generator中是不可订阅的”相关的知识,希望对你有一定的参考价值。
好的。在下面的代码中,我试图获取存储在my_heightmap中的(多行).txt文件,并将其转换为一个列表,然后我将其重新格式化为一个数组(这样高度阵列分别保存每行中的每个值)什么将成为一个二维的,基于文本的高度图。)我在这一行得到“不可订阅”的错误:
heightarray[y[x]] = heightlist[count + x]
我不确定我搞砸了哪里,但据我所知,代码应该占用.txt文件的每一行并将其转换为heightarray中自己的列表。我不知道为什么我不能取一个值列表的单个实例并将其转换为数组的单个实例(这只是列表中的列表)?
这可能是非常低效的,但我只是想在一个让我感兴趣的项目上获得我的印章。
#converting the heightmap into an array
heightlist = list(my_heightmap)
heightarray = []
count = 0
for y in range(0,self.size):
for x in range(0, self.size):
heightarray[y[x]] = heightlist[count + x]
count += self.size
#peak generation
for peaks in range(0, round(self.size/30)):
y = random.randomint(0,size + 1)
x = random.randomint(0,size + 1)
for dist in range(0, random.randomint(size/50, size/10)):
heightarray[y[x]] = 9
y += random.randomint(-1,2)
x += random.randomint(-1,2)
my_heightmap.write(heightarray)
my_heightmap.close()
我很抱歉,如果这是一个相当简单的修复(我没有找到另一个对我来说有意义的类似问题),而且我可能没有使用正确的行话。感谢您的帮助!
附:我希望我已经足够解释了这个情况。我很乐意发布更多代码或在需要时进一步解释!
问题来自y[x]
,因为y是一个int。您可能希望将heightarray初始化为2D列表并执行heightarray[y][x] = ...
。有关详细信息,请参见此处:https://www.cs.cmu.edu/~112/notes/notes-2d-lists.html
在这段代码中,y
显然是一个整数:
for y in range(0,self.size):
for x in range(0, self.size):
heightarray[y[x]] = heightlist[count + x]
你期望y[x]
做什么?正如错误消息所示,您不能下标为整数值。
以上是关于“TypeError:'int'对象在2D,基于文本的Map Generator中是不可订阅的”的主要内容,如果未能解决你的问题,请参考以下文章