我在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
有什么想法吗?
答案 0 :(得分:2)
如果w_count
从0开始并以 <{em> 1
或2
的步长递增,则它会随着20
的增加而增加。但如果它由1
和2
的组合增加,则可能会从19
变为21
。这可能是问题吗?尝试将if w_count == 20
更改为if w_count >= 20
。
如果我误解了您的代码,我很抱歉,我并不是100%明白该计数器的目的。