Почему в данном коде не работает def?

Хочу сделать, чтобы текст показывался с интервалом. Проблема в том, что когда делаешь без функции def, выводится весь текст, а не частями. Функция def почему-то не работает.


one = font.render(text1, 1, (12, 140, 0, 1))
two = font.render(text2, 2, (12, 140, 0, 1))
three = font.render(text3, 3, (12, 140, 0, 1))

while True: 
    screen.fill((0, 0, 0))

    for click in pygame.event.get():
        if click.type == pygame.QUIT:
            pygame.quit()
            time.sleep(0.10)
            pygame.display.set_icon(pygame.image.load('111.jpg'))
            screen = pygame.display.set_mode((1920, 1020))
            pygame.display.set_caption('Внимание!!!')
            messagebox.showerror('аха', ' dd')




    def lol():
        pygame.time.delay(500)
        screen.blit(one, (0, 50))
        lol()
    
    def kek():
        pygame.time.delay(700)
        screen.blit(two, (0, 100))
        kek()

    def chebyrek():
        pygame.time.delay(900)
        screen.blit(three, (0, 150))
        chebyrek()

    pygame.display.update()

Ответы (1 шт):

Автор решения: Roman-Stop RU aggression in UA

Если нужно отображать текст скажем с 5 по 7 секунду, то нужно в цикле проверять, что сейчас от запуска прошло больше 5 и меньше 7 секунд и только в этом случае отображать текст:

one = font.render(text1, 1, (12, 140, 0, 1))
while True: 
    screen.fill((0, 0, 0))

    for click in pygame.event.get():
        if click.type == pygame.QUIT:
            ...

    if 5000 < pygame.time.get_ticks() < 7000:
        screen.blit(one, (0, 50))
    
    if 7000 < pygame.time.get_ticks() < 10000:
        screen.blit(two, (0, 100))

    ...
    pygame.display.update()
→ Ссылка