pygame的:有没有简单的方法来发现按下任何字母数字的字母/数字?pygame的:有没有简单的方法

2019-05-12 09:41发布

游戏我目前工作的需要让人们有时间在他们的高分板的名称。 我稍微熟悉如何处理按键,但我只涉及寻找特定的人。 有一种简单的方法来获得按下任意键的字母,而无需做这样的事情:

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'

虽然这会的工作,我有一种感觉,有去它更有效的方式。 我实在不明白它或者找到任何指南。

Answer 1:

有一个基本方法有两种:

选项1:使用pygame.key.name()

它的那样简单

for event in pygame.event.get():
  if event.type == pygame.KEYDOWN:
    print(pygame.key.name(event.key))

过度使用的优点chrchr工作仅当的值event.key是0和255(含)之间。

如果按菜单 ,Alt键GR,TabLSHIFT, pygame.key.name会很乐意返回menualt grtableft 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的代表是完全翻译输入的字符是一个字符串。 这考虑到移位和组合物密钥。 扫描码代表特定于平台的关键代码。



Answer 2:

如果你看看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?