【问题标题】:How can I have varied KMOD status' for a single key in Pygame?如何在 Pygame 中为单个键设置不同的 KMOD 状态?
【发布时间】:2011-06-13 15:49:52
【问题描述】:

这是我目前所得到的:

for event in pygame.event.get():
    if event.type == KEYDOWN:
        if event.key == K_LEFT:
            mods = pygame.key.get_mods()
            if mods and KMOD_SHIFT:
                movei = -5
            if mods and KMOD_CTRL:
                movei = -20
            else:
                movei = -10

问题是它似乎始终只选择一个或另一个(KMOD_SHIFT 或 KMDO_CTRL),而不是选择性地。所以无论我按下哪个修饰符(shift、alt、ctrl 等),效果都是一样的。

我想要的效果是屏幕上的角色可以分别爬行、奔跑或行走。

提前致谢。

【问题讨论】:

    标签: events key pygame modifiers


    【解决方案1】:

    您正在使用 logical and 运算符,而您确实需要 bit-wise 运算符 &。而不是

    if mods and KMOD_SHIFT:
    

    你想要的

    if mods & KMOD_SHIFT:
    

    只要第一个操作数为真值(在这种情况下,不等于 0),逻辑 and 将返回第二个操作数的值。 & 运算符将执行按位与运算,因此仅当 KMOD 常量中的某些位在 mods 变量中打开时才会返回非零值(逻辑上解释为真)。

    【讨论】:

      猜你喜欢
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 2015-07-07
      • 2015-12-01
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多