0

我目前正在使用 pygame 制作一个函数,该函数在屏幕上绘制一条消息,每帧添加一个字符(即The Hunt for Red October)。我知道我可以简单地从原始字符串中复制(或传递)逐渐变大的切片,但我知道这将非常耗费资源。有一个更好的方法吗?

代码,使用逐渐变大的切片:

def full_screen_dialog_tt(thesurface, thefont, theclock, message, thebeep):
 i = 0
 while(i < len(message)): # Initialize the string display
  theclock.tick(60)
  thesurface.fill((0, 0, 0))
  thesurface.blit(thefont.render(message[i]+"_"))
  pygame.display.flip()
  thebeep.play()
 while(1): # Whole string is here now
  theclock.tick(60)
  for event in pygame.events.get():
   if event.type == MOUSEBUTTONDOWN: return
4

4 回答 4

4

在一个你故意放慢游戏速度的地方(文本淡入)——这真的重要吗?您可以传递整个字符串,并更改显示例程以在每一帧中再显示一个字母。

于 2010-07-27T17:05:40.657 回答
1

你不能在不清除背景的情况下一次打印一个置换的字符吗?您可以使用切片来获取角色。

于 2010-07-27T17:12:09.183 回答
1

假设您有一个screen可用的对象,这可能有效:

import time
text = 'The Hunt for Red October'
myfont = pygame.font.SysFont("arial", 16)
for index, ch in enumerate(text): 
    letter = myfont.render(ch, True, (0, 0, 0), (255, 255, 255))
    screen.blit(letter, (index * 20, 20))
    time.sleep(1)
于 2010-07-27T17:14:16.707 回答
-2

您可以使用索引从字符串中访问单个字符:

>>> s = 'string'
>>> s[2]
'r'
于 2010-07-27T17:06:23.253 回答