循环不完全迭代

Tay*_*ill 1 python

我正在创建一个简单的RPG作为学习体验.在我的代码中,我有一个显示在25x25网格上的瓷砖数组,以及一个单独的数组,其中包含与瓷砖是否为实心相关的真/假值.后者不起作用; 在我的下面的代码中,我已经将打印语句准确地放在了它未达到的位置,我不太确定问题是什么.

此外,该级别的数据只是一个文本文件,其网格为25x25个字符,代表块.

def loadLevel(self, level):
    fyle = open("levels/" + level,'r')
    count = 0
    for lyne in fyle:
        if lyne.startswith("|"):
            dirs = lyne.split('|')
            self.north = dirs[1]
            self.south = dirs[2]
            self.east = dirs[3]
            self.west = dirs[4]
            continue

        for t in range(25):
            tempTile = Tiles.Tile()
            tempTile.value = lyne[t]
            tempTile.x = t
            tempTile.y = count
            self.levelData.append(tempTile)
        count += 1

    rowcount = 0
    colcount = 0

    for rows in fyle:
        print('Doesnt get here!')
        for col in rows:
            if col == 2:
                self.collisionLayer[rowcount][colcount] = False
            else:
                self.collisionLayer[rowcount][colcount] = True
            colcount += 1
            print(self.collisionLayer[rowcount[colcount]])
        if rows == 2:
            self.collisionLayer[rowcount][colcount] = False
        else:
            self.collisionLayer[rowcount][colcount] = True
        rowcount += 1

    print(self.collisionLayer)
Run Code Online (Sandbox Code Playgroud)

问题究竟在哪里?我觉得这是一个快速修复,但我根本没有看到它.谢谢!

Ble*_*der 5

您通过第一个for循环读取文件一次,因此第二个循环没有任何内容可供读取.在开始第二个循环之前回到文件的开头:

fyle.seek(0)
Run Code Online (Sandbox Code Playgroud)

虽然我只是将行缓存为列表,如果可能的话:

with open('filename.txt', 'r') as handle:
    lines = list(handle)
Run Code Online (Sandbox Code Playgroud)

另外,你可以替换这个:

if rows == 2:
    self.collisionLayer[rowcount][colcount] = False
else:
    self.collisionLayer[rowcount][colcount] = True
Run Code Online (Sandbox Code Playgroud)

附:

self.collisionLayer[rowcount][colcount] = rows != 2
Run Code Online (Sandbox Code Playgroud)