我一直在用java编写一个基于文本的视频游戏(顺便说一句,我是java的新手),它没有达到我一直希望的性能,特别是语音。我希望文本显示得就像人正在说话一样(我不希望它一次全部显示,只是一个字符一个字符地显示)。我用这段代码实现了效果:
void speak(String speak){
for(int x = 0; x < speak.length(); x++){
System.out.print(speak.charAt(x));
pause(talkSpeed);
}
}
talkSpeed 是对象的说话速度。暂停是我为使 Thread.sleep 更容易而创建的函数。懒得一直写try catch。我对这段代码的唯一问题是它不能非常顺利地打印到控制台。看起来很生涩,好像有点滞后。看起来它是逐字打印世界,而不是逐字打印。我不明白为什么,这是一段相当简单的代码。也许是暂停,我应该使用 Thread.sleep。另外,我想知道如何让光标跟随文本。
或者我应该用 C++ 重写它以获得性能提升?我知道大约相同数量的 C++
void pause(double time){
long y = (long) (1000 * time);
try {
Thread.sleep(y);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
有人索要暂停功能的代码,所以这里是
最佳答案
我相信 System.out 已被缓冲,请尝试在暂停之前调用 System.out.flush()。
关于java - 控制台上的光标似乎很滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12751620/