Событие не определено? - PullRequest
       0

Событие не определено?

1 голос
/ 08 января 2020

Я создаю игру, и для моего кода стартового экрана есть модуль под названием event, который обрабатывает щелчок мышью на кнопке, чтобы запустить игру. Но когда я запускаю свой код, он говорит, что событие не определено. До этого все работало нормально, но я решил go с трех циклов while до одного, а l oop, которые будут вызывать функции каждого экрана, которые, я думаю, будут лучше для перезагрузки экрана. Теперь, когда я запускаю его, он говорит, что событие не определено в этом блоке кода. Спасибо. Это код, который, как он говорит, не работает:

def StartScreen():
    win.blit (menu,(0, 0))
    button1 = pygame.Rect(200, 400, 100, 50)
    pygame.draw.rect(win, [255, 255, 255], button1)
    if event.type == pygame.MOUSEBUTTONDOWN:
        mouse_pos = event.pos
        if button1.collidepoint(mouse_pos):
            player.start = False
            player.run = True
    Text = pygame.font.Font('freesansbold.ttf', 20)
    TextSurf, TextRect = text_objects("Start!", Text)
    TextRect.center = ((250), (425))
    win.blit(TextSurf, TextRect)
    pygame.display.update()

А вот мой новый, пока l oop:

while True:
    if player.start == True:
        Start()
    if player.run == True:
        Run()
    if player.gameover == True:
        GameOver()

Пожалуйста, спросите, хотите ли вы полный код.

1 Ответ

1 голос
/ 08 января 2020

Используйте pygame.event.get(), чтобы получить события в начале основного приложения l oop и передать им функции:

while True:

    events = pygame.event.get()

    if player.start == True:
        Start(events)
    if player.run == True:
        Run(events)
    if player.gameover == True:
        GameOver(events)

Добавить событие l oop к функциям для разных этапов игры:

def StartScreen(events):
    win.blit (menu,(0, 0))
    button1 = pygame.Rect(200, 400, 100, 50)
    pygame.draw.rect(win, [255, 255, 255], button1)

    for event in events:
        if event.type == pygame.MOUSEBUTTONDOWN:
            mouse_pos = event.pos
            if button1.collidepoint(mouse_pos):
                player.start = False
                player.run = True

    Text = pygame.font.Font('freesansbold.ttf', 20)
    TextSurf, TextRect = text_objects("Start!", Text)
    TextRect.center = ((250), (425))
    win.blit(TextSurf, TextRect)
    pygame.display.update()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...