如何在Pygame中为单个键设置不同的KMOD状态?

时间:2011-06-13 15:49:53

标签: events key pygame modifiers

这是我到目前为止所得到的:

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等)并不重要,效果仍然相同。

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

您正在使用逻辑 and运算符,而您确实需要按位运算符&。而不是

if mods and KMOD_SHIFT:

你想要

if mods & KMOD_SHIFT:

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