2016-07-08 3 views
0

Я работаю на табло в игре, которую я создаю, и знаю, как проверить, нажата ли клавиша, но есть ли способ проверить, нажата ли клавиша WHICH, сделать varibale, и затем добавить его в строку? EDIT: Хорошо, incase Я был неясен: я знаю, что могу проверить, можно ли нажать кнопки, такие как h или t, но я хочу, чтобы просто нажать кнопку и добавить это к строке, и я не хочу для создания функции события для каждой буквы в алфавите.pygame обнаруживает, какая клавиша нажата

ответ

0

Если вы зарегистрировали обратный вызов, чтобы обнаружить, когда нажата клавиша, UNQUESTIONABLY идентификатор ключа будет включен в структуру, переданную в сервисную процедуру обратного вызова.

Независимо от того, предлагает ли это «код клавиатуры», а также значение «Яблоко» ASCII, которое я не могу вам рассказать.

0

Если вам нужна простая текстовая обработка (например, если пользователь должен ввести свое имя для рекорда), просмотрите библиотеку EzText.

В общем, вы можете проверить, какая клавиша была нажата двумя способами.

При использовании очереди событий, вы можете проверить event.key против ключевых Pygame кодов:

import pygame 

pygame.init() 
screen = pygame.display.set_mode((500, 500)) 
done = False 

while not done: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done = True 

     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_SPACE: 
       print("spacebar was pressed") 
      if event.key == pygame.K_q: 
       done = True 

pygame.quit() 

Все коды клавиш перечислены в the documentation. Это приведет к срабатыванию одного события для каждого нажатия клавиши, независимо от того, как долго удерживается один ключ.

В качестве альтернативы, вы можете использовать государственную проверку:

import pygame 

pygame.init() 
screen = pygame.display.set_mode((500, 500)) 
done = False 

while not done: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      done = True 

    state = pygame.key.get_pressed() 
    if state[pygame.K_SPACE]: 
     print("spacebar was pressed") 
    if state[pygame.K_q]: 
     done = True 

pygame.quit() 

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

Смежные вопросы