Как я могу использовать pygame.key.get_pressed (), чтобы получить один вход? - PullRequest
0 голосов
/ 05 июля 2019

Я хочу использовать pygame для выполнения действия при одновременном нажатии нескольких клавиш, например, когда обе клавиши a и b нажаты, моя программа выводит «hi». Я попытался pygame.KEYDOWN, но я не смог найти способ обнаружить несколько входов с этим. Когда я использовал pygame.key.get_pressed (), я получил слишком много операторов печати, так как я хочу только один оператор печати, а не оператор печати, пока нажата клавиша. Может кто-нибудь помочь мне с этим вопросом?

В настоящее время у меня есть следующее:

keys = pygame.key.get_pressed()  # checking pressed keys
        if keys[pygame.K_r] and keys[pygame.K_l]:
            print('hi')
        elif keys[pygame.K_l]:
            print('bye')

Но когда я нажимаю r и l, hi печатается много раз, но я хочу, чтобы он печатался только один раз.

1 Ответ

0 голосов
/ 05 июля 2019

KEYDOWN события удерживают одну клавишу. Чтобы сделать то, что вы хотите, вы можете объединить два метода.

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        sys.exit()
    elif event.type == pygame.KEYDOWN:
        keys = pygame.key.get_pressed()
        if event.key == pygame.K_r and keys[pygame.K_l]:
            print("Hi")
        elif event.key == pygame.K_l:
            print('bye')

По сути, вы ловите событие одной из двух клавиш, которые вы хотите нажать вместе, и проверяете, нажата ли другая тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...