我正在关注Eric Matthes的书“ Python Crash Course”,并正在练习12-4“ Keys”。本练习的目的是测试空白pygame屏幕的打印输出,该屏幕将打印每个keydown事件。我试图确保我的输出正确,并弄清楚输出的含义。
执行文件并弹出空白屏幕后,我输入各种键(字母,数字,箭头等)。在终端外壳上,将打印出一系列数字。例如,如果我输入“ g”,“ p”,向上箭头和“ 2”,则会打印出以下数字: 103 112 273 50 这是正确的还是我应该看到其他东西?输出是什么意思?每个键都有对应的数字吗?
这是我正在使用的代码:
import sys
import pygame
def run_game():
#Initialize game and create a screen object.
pygame.init()
screen = pygame.display.set_mode((1200,800))
pygame.display.set_caption("Keys")
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
print(event.key)
pygame.display.flip()
run_game()
答案 0 :(得分:1)
简短而简单的答案是肯定的。您会看到每个键的键码。
Pygame基于SDL,因此要查看所有键码的列表,请查看SDL文档(SDLKeycodeLookup)。
答案越长:更加复杂,因为还有特定于平台的scancode(SDL_Scancode),但是您通常不必担心。
需要了解的一个更令人感兴趣的事情是,%config
事件具有一个pygame.KEYDOWN
属性,该属性表示单个字符串,该字符串是输入的完全翻译的字符。
答案 1 :(得分:0)
是的,键盘上的每个键都有一个数字。
您可以在this ascii table上看到其中一些数字。 (您显然正在打印十进制代码。)
答案 2 :(得分:0)
如果在打印命令中不使用“ .key”,则可以看到更好的响应。
例如,在代码中按“输入”,您将看到:"13"
仅使用print(event)
,您将看到:
<Event(768-KeyDown {'unicode': '', 'key': 13, 'mod': 4096, 'scancode': 40, 'window': None})>