好吧,我要让狗追球,球追鼠标光标。当狗处于与球相同的位置时,游戏应该停止并打印“游戏结束”。现在,我的代码检查两个对象在游戏开始后是否处于相同的位置,所以它就结束了,因为在开始时,对象位于相同的位置。经过一段时间的比赛后,我怎样才能检查位置呢?
`
if rect.colliderect(rect2) == True:
clock.tick(1000)
self.chasing = False
rect3 = self.fontim.get_rect()
rect3 = rect3.move((self.width-rect3.width)//2,
(self.height-rect3.height)//2)
pygame.display.flip()
MyGame().run()
pygame.quit()
sys.exit()`
发布于 2013-11-09 19:23:42
使用pygame.time.Clock
用法:
你先创建一个时钟。然后,每帧一次,您应该调用Clock.tick(),它将返回自上次调用以来传递的毫秒数。通过这种方式,您可以增加一个milliseconds_passed变量,也可以在经过一定时间后进行检查。
我建议创建一个时钟子类,并添加一个millisenonds_passed变量,这将避免代码中的任何混乱。
编辑:
您的代码中有一些错误。
首先,Clock.tick()并不是每帧都被调用一次。当狗和球相撞时,每帧都叫它一次。最好将其移动到您的运行方法。
其次,您没有得到您的时钟的返回值。正如我所写的,它返回自上次调用以来传递的毫秒数。因此,创建一个新变量,这个变量将根据该方法返回的内容而增加。最后,您需要的是一个简单的检查,您甚至可以在相同的if语句中进行检查。如下所示:
if rect.colliderect(rect2) == True and self.time_passed/1000 > 5:发布于 2013-11-09 18:33:39
制作一个在游戏开始时初始化的计时器,每当遇到碰撞时,例如检查时间是否超过2秒。
https://stackoverflow.com/questions/19881471
复制相似问题