如何只显示一定时间的文本?

2024-10-01 07:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在一个玩家获胜时在屏幕上显示一条消息,让文本显示5秒钟,然后返回主菜单开始屏幕。使用延时但是,我的屏幕会暂停,然后在一个闪光灯中显示文本,然后立即转到开始屏幕。有没有更有效的方法让文本显示足够长的时间供阅读?在

下面是我用来实际显示消息的函数:

def winnerPlayerOne():
    screen.fill(PINK)
    winnerP1Message = winnerFont.render("Congrats Player 1. You Win!", True, WHITE)
    screen.blit(winnerP1Message, ((400 - (winnerP1Message.get_width()/2)),(300 - (winnerP1Message.get_height()/2))))
    pygame.display.update()
    pygame.time.delay(5000)

    startscreen()

下面是我如何在主循环中调用这个函数:

^{pr2}$

任何帮助将不胜感激!在


Tags: 方法函数文本消息get屏幕def时间
2条回答

试试pygame.time.wait(5000)。它应该以你期望的方式表现。它确实可以防止任何代码在后台运行,但是对于您的用例来说,这似乎不是一个问题。在

本杰明的回答可能对你的情况很有效。但是如果你想要一些不影响游戏视觉效果的东西,我会考虑设置一个这样的计时器。。。在

    WITHIN GAME LOOP:
        if gameWonScreen:
            screen.fill(PINK)
            winnerP1Message = winnerFont.render("Congrats Player 1. You Win!", True, WHITE)
            screen.blit(winnerP1Message, ((400 - (winnerP1Message.get_width()/2)),(300 - (winnerP1Message.get_height()/2))))
            timer = timer + elapsed/1000
            elapsed = fpsClock.tick(FPS)
            if timer > timeWinScreen:
                gameWonScreen = false

在应用程序开始时将“timeWinScreen”初始化为所需的消息持续时间,并在玩家获胜时将“timer”设置为“0”,将gameWonScreen设置为“true”。使用已用=fpsClock.tick(FPS)将保留自上一个勾号后的时间值。你不需要在这个过程中使用它(你可以只使用FPS的一小部分),但是使用“elapsed”是一个很好的实践,因为它有助于平滑某些对象的动画。在

相关问题 更多 >