如何在pygame中的if函数中暂停代码?

时间:2017-04-17 14:12:18

标签: python pygame

在检查其他内容之前,如何使代码停止片刻? (我是代码新手)

if BonusTime==True and Drop==True:               
    if event.type == pygame.MOUSEBUTTONDOWN:
        window.blit(Fired,(mouseX-12,mouseY-12))
        Cankill=True
        #I want it to delay here
        Cankill=False

鼠标后面有一个十字线,当我点击它时会触发它。问题是,你可以按住鼠标,将十字线留在一个地方。每当敌人走进十字架头发时,他们就会死去。我需要它,所以即使你拿着它也只会开一次。我打算让它延迟if语句,设置" Cankill"为了真实,然后等待一秒钟,等待之后,它应该设置" Cankill"为假。我已经看过很多其他人类似的问题,并且找不到我能理解的东西。所以,如果你能帮我找到如何以我需要的方式延迟它。

1 个答案:

答案 0 :(得分:1)

"暂停"不是你想要的 - 如果你这样做,你的游戏就会冻结,什么都不会移动(因为你使用的是操作系统鼠标指针,也许它可以移动)。

无论如何,"暂停"的功能在游戏中pygame.time.wait(1000) - 数字以毫秒为单位。

你真正需要的是记下点击的时间,继续游戏,当1秒过后,将变量重置回另一个状态。

一些事情:

last_trigger = 0
while True:
    # game updating code goes here (getting events, and such)
    ...
    if Cankill and pygame.time.get_ticks() - last_trigger > 1000:
        Cankill = False

    if event.type == pygame.MOUSEBUTTONDOWN:
        window.blit(Fired,(mouseX-12,mouseY-12))
        Cankill=True
        last_trigger = pygame.time.get_ticks()

" get_ticks" call返回自pygame初始化以来传递的毫秒数 - 对于这个计时器时间是有用的。