如何在 Pygame 中为单个键设置不同的 KMOD 状态?
Posted
技术标签:
【中文标题】如何在 Pygame 中为单个键设置不同的 KMOD 状态?【英文标题】:How can I have varied KMOD status' for a single key in Pygame? 【发布时间】: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 等),效果都是一样的。
我想要的效果是屏幕上的角色可以分别爬行、奔跑或行走。
提前致谢。
【问题讨论】:
【参考方案1】:您正在使用 logical and
运算符,而您确实需要 bit-wise 运算符 &
。而不是
if mods and KMOD_SHIFT:
你想要的
if mods & KMOD_SHIFT:
只要第一个操作数为真值(在这种情况下,不等于 0),逻辑 and
将返回第二个操作数的值。 &
运算符将执行按位与运算,因此仅当 KMOD 常量中的某些位在 mods
变量中打开时才会返回非零值(逻辑上解释为真)。
【讨论】:
以上是关于如何在 Pygame 中为单个键设置不同的 KMOD 状态?的主要内容,如果未能解决你的问题,请参考以下文章