如何在一定时间内显示文本?
How can I display a text a certain amount of duration?
感谢您对我最后一个问题的帮助,我设法解决了我的错误。
所以我继续我的小游戏,我希望玩家看到他们在击败敌人时(简要地)获得了多少分。
if bullet_rect.colliderect(enemy1_rect):
#enemy respawn
enemy1_rect.x = 1350
enemy1_rect.y = random.randint(0, 500)
#points won display
points += 100
points_rect = points_text.render('+ 100$', None, 'Green')
screen.blit(points_rect, bullet_rect)
这种作品,不过只显示1帧!
我试过 pygame.time.wait,delay,sleep,但我一无所获。
我想让它显示半秒,所以也许因为我 运行 游戏以 60 FPS 为上限,显示它 30 帧。
有什么建议么?谢谢!
您需要在应用程序循环中绘制文本。使用 pygame.time.get_ticks
以毫秒为单位测量时间。计算文本必须消失的时间并显示文本直到达到该时间:
text_end_time = 0
text_rect = None
run = True
while run:
# [...]
current_time = pygame.time.get_ticks()
if bullet_rect.colliderect(enemy1_rect):
enemy1_rect.x = 1350
enemy1_rect.y = random.randint(0, 500)
points += 100
points_surf = points_text.render('+ 100$', None, 'Green')
text_end_time = current_time + 2000 # 2 seconds
text_rect = bullet_rect.copy()
if text_end_time > current_time
screen.blit(points_surf, text_rect)
另见 and 。
感谢您对我最后一个问题的帮助,我设法解决了我的错误。
所以我继续我的小游戏,我希望玩家看到他们在击败敌人时(简要地)获得了多少分。
if bullet_rect.colliderect(enemy1_rect):
#enemy respawn
enemy1_rect.x = 1350
enemy1_rect.y = random.randint(0, 500)
#points won display
points += 100
points_rect = points_text.render('+ 100$', None, 'Green')
screen.blit(points_rect, bullet_rect)
这种作品,不过只显示1帧! 我试过 pygame.time.wait,delay,sleep,但我一无所获。 我想让它显示半秒,所以也许因为我 运行 游戏以 60 FPS 为上限,显示它 30 帧。 有什么建议么?谢谢!
您需要在应用程序循环中绘制文本。使用 pygame.time.get_ticks
以毫秒为单位测量时间。计算文本必须消失的时间并显示文本直到达到该时间:
text_end_time = 0
text_rect = None
run = True
while run:
# [...]
current_time = pygame.time.get_ticks()
if bullet_rect.colliderect(enemy1_rect):
enemy1_rect.x = 1350
enemy1_rect.y = random.randint(0, 500)
points += 100
points_surf = points_text.render('+ 100$', None, 'Green')
text_end_time = current_time + 2000 # 2 seconds
text_rect = bullet_rect.copy()
if text_end_time > current_time
screen.blit(points_surf, text_rect)
另见