我一直在用java写一个基于文本的视频游戏(我是java,btw的新手),它没有我一直希望的性能,特别是语音。我希望文本看起来像是在讲话的人(我不希望它一次出现,只是逐个字符)。我用这段代码实现了效果:
void speak(String speak){
for(int x = 0; x < speak.length(); x++){
System.out.print(speak.charAt(x));
pause(talkSpeed);
}
}
talkSpeed是对象谈话的速度。 pause是我用来使Thread.sleep更容易的函数。太懒了写试试抓了所有的时间。这个代码我唯一的问题是它不能很顺利地打印到控制台。看起来很生涩,就像它有点落后一样。它看起来像逐字打印,而不是逐字逐句打印。我不明白为什么,这是一段相当简单的代码。也许它是暂停,我应该使用Thread.sleep。此外,我想知道我如何使光标跟随文本。
或者我应该在c ++中重写一下以获得性能提升?我知道大约相同数量的C ++
void pause(double time){
long y = (long) (1000 * time);
try {
Thread.sleep(y);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
有人要求暂停功能的代码,所以这里是
答案 0 :(得分:2)
我相信System.out是缓冲的,尝试在暂停前调用System.out.flush()。