按 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 开始并以 1
或 2
的步长递增,它将始终通过 20
随着它的增加。但是,如果它通过 1
s 和 2
s 的组合递增,它可能会从 19
变为 21
。这可能是问题所在吗?尝试将 if w_count == 20
更改为 if w_count >= 20
.
抱歉,如果我误解了你的代码,我不是 100% 清楚计数器的目的。
我正在 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 开始并以 1
或 2
的步长递增,它将始终通过 20
随着它的增加。但是,如果它通过 1
s 和 2
s 的组合递增,它可能会从 19
变为 21
。这可能是问题所在吗?尝试将 if w_count == 20
更改为 if w_count >= 20
.
抱歉,如果我误解了你的代码,我不是 100% 清楚计数器的目的。