Jer*_*emy 4 python pygame keypress
我正在努力的游戏目前需要让人们以他们的名义为高分榜做准备.我对如何处理按键有点熟悉,但我只是在寻找特定的按键.是否有一种简单的方法来获取任何键的字母而不必执行以下操作:
for event in pygame.event.get():
if event.type == KEYUP:
if event.key == K_a:
newLetter = 'a'
elif event.key == K_b:
newLetter = 'b'
...
elif event.key == K_z:
newLetter = 'z'
Run Code Online (Sandbox Code Playgroud)
虽然这样可行,但我觉得有一种更有效的方法.我只是无法弄明白或找到任何指南.
基本上有两种方式:
选项1:使用pygame.key.name().
这很简单
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
print(pygame.key.name(event.key))
Run Code Online (Sandbox Code Playgroud)
优于使用的优点chr是chr仅当值event.key介于0和255(含)之间时才有效.
如果按menu,Alt Gr,Tab或LShift,pygame.key.name将愉快地返回menu,alt gr,tab和left shift,而chr会崩溃,死机,返回空格,和崩溃.
选项2:使用事件的unicode属性pygame.KEYDOWN
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
print(event.unicode)
Run Code Online (Sandbox Code Playgroud)
当使用功能键时它会给你字母/数字或空字符串,它也会考虑修饰符,例如,如果按住Shift键,它将返回A而不是仅仅a.
pygame.KEYDOWN事件具有其他属性unicode和scancode.unicode表示单个字符串,它是输入的完全翻译字符.这考虑了移位和组合键.scancode表示特定于平台的密钥代码.