我刚开始使用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()
答案 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()