首页 > 解决方案 > 如何在 Pygame 中动态显示?

问题描述

我可以在我的显示器上显示一个数字“1”。现在,我的目标是显示数字 1...4。这意味着首先显示“1”,然后显示1“2”,等等。如何解决这个问题?

这是我的代码:

import pygame
import time

pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()
done = False

font = pygame.font.SysFont("comicsansms", 72)  
text = font.render("1", True, (0, 128, 0))

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
            done = True

    screen.fill((255, 255, 255))
    screen.blit(text,
                (320 - text.get_width() // 2, 240 - text.get_height() // 2))

    pygame.display.flip()
    clock.tick(60)

标签: pythonpygame

解决方案


创建一个计数器,然后我们str()将一个值转换为字符串:

counter = 1
text = font.render(str(counter), True, (0, 128, 0))

pygame.event添加具有特定时间间隔的计时器事件(请参阅 参考资料)。计时器事件由pygame.time.set_timer()

mytimerevent = pygame.USEREVENT + 1
pygame.time.set_timer(mytimerevent, 1000) # 1000 milliseconds = 1 socond 

增加计数器并更改事件的文本:

while not done:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            done = True
        if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
            done = True

        if event.type == mytimerevent: # timer event
            counter += 1
            text = font.render(str(counter), True, (0, 128, 0))


    # [...]


推荐阅读