所以我尝试制作一个游戏,在这个游戏中我调用了一个我想慢慢执行的函数,但是当我使用“time.sleep(x)”时,它会暂停文件中的所有内容,而不仅仅是暂停函数的过程。我正在尝试为二维游戏添加跳跃功能,因此如果有更好的方法,我将非常感谢您的建议,但这只是我对该游戏的第一个想法
for n in range(15):
Dino.rect.bottom -= 5
update_screen(Dino, screen, cactus)
time.sleep(0.01)
time.sleep(0.25)
inair = False
for n in range(15):
Dino.rect.bottom += 5
update_screen(Dino, screen, cactus)
time.sleep(0.01)
所以我有它,所以当我跳的时候,它会给我一个缓慢的跳跃,而不是像我说的那样,它会在跳跃时暂停一切
这不是一个好的计时方法。正如你所说的,这会使整个程序处于休眠状态。多线程对于简单地移动精灵来说有点复杂
解决这个问题的一个简单方法是使用PyGame函数
time.get_ticks()
,它返回一个以毫秒为单位的不断增加的时间使用此时间戳,记录操作的上一次时间,但在经过足够的时间之前不要再次更新
例如:
也可以请求计时器在将来向事件循环发送消息
编辑:更深入的解释
所以基本上你是在实现一个动画,就像一个动画/卡通。显示器上的东西以一定的速度移动。在上面的代码中,您似乎每隔
0.01
秒(10毫秒)向y + 5
方向移动一个“恐龙”现在,你画恐龙,然后
sleep()
,然后移动&;再画一次。当它到达跳转的最远点时,您等待250毫秒,然后重复上一阶段的向下跳转因此,使用
sleep()
的问题在于它会阻塞整个程序(包括事件循环,这可能会导致糟糕的事情发生)因此,上面的示例不需要睡眠一段时间,而只是查看PyGame时钟,以确定同一时间段是否已经过去。这允许程序知道动画是否需要更新
整个想法是继续观察时钟,利用时间作为下一步画什么/在哪里画的仲裁者,而不是多次调用
sleep()
相关问题 更多 >
编程相关推荐