【问题标题】:Pygame Random keystrokesPygame 随机击键
【发布时间】:2021-05-21 15:56:02
【问题描述】:

我正在尝试创建一个游戏,其中随机选择键并出现在屏幕上,玩家必须点击它们。如何实现对按下所需键的检查?

unic1=random.randint(0,9)
unic2=random.randint(0,9)
for event in pygame.event.get():
    if event.type == pygame.QUIT:  
        running = False
    elif event.type == pygame.KEYDOWN:
        if event.key == "pygame.K_"+ str(unic1):
            x2+=10
            unic1=random.randint(0,9)
        elif event.key != "pygame.K_" + str(unic1):
            x2-=10
            unic1=random.randint(0,9)

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    小键盘上有从 pygame.K_KP0pygame.K_KP9 的 ley cod。

    创建一个键列表:

    key_list = [pygame.K_KP0, pygame.K_KP1, pygame.K_KP2, pygame.K_KP3, pygame.K_KP4
                pygame.K_KP5, pygame.K_KP6, pygame.K_KP7, pygame.K_KP8, pygame.K_KP9]
    

    使用random.choice 选择随机密钥:

    random_key = random.choice(key_list)
    

    键盘事件KEYDOWNKEYUP(参见pygame.event 模块)创建一个带有附加属性的pygame.event.Event 对象。按下的键可以从key 属性(例如K_RETURN K_a)获得,mod 属性包含一个带有附加修饰符的位集(例如KMOD_LSHIFT)。 unicode 属性提供键盘输入的 Unicode 表示。

    for event in pygame.event.get():
        if event.type == pygame.QUIT:  
            running = False
        elif event.type == pygame.KEYDOWN:
    
            if event.key == random_key:
                print(pygame.key.name(event.key))  
                # [...]
    

    【讨论】:

      【解决方案2】:
      pygame.key.name(event.key)
      

      将返回键名(a、b、c、1、2、3)等。您可以使用它来测试是否按下了正确的键:

      if pygame.key.name(event.key) == str(unic1):
        # the key was pressed
      

      【讨论】:

      • 你知道小键盘怎么用吗?
      • 试着打印出它返回的内容。然后你就知道该用什么了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多