游戏我目前工作的需要让人们有时间在他们的高分板的名称。 我稍微熟悉如何处理按键,但我只涉及寻找特定的人。 有一种简单的方法来获得按下任意键的字母,而无需做这样的事情:
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'
虽然这会的工作,我有一种感觉,有去它更有效的方式。 我实在不明白它或者找到任何指南。
有一个基本方法有两种:
选项1:使用pygame.key.name()
它的那样简单
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
print(pygame.key.name(event.key))
过度使用的优点chr
是chr
工作仅当的值event.key
是0和255(含)之间。
如果按菜单 ,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)
使用功能键时,它可以把你的字母/数字或一个空字符串,它也将采取调节剂考虑,例如,如果你按住Shift键,同时按下它会返回A
,而不是仅仅a
。
该pygame.KEYDOWN事件具有附加属性Unicode和扫描码。 Unicode的代表是完全翻译输入的字符是一个字符串。 这考虑到移位和组合物密钥。 扫描码代表特定于平台的关键代码。
如果你看看K_A只是97多数民众赞成“A”的ASCII码,我会推断K_? 是什么问号代表的ASCII码
if event.type == KEYUP:
print chr(event.key) #convert ascii code to a character
也许?
如指出,这将不超过255个ASCII码的工作(不再ASCII真)
您可以使用方法简介如下,或只是使用unichr(event.key)
代替chr
文章来源: Pygame: Is there any easy way to find the letter/number of ANY alphanumeric pressed?