1

我一直在用 java 编写一个基于文本的视频游戏(我是 java 新手,顺便说一句),它没有我一直希望的性能,特别是语音。我希望文本看起来好像这个人在说话(我不希望它一次出现,只是一个字符一个字符地出现)。我用这段代码实现了效果:

void speak(String speak){
    for(int x = 0; x < speak.length(); x++){
        System.out.print(speak.charAt(x));
        pause(talkSpeed);
    }
}

talkSpeed 是对象说话的速度。pause 是我为使 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();
    }
}

有人要求提供暂停功能的代码,所以在这里

4

1 回答 1

2

我相信 System.out 已缓冲,请尝试在暂停前调用 System.out.flush() 。

于 2012-10-05T18:04:54.800 回答