Есть ли причина, по которой event.key не работает в середине моего кода? - PullRequest
1 голос
/ 14 марта 2020

Итак, я работал над проектом в PyGame. Чтобы протестировать валютную систему, я решил увеличить ваши деньги при нажатии клавиши. Я пытался убрать утверждение if из игры l oop. Вот мой код:

gameRun = True
while gameRun:
    for event in pygame.event.get():
        if event.key == pygame.K_p:
            print("This Should Work")
            currency.balance.amount += 1
            pygame.display.update()

У меня есть несколько других строк кода, но я считаю, что в этих строках что-то не так. Большое вам спасибо!

1 Ответ

1 голос
/ 14 марта 2020

Есть ли причина, по которой event.key не работает на полпути через мой код?

Я полагаю, у вас более 1 события l oop, соответственно, вызов pygame.event.get() есть в вашем коде.
Примечание pygame.event.get() удаляет события из очереди. Если у вас более 1 события l oop, то только один случайный l oop получит события, все остальные циклы go с пустыми руками. Это приводит к тому, что вы пропустите события.

Получите список событий один раз в главном приложении l oop и используйте один и тот же список событий в нескольких циклах событий. Например:

gameRun = True
while gameRun:
    events = pygame.event.get()

    for event in events:
        if event.key == pygame.K_p:
            print("This Should Work")
            currency.balance.amount += 1
            pygame.display.update()

    # [...]

    foo(event)

    # [...]

    for event in events:
        # [...]
def foo(events):
    for event in events:
        # [...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...