我正在创建一个简单的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)
问题究竟在哪里?我觉得这是一个快速修复,但我根本没有看到它.谢谢!
您通过第一个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)