【发布时间】:2019-08-16 02:21:22
【问题描述】:
所以,我想用 pygame 模块在 python3 中编写 pac-man。但是,一旦按下一个键,我不知道如何让 pac-man 继续移动。例如,目的是按下“向上”键,吃豆人将继续朝那个方向移动,直到他碰到边界,即使我松开键。到目前为止,我还没有对这些边界进行编码,因为我优先考虑 pac-man 的连续移动。我试图嵌套一个应该可以工作的while循环,但这显然给了我一个巨大的运行时错误。关于如何做到这一点的任何想法?
if keys[pygame.K_UP] and (pac.y - pac.radius) > 0:
pac.y -= pac.speed
pac.direction = "UP"
elif keys[pygame.K_DOWN] and (pac.y + 2*(pac.radius) + pac.speed) < height:
pac.y += pac.speed
pac.direction = "DOWN"
elif keys[pygame.K_LEFT] and (pac.x - pac.radius) > 0:
pac.x -= pac.speed
pac.direction = "LEFT"
left = True
elif keys[pygame.K_RIGHT] and (pac.x + 2*pac.radius + pac.speed) < width:
pac.x += pac.speed
pac.direction = "RIGHT"
right = True
预期的结果是输入一个方向,吃豆人会自己朝那个方向移动,而不需要按住键。实际上发生的事情是我最终不得不按住键,这样吃豆人就会朝着想要的方向移动。
【问题讨论】:
-
能否请您在 if 语句周围添加更多代码。
-
只有在按键被按下时(例如
elif keys[pygame.K_RIGHT]...),您当前才在移动 pacman(例如pac.x += pac.speed)。您应该在按下某个键时存储方向信息,并将移动代码放在定期执行的某个地方(例如使用计时器)。