2013-11-09 33 views
0

那么,我需要让狗追逐球和追逐鼠标光标的球。当狗与球的位置相同时,游戏应停止并打印“游戏结束”。现在,我的代码会在开始游戏后立即检查两个对象是否位于同一位置,因此它会结束,因为在起始对象处于同一位置。如何在经过一段时间的比赛后检查位置?如何检查两个对象在使用rect.colliderect(rect2)后在相同位置经过一段时间的游戏过程?

` 
    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() 

`

回答

1

使用pygame.time.Clock

用法:

首先创建一个时钟。然后每帧一次,您应该调用Clock.tick(),这将返回自上次调用后经过的毫秒数。通过这种方式,您可以增加一个毫秒数的变量,并且在经过一段时间后检查。

我建议使时钟的一个子类,并添加一个millisenonds_passed变量,这将避免在您的代码中的任何混乱。

编辑:

你的代码有几个错误。

首先,Clock.tick()不是每帧调用一次。当狗与球碰撞时,每帧调用一次。最好将它移动到你的运行方法。

其次,你没有得到你的时钟的返回值。正如我写的,它返回自上次调用以来传递的毫秒数。因此,创建一个新的变量,该变量将通过该方法返回的结果增加。最后,你需要的是一个简单的检查,你甚至可以在相同的if语句中进行检查。像这样:

if rect.colliderect(rect2) == True and self.time_passed/1000 > 5: 
+0

嗯它应该帮助..但你知道在代码中使用它的任何例子? – user2926550

+0

嗯,时间显示,我笨:(我不能使它工作 – user2926550

+0

更新你的问题,以显示你已经尝试了什么。 –

0

使这是初始化的计时器在游戏开始时,每当遇到碰撞,检查时间> 2秒的实例。

+1

嗯它应该帮助,你能告诉我如何设置计时器?我看着pygame的文档,但并没有真正了解它 – user2926550

+0

或开始检查鼠标点击已取得 –

+1

后@BartlomiejLewandowski我想用计时器的想法是什么,我需要做的 – user2926550

相关问题