【发布时间】:2017-12-02 20:05:38
【问题描述】:
我正在尝试在 pygame 中重新创建 Pong,并尝试根据谁的得分将网的颜色更改为红色或绿色。我可以在有人得分后将其保持为红色或绿色,直到另一个人得分,但是,我想在 3 秒后将网络颜色改回黑色。我尝试使用 time.sleep(3) 但每当我这样做时,网络都会保持黑色。 `
elif pong.hitedge_right:
game_net.color = (255,0,0)
time.sleep(3)
scoreboard.sc1 +=1
print(scoreboard.sc1)
pong.centerx = int(screensize[0] * 0.5)
pong.centery = int(screensize[1] * 0.5)
scoreboard.text = scoreboard.font.render('{0} {1}'.formatscoreboard.sc1,scoreboard.sc2), True, (255, 255, 255))
pong.direction = [random.choice(directions),random.choice(directions2)]
pong.speedx = 2
pong.speedy = 3
pong.hitedge_right = False
running+=1
game_net.color=(0,0,0)
理想情况下,它应该变成红色 3 秒,然后更新记分牌并重新启动球,但是,整个事情会暂停并直接跳到将网颜色更改为黑色。我相信有更好的方法可以做到这一点,或者我使用 time.sleep 完全错误,但我不知道如何解决这个问题。
【问题讨论】:
-
是否可以提供一个最小的工作示例而不是片段?乍一看,您的代码对我来说很合适。
-
你不能使用
time.sleep(),因为它会停止在程序中做任何事情的主循环。 mainloop 必须运行,您必须检查当前时间并在 3 秒后执行此部分。您可以使用pygame.time.get_ticks()获取当前时间。
标签: python python-3.x pygame