python - 如何在 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)
解决方案
创建一个计数器,然后我们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))
# [...]
推荐阅读
- java - 何时使用 concurrenthashmap 与 hashmap 进行 put 和 get
- multithreading - LOCK 前缀是否必须以线程安全的方式修改字节长度变量?
- python - python'NoneType'对象中的音乐不和谐机器人错误没有属性'create_ytdl_player'
- python - 使用正则表达式在熊猫中有条件地更改列的值
- c# - 嵌套 Lambda 表达式而不是 foreach
- d3.js - 特定深度的d3集群布局节点未对齐
- swift - Swift:检查iOS是否在没有互联网的情况下连接到wifi
- android - 创建 SQlite 数据库时遇到问题,没有这样的列?
- ssh - 在 VSTS 中使用 SSH 额外连接到 BitBucket
- redirect - IIS URL 重写(重定向)