#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. просто попробуйте распечатать то, что он возвращает. Тогда вы будете знать, что использовать.