我正在 pygame 1.9.2 中制作游戏。这是一个失败的简单游戏,其中一艘船在五列坏人之间移动,这些坏人通过缓慢向下移动进行攻击。我试图让船用左右箭头键左右移动。这是我的代码:
keys=pygame.key.get_pressed()
if keys[K_LEFT]:
location-=1
if location==-1:
location=0
if keys[K_RIGHT]:
location+=1
if location==5:
location=4
它工作得很好。船开得太快了。让它只向左或向右移动一个位置几乎是不可能的。我怎样才能做到每次按下键时船只移动一次?
原文由 Dan G. 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以从 pygame 获取事件,然后注意
KEYDOWN
事件,而不是查看get_pressed()
返回的键(它为您提供当前按下的键,而KEYDOWN
事件显示在 该帧 上按下了哪些键)。您的代码现在发生的情况是,如果您的游戏以 30fps 的速度呈现,并且您按住向左箭头键半秒钟,您将更新位置 15 次。
要在按住某个键时支持连续移动,您必须建立某种限制,或者基于游戏循环的强制最大帧速率,或者通过一个计数器,该计数器只允许您移动环形。
然后在游戏循环的某个地方你会做这样的事情:
这只会让你每 10 帧移动一次(所以如果你移动,自动收报机设置为 10,在 10 帧后它会允许你再次移动)