Whenever I start my game and it loads my menu I get the error "SyntaxWarning: name 'finishes' is assigned to before global declaration". How do I fix this? I doesn't disrupt my game but any error should be fixed. I have cut down the below code to just show the essential code.
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 e in pygame.event.get():
if e.type == pygame.QUIT:
pygame.quit()
sys.exit(0)
if e.type == pygame.KEYDOWN:
if e.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":
global currentlevel, walls, players, finishes
walls, players, finishes = load_level(0)
currentlevel = 0
main()
elif option.text == "Medium":
global currentlevel, walls, players, finishes
walls, players, finishes = load_level(1)
currentlevel = 1
main()
elif option.text == "Hard":
global currentlevel, walls, players, finishes
walls, players, finishes = load_level(2)
currentlevel = 2
main()
elif option.text == "Help":
Help()
else:
runnin = False
else:
option.hovered = False
option.draw()
screen.blit(title_font.render("Amazeing Race", True, GREY), (130, 50))
pygame.display.update()
pygame.quit()
sys.exit(0)