按 SHIFT 会中断在 pygame 中按住 W

Pressing SHIFT interrupts holding down W in pygame

我正在 Pygame 中制作 roguelike。我正在尝试使用 W 或 UP 键让我的角色向前移动。当按住 SHIFT 键时,移动速度应该是原来的两倍。如果我按住 SHIFT 然后按 W,程序会正常运行,但是,如果我按住 W,角色已经向前移动,然后我按 SHIFT,角色就会停止。这种情况只是偶尔发生,但需要修复。

    character_pos = [0,0]
    move_speed = 1
    mods = pygame.key.get_mods()
    if mods & KMOD_SHIFT:
        move_speed = 2
    key = pygame.key.get_pressed()
    if key[pygame.K_w] or key[pygame.K_UP]:
        w_count += move_speed
        if w_count == 20:
            w_count = 0
            if not is_wall(character_pos[0], character_pos[1]-1):
                character_pos[1] -= 1

有什么想法吗?

如果 w_count 从 0 开始并以 12 的步长递增,它将始终通过 20 随着它的增加。但是,如果它通过 1s 和 2s 的组合递增,它可能会从 19 变为 21。这可能是问题所在吗?尝试将 if w_count == 20 更改为 if w_count >= 20.

抱歉,如果我误解了你的代码,我不是 100% 清楚计数器的目的。