如何在pygame中挥之不去的消息

时间:2018-12-13 10:19:34

标签: python pygame

我刚开始使用pygame,想知道一条消息如何留存下来 pygame而不影响循环。假设我希望该消息显示5秒钟,然后消失,但是游戏循环在发生时仍将继续运行。我尝试使用time.sleep和clock,但是它们将完全暂停循环,直到消息停止出现。如何制作游戏循环仍在运行时显示消息?

简化示例:

def message_linger():
    #message output code here
    time.sleep(4)

def game_loop():
    #some pygame junk
    message_linger
    pygame.display.update()
    clock.tick(60)

game_loop()

1 个答案:

答案 0 :(得分:0)

只需跟踪passed time并使用诸如if passed_time < 5000: FONT.render_to(...)之类的条件语句即可。

import pygame as pg
from pygame import freetype


pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray12')
BLUE = pg.Color('dodgerblue')
FONT = freetype.Font(None, 42)
start_time = pg.time.get_ticks()

done = False
while not done:
    for event in pg.event.get():
        if event.type == pg.QUIT:
            done = True

    screen.fill(BG_COLOR)
    if pg.time.get_ticks() - start_time < 5000:  # 5000 ms
        FONT.render_to(screen, (100, 100), 'the message', BLUE)
    pg.display.flip()
    clock.tick(60)

pg.quit()