好的。在下面的代码中,我试图获取存储在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()
我很抱歉,如果这是一个相当简单的修复(我没有找到另一个对我来说有意义的类似问题)而且我可能没有使用正确的术语。感谢您的帮助!
P.S。我希望我已经足够解释了这个情况。我很乐意发布更多代码或在需要时进一步解释!
答案 0 :(得分:1)
问题来自y[x]
,因为y是一个int。您可能希望将heightarray初始化为2D列表并执行heightarray[y][x] = ...
。有关详情,请参阅此处:https://www.cs.cmu.edu/~112/notes/notes-2d-lists.html
答案 1 :(得分:0)
在此代码中,y
显然是一个整数:
for y in range(0,self.size):
for x in range(0, self.size):
heightarray[y[x]] = heightlist[count + x]
您期望y[x]
做什么?正如错误消息所示,您不能下标为整数值。