当我开始游戏并打开菜单时,我不断收到错误消息。 “语法警告:名称'完成'在全局声明之前被分配”。我不打扰游戏,但它只是烦人,有关如何解决它的任何想法?
def load_level(level):
walls = []
players = []
finishes = []
x = y = 0
for row in levels[level]:
for col in row:
if col == "W":
walls.append(Wall((x, y)))
if col == "P":
players.append(Player((x, y)))
if col == "F":
finishes.append(Finish1((x, y)))
if col == "G":
finishes.append(Finish2((x, y)))
if col == "H":
finishes.append(Finish3((x, y)))
if col == "I":
finishes.append(Finish4((x, y)))
x += 40.96
y += 30.72
x = 0
return walls, players, finishes
walls, players, finishes = load_level(currentLevel)
def Menu():
runnin = True
while runnin:
clock.tick(60)
screen.fill(BLACK)
mouseclick = pygame.mouse.get_pressed()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit(0)
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
sys.exit(0)
for option in options:
if option.rect.collidepoint(pygame.mouse.get_pos()):
option.hovered = True
if mouseclick[0] == 1:
if option.text == "Easy":
walls, players, finishes = load_level(0)
global currentlevel, walls, players, finishes
currentlevel = 0
main()
elif option.text == "Medium":
walls, players, finishes = load_level(1)
global currentlevel, walls, players, finishes
currentlevel = 1
main()
elif option.text == "Hard":
walls, players, finishes = load_level(2)
global currentlevel, walls, players, finishes
currentlevel = 2
main()
else:
runnin = False
else:
option.hovered = False
option.draw()
pygame.display.update()
pygame.quit()
sys.exit(0)
答案 0 :(得分:1)
在将变量值调用为全局之前为变量赋值时会发生这种情况,解决此问题的方法是将行global currentlevel, walls, players, finishes
移动到第二个函数的开头而不是if
声明。代码仍然会运行相同,但会删除错误。