“TypeError:'int'对象在2D,基于文本的Map Generator中是不可订阅的”

问题描述 投票:0回答:2

好的。在下面的代码中,我试图获取存储在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()

我很抱歉,如果这是一个相当简单的修复(我没有找到另一个对我来说有意义的类似问题),而且我可能没有使用正确的行话。感谢您的帮助!

附:我希望我已经足够解释了这个情况。我很乐意发布更多代码或在需要时进一步解释!

python macos pygame
2个回答
1
投票

问题来自y[x],因为y是一个int。您可能希望将heightarray初始化为2D列表并执行heightarray[y][x] = ...。有关详细信息,请参见此处:https://www.cs.cmu.edu/~112/notes/notes-2d-lists.html


0
投票

在这段代码中,y显然是一个整数:

for y in range(0,self.size):
    for x in range(0, self.size):
        heightarray[y[x]] = heightlist[count + x]

你期望y[x]做什么?正如错误消息所示,您不能下标为整数值。

© www.soinside.com 2019 - 2024. All rights reserved.