我正在从https://qq.readthedocs.io/en/latest/开始关注有关如何使用Pygame制作瓷砖游戏的本教程。当我运行程序时,出现此错误:
NameError:未定义名称“行”。
我不知道您将row定义为什么,并且还想知道它是否与本教程的制作年份有关(2011年意味着在较新版本的python中起作用的东西不再起作用。) 引发此错误的代码行是这样的:
for x, row in enumerate(row):
答案 0 :(得分:1)
我相信代码是这样的:
import pygame
import pygame.locals
def load_tile_table(filename, width, height):
image = pygame.image.load(filename).convert()
image_width, image_height = image.get_size()
tile_table = []
for tile_x in range(0, image_width/width):
line = []
tile_table.append(line)
for tile_y in range(0, image_height/height):
rect = (tile_x*width, tile_y*height, width, height)
line.append(image.subsurface(rect))
return tile_table
if __name__=='__main__':
pygame.init()
screen = pygame.display.set_mode((128, 98))
screen.fill((255, 255, 255))
table = load_tile_table("ground.png", 24, 16)
for x, row in enumerate(table):
for y, tile in enumerate(row):
screen.blit(tile, (x*32, y*24))
pygame.display.flip()
while pygame.event.wait().type != pygame.locals.QUIT:
pass
如果我们看一下,循环是
for x, row in enumerate(table):
for y, tile in enumerate(row):
row
从第一个循环开始是可迭代的。之后,第二个循环使用row
获取每个图块,并添加图块精灵。
因此,您的意思是for x, row in enumerate(table):
而不是for x, row in enumerate(row):
。