Случайные нажатия клавиш Pygame

#python #pygame

Вопрос:

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

 unic1=random.randint(0,9)
unic2=random.randint(0,9)
for event in pygame.event.get():
    if event.type == pygame.QUIT:  
        running = False
    elif event.type == pygame.KEYDOWN:
        if event.key == "pygame.K_"  str(unic1):
            x2 =10
            unic1=random.randint(0,9)
        elif event.key != "pygame.K_"   str(unic1):
            x2-=10
            unic1=random.randint(0,9)
 

Ответ №1:

На цифровой панели есть лей-коды от pygame.K_KP0 до pygame.K_KP9 .

Создайте список ключей:

 key_list = [pygame.K_KP0, pygame.K_KP1, pygame.K_KP2, pygame.K_KP3, pygame.K_KP4
            pygame.K_KP5, pygame.K_KP6, pygame.K_KP7, pygame.K_KP8, pygame.K_KP9]
 

Используйте random.choice для выбора случайного ключа:

 random_key = random.choice(key_list)
 

События клавиатуры KEYDOWN и KEYUP (см. модуль pygame.event) создают pygame.event.Event объект с дополнительными атрибутами. Нажатая клавиша может быть получена из key атрибута (например K_RETURN , K_a ), и mod атрибут содержит набор битов с дополнительными модификаторами (например KMOD_LSHIFT ). unicode Атрибут обеспечивает представление ввода с клавиатуры в Юникоде.

 for event in pygame.event.get():
    if event.type == pygame.QUIT:  
        running = False
    elif event.type == pygame.KEYDOWN:

        if event.key == random_key:
            print(pygame.key.name(event.key))  
            # [...]
 

Ответ №2:

 pygame.key.name(event.key)
 

вернет имя ключа (a, b, c, 1, 2, 3) и т.д. Вы можете использовать это для проверки правильности нажатия клавиши:

 if pygame.key.name(event.key) == str(unic1):
  # the key was pressed
 

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

1. Вы знаете, как использовать его с цифровой клавиатурой?

2. просто попробуйте распечатать то, что он возвращает. Тогда вы будете знать, что использовать.