1

だから私はテキストベースのゲームを作成しています.テキスト表示間で一時停止する方法を見つけるのに苦労しています..スレッドスリープが機能することはわかっていますが、これを行う必要はありません数百行のテキスト。これが私が持っているものですが、これを行うもっと簡単な方法はありますか?

public class MyClass {
    public static void main(String[] args) {
        System.out.println("Hello?");
        //pause here
        System.out.println("Is this thing on?");
        /**Obviously I have a pause here, but I dont want to have to use this every time.*/
        try {
            Thread.sleep(x);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Now, what is your name?");
    }
}
4

3 に答える 3

1

単に別のクラスでラップしないのはなぜですか?

class DisplayWrapper {
    private final static long DEFAULT_PAUSE_MS = 250;

    public static void outputWithPause(String text, long ms) {
        System.out.println(text);
        try {
            Thread.sleep(ms);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void show(String text) {
        outputWithPause(text. DEFAULT_PAUSE_MS);
    }
}

public class MyClass {
public static void main(String[] args) {
    DisplayWrapper.show("Hello?");
    DisplayWrapper.show("Is this thing on?");
    DisplayWrapper.show("Now, what is your name?");
}
于 2016-01-25T20:56:24.593 に答える
0

m.antkowicz がコメントで述べたように、print メソッドを作成する必要があります。私は例を提供しました:

void printAndSleep(String string, int sleepTimeMs) {
  System.out.println(string);
  Thread.sleep(sleepTimeMs);
}

印刷したいときはいつでも、上で作成した printAndSleep メソッドを使用するだけです。そのようです:

printAndSleep("Hello?", 1000); // Print and pause for 1 second
printAndSleep("Is this thing on?", 2000); // Print and pause for 2 seconds
于 2016-01-25T20:55:09.510 に答える
0

TimerTaskを確認してください。

次のように使用できます。

public static void main(String[] args) {
    Timer timer = new Timer();
    writeIn(timer, 3000, "Hello?");
    writeIn(timer, 6000, "Is this thing on?");
    writeIn(timer, 12000, "Now, what is your name?");
    closeTimerIn(timer, 13000); // clean exit
}

private static void writeIn(Timer timer, final int millis, final String text){
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            System.out.println(text);
        }
    };
    timer.schedule(task, millis);
}

private static void closeTimerIn(final Timer timer, final int millis){
    TimerTask task = new TimerTask() {
        @Override
        public void run() {
            timer.cancel();
        }
    };
    timer.schedule(task, millis);
}
于 2016-01-25T20:52:55.030 に答える