1

私は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();
    }
}

誰かが一時停止機能のコードを求めたので、ここにあります

4

1 に答える 1

2

System.out はバッファリングされていると思います。一時停止する前に System.out.flush() を呼び出してみてください。

于 2012-10-05T18:04:54.800 に答える