我正在使用pygame并尝试显示变量i,该变量i在我的模拟中保存循环编号,该变量似乎未显示,但是也没有引发任何错误,并且sim卡就像我的最后3行一样运行添加尝试显示变量不存在。我试图更改颜色(我的背景是黑色),并且位置也无济于事。代码如下:
while running:
try:
i += 1
if (exp.round_n > exp.total_rounds):
running = False
screen.fill((0, 0, 0, 0))
flag = Box2DWorld.destroy([exp.objs, exp.epucks])
#PyGameUtils.draw_contacts(screen,exp)
PyGameUtils.draw_world(screen)
exp.update(i, config)
Box2DWorld.step()
pygame.display.flip() # Flip the screen and try to keep at the target FPS
#clock.tick(Box2DWorld.TARGET_FPS)
clock.tick(60)
pygame.display.set_caption("FPS: {:6.3}{}".format(clock.get_fps(), " " * 5))
tnr = pygame.font.SysFont('Times New Roman', 30)
text = tnr.render(str(i), False, (255, 255, 255))
screen.blit(text, (3,3))
答案 0 :(得分:1)
您必须更改说明的顺序。在文本为blit()
至screen
之后,更新主循环末尾的显示。
while running:
try:
i += 1
if (exp.round_n > exp.total_rounds):
running = False
screen.fill((0, 0, 0, 0))
flag = Box2DWorld.destroy([exp.objs, exp.epucks])
#PyGameUtils.draw_contacts(screen,exp)
PyGameUtils.draw_world(screen)
exp.update(i, config)
Box2DWorld.step()
# pygame.display.flip() # <---------- delete
#clock.tick(Box2DWorld.TARGET_FPS)
clock.tick(60)
pygame.display.set_caption("FPS: {:6.3}{}".format(clock.get_fps(), " " * 5))
tnr = pygame.font.SysFont('Times New Roman', 30)
text = tnr.render(str(i), False, (255, 255, 255))
screen.blit(text, (3,3))
pygame.display.flip() # <---------- insert
请注意,在主循环开始时,显示内容由screen.fill((0, 0, 0, 0))
清除。
然后绘制一些内容,并通过pygame.display.flip()
更新显示。
但是文本是在pygame.display.flip()
之后绘制的。绘制文本后发生的第二件事是在主循环开始时再次清除显示。
因此,在渲染并绘制到screen
表面后立即清除该文本,这将导致该文本永远不可见。