0

好吧,我需要让狗追球和球追鼠标光标。当狗与球处于同一位置时,游戏应停止并打印“Game over”。现在,我的代码在开始游戏后立即检查两个对象是否在同一位置,所以它结束了,因为在开始时对象在同一位置。我怎样才能让它在经过一段时间的游戏后检查位置?

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

`

4

2 回答 2

1

采用pygame.time.Clock

用法:

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

我建议创建一个 Clock 的子类,并添加一个 millisenonds_passed 变量,这将避免代码中的任何混乱。

编辑:

您的代码中有一些错误。

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

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

if rect.colliderect(rect2) == True and self.time_passed/1000 > 5:
于 2013-11-09T19:23:42.340 回答
0

制作一个在游戏开始时初始化的计时器,并且每当遇到碰撞时,例如检查时间是否 > 2 秒。

于 2013-11-09T18:33:39.940 回答