Получение ошибки всякий раз, когда я пытаюсь перезапустить игровой цикл

#python #pygame

#python #pygame

Вопрос:

 while gameStart == True:
    startScreen()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            youLose = True
            gameStart = False 
        
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_UP:
            moveY = -snek.fast
            moveX = 0
            gameStart = False
        if event.key == pygame.K_ESCAPE:
            youLose = True
            gameStart = False
  

У меня нет проблем, когда я запускаю игру в первый раз. Я пытаюсь сбросить игру после того, как проиграл, но продолжаю получать ошибку:

 if event.type == pygame.KEYDOWN:
UnboundLocalError: local variable 'event' referenced before assignment
  

Я не понимаю, почему это выдает мне ошибку, и еще меньше, почему она выдает ошибку только во второй раз. Я попытался сделать отступ в блоке, чтобы включить его в for цикл, но это приводит к сбою моей игры.

Комментарии:

1. Если отступ в этом вопросе правильный, проблема в том, что вам нужно настроить оператор KEYDOWN if, чтобы он находился внутри цикла for.

Ответ №1:

Оператор keydown if-else должен находиться внутри цикла for

 while gameStart == True:
    startScreen()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            youLose = True
            gameStart = False 
        
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_UP:
                moveY = -snek.fast
                moveX = 0
                gameStart = False
            if event.key == pygame.K_ESCAPE:
                youLose = True
                gameStart = False