как сделать сообщение в Pygame - PullRequest
0 голосов
/ 13 декабря 2018

Я только начинаю пигмейку и удивляюсь, как сообщение может задерживаться в пигаме, не влияя на цикл.Допустим, я хочу, чтобы сообщение отображалось в течение 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 голосов
/ 13 декабря 2018

Просто следите за прошедшим временем и используйте условный оператор, например 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...