当前位置: 首页 > 面试题库 >

Pygame:有没有简单的方法可以找到所按的任何字母数字的字母/数字?

汝弘深
2023-03-14
问题内容

我正在开发的游戏目前需要让人们以自己的名字参加高分榜。我对如何处理按键有些陌生,但是我只在寻找特定按键。是否有一种简单的方法可以使按下任何键的字母而无需执行以下操作:

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.key0的值介于255和255之间(包括0和255)时,该方法才有效。

如果按menuAlt GrTabLShiftpygame.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而不仅仅是just a

pygame.KEYDOWN事件具有其他属性unicode和scancode。unicode表示单个字符串,它是输入的完全翻译的字符。这考虑了shift键和构图键。scancode代表特定于平台的密钥代码。



 类似资料:
  • 问题内容: 现在我在做 但是有更好的方法吗?类似于Scala的 问题答案: 我认为这样可以使操作更简洁,您不必处理减法和索引编制:

  • 现在我正在做 但是有没有更好的方法呢?类似于Scala的

  • 问题内容: 我有一个字符串,我想用一个星号替换任何不是标准字符或数字的字符,例如(az或0-9)。例如,“ h ^&ell`。,| ow] {+ orld”被替换为“ h * ell * o * w * orld”。请注意,多个字符(例如“ ^&”)将替换为一个星号。我将如何去做呢? 问题答案: 正则表达式可以解救! 例:

  • 问题内容: 我想计算以下字符串中的字母,数字和特殊字符的数量: 我试过了: 但我遇到了错误。我对此尝试了各种其他变化-仍然出现错误-如: 找不到’<=’的重载,该重载接受提供的参数 问题答案: Swift 3更新: (以前的Swift版本的答案) 一个可能的Swift解决方案: 更新: 上述解决方案仅适用于ASCII字符集中的字符,即不能将Ä,é或ø识别为字母。Foundation框架使用以下替代

  • 我试图找出我的字符串是否包含从a到z的所有字母 我们可以通过其他方法解决这个问题,但我正在尝试仅使用模式和匹配器来解决它。

  • 嗨,我正在尝试从一个字符串中替换所有的非字母数字字符,如下所示: 第一个问题是它不能替换字符串中的等字符。 其次,我想在这个方法中添加对所有用户语言的多点支持。 我怎么能那样做? 多谢帮忙。