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