在Python中从一个字符串到另一个字符串一次添加一个字符的有效方法

时间:2010-07-27 17:02:26

标签: python string processing-efficiency

我目前正在使用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 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

难道你不能在不清除背景的情况下一次打印一个角色吗?你可以使用切片来获得角色。

答案 2 :(得分: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)

答案 3 :(得分:-1)

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

>>> s = 'string'
>>> s[2]
'r'