我有一个函数可以一次打印一个字符。该函数在打印出下一个字符之前等待.01秒,这给它一个很好的流畅感觉。对于诸如句号,逗号之类的字符,我也会暂停一段时间,如果大声说出这句话,基本上会导致语音中断。
我正在尝试为我的游戏写一个介绍,我希望它在每个段落结束时暂停5秒钟。我的第一个想法是使用'\ n',但由于一些格式化问题而导致灾难性的问题(任何时候输入都会在文本块中使用,它会等待5秒)。我尝试使用'\ r'和'\ v',但我不喜欢它如何移动光标(无论是在行的开头,还是在不知道的中间)。
我想知道是否有一个我可以使用的转义字符没有移动光标,也没有打印任何东西?如果没有,我可以自己制作吗?
以下是用于打印文本的代码:
def slowText(text, length):
for c in text:
sys.stdout.write( '%s' % c )
sys.stdout.flush()
if c == '.' or c == '!' or c == '?' or c == ';' or c == ':':
time.sleep(.5)
elif c == ',':
time.sleep(.2)
elif c == '\r':
time.sleep(5)
else:
time.sleep(length)
print "\n"
感谢您的帮助!
答案 0 :(得分:1)
你可以使用任何你想要达到这个目的的角色;捕获只是不将该字符打印到屏幕上,因为您只是使用它来划分段落。您可能希望重新组织代码,看起来像这样:
PAR_SEP = '\r'
def slowText(text, length):
for c in text:
# Only print c if it is not the paragraph delimiter/separator
if c != PAR_SEP:
sys.stdout.write( '%s' % c )
sys.stdout.flush()
if c == '.' or c == '!' or c == '?' or c == ';' or c == ':':
time.sleep(.5)
elif c == ',':
time.sleep(.2)
elif c == PAR_SEP:
time.sleep(5)
else:
time.sleep(length)
print "\n"
' \ r'和' \ v'弄乱你的光标位置是因为你的代码将这些字符打印到屏幕上。一旦你添加了这个快速检查,它应该按照你想要的方式运行。