好吧,我对屏幕上的精灵移动有个问题。我有一种方法,我希望事情发生如下:
总而言之,我希望最近一次按下的方向键优先于移动,而当它未按下时,我希望下一次按下的方向键优先于移动。我也不希望对角线移动,但这不是目前为止的问题。在
这是我目前为止的代码
m=pygame.key.get_pressed()
if m[K_d]:
movey=0
movex=speed
elif m[K_a]:
movey=0
movex=-speed
elif m[K_w]:
movex=0
movey=-speed
elif m[K_s]:
movex=0
movey=speed
这是我想要的50%。问题是,代码本身会优先处理正在发生的事情,所以结果是当我只按“A”键时,我向左移动,同时按“D”键,我向右移动。如果我只按“D”键,我会向右移动,但当我同时按下“A”键时,我会一直向右移动,这时我想向左移动。我尝试过if/not/和嵌套不同的方法,但到目前为止都失败了。在
我怎么解决这个问题?在
编辑:这是我在巴洛米耶的帮助下想出的。在
^{pr2}$这是我想要的,我现在要做的就是最小化它,使它作为一个函数变得更优雅,但是我现在把这个想法记下来了。再次帮助我更好地理解了bartielomj的代码。真的很感激。在
我总是这样解决问题:(部分解决):
当上一个键未按下时,这不会停止移动。在
编辑:这不是不可能的,只是没有那么有用。例如,可以有两个列表来模拟堆栈。当列表为空时,你的角色不会移动。对于每个keydown,您将该键附加到列表的末尾。每次上键,你都会从列表中移除键。这样,最近按下的键将位于列表的末尾,如果取消按住,则最后一个最近的键也将位于列表的末尾。在
一个小例子:
^{pr2}$在移动方法中,您可以尝试以下操作: 如果列表中的最后一个元素存在,请将其向正确的方向移动。在
相关问题 更多 >
编程相关推荐