В этом коде я получаю UnboundLocalError: локальная переменная, на которую ссылаются перед назначением. Я не знаю, почему? - PullRequest
0 голосов
/ 07 мая 2020

это код, иногда он не делает эту ошибку, хотя иногда это происходит. Если я ссылаюсь на переменную до того, как код никогда не сработает. Я ставлю click = True и click = False перед его использованием, и они оба не работают.

def main_menu():
    while True:

        screen.fill((255, 255, 255))
        draw_text('K F C', font, (0, 0, 0), screen, 170, 20)

        mx, my = pygame.mouse.get_pos()

        button_1 = pygame.Rect(30, 400, 500, 100)
        button_2 = pygame.Rect(650, 400, 500, 100)
        button_3 = pygame.Rect(340, 600, 500, 100)
        if button_1.collidepoint((mx, my)):
            if click:
                game()
        if button_2.collidepoint((mx, my)):
            if click:
                pass
        if button_3.collidepoint((mx, my)):
            if click:
                pygame.quit()
        pygame.draw.rect(screen, (255, 0, 0), button_1)
        draw_text('Play Game', font_2, (0, 0, 0), screen, 90, 415)
        pygame.draw.rect(screen, (255, 0, 0), button_2)
        draw_text('Manual', font_2,(0, 0, 0), screen, 770, 415)
        pygame.draw.rect(screen, (255, 0, 0), button_3)
        draw_text('Quit', font_2,(0, 0, 0), screen, 525, 615)

        click = False
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            if event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()
            if event.type == MOUSEBUTTONDOWN:
                if event.button == 1:
                    click = True

        pygame.display.update()
        mainClock.tick(60)

1 Ответ

0 голосов
/ 07 мая 2020

Это потому, что вы не объявили click. Вы должны вставить click = #something где-нибудь перед if click:, например:

def main_menu():

    click = False # <------------------

    while True:
        screen.fill((255, 255, 255))
        draw_text('K F C', font, (0, 0, 0), screen, 170, 20)

        mx, my = pygame.mouse.get_pos()

        button_1 = pygame.Rect(30, 400, 500, 100)
        button_2 = pygame.Rect(650, 400, 500, 100)
        button_3 = pygame.Rect(340, 600, 500, 100)
        if button_1.collidepoint((mx, my)):
            if click:
                game()
        if button_2.collidepoint((mx, my)):
            if click:
                pass
        if button_3.collidepoint((mx, my)):
            if click:
                pygame.quit()
        pygame.draw.rect(screen, (255, 0, 0), button_1)
        draw_text('Play Game', font_2, (0, 0, 0), screen, 90, 415)
        pygame.draw.rect(screen, (255, 0, 0), button_2)
        draw_text('Manual', font_2,(0, 0, 0), screen, 770, 415)
        pygame.draw.rect(screen, (255, 0, 0), button_3)
        draw_text('Quit', font_2,(0, 0, 0), screen, 525, 615)

        click = False
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            if event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()
            if event.type == MOUSEBUTTONDOWN:
                if event.button == 1:
                    click = True

        pygame.display.update()
        mainClock.tick(60)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...