web-dev-qa-db-ja.com

my Javaプログラムを2秒間停止する方法

私はJavaが初めてで、練習用の小さなゲームを作成しています。

if (doAllFaceUpCardsMatch == false) {
        //run pause here//
        concentration.flipAllCardsFaceDown();
} else {
        concentration.makeAllFaceUpCardsInvisible();
}

ここでゲームを2秒間停止してから停止します

concentration.flipAllCardsFaceDown();

どのように一時停止しますか?

5
Ethanph89

次を使用できます。

 Thread.sleep(2000);

または

Java.util.concurrent.TimeUnit.SECONDS.sleep(2);

これらのメソッドは両方とも、チェック済み例外であるInterruptedExceptionをスローすることに注意してください。したがって、メソッドでそれをキャッチするか、宣言する必要があります。

編集:例外をキャッチすると、コードは次のようになります。

if (doAllFaceUpCardsMatch == false) {
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        concentration.flipAllCardsFaceDown();
} else {
        concentration.makeAllFaceUpCardsInvisible();
}

初心者なので、Javaに少し慣れたら、例外処理の方法を学ぶことをお勧めします。

8
Ashish Gupta

同様の投稿をここで見つけることができます: Javaでの遅延方法

基本的に、古い投稿の内容。 Java.util.concurrent.TimeUnitを使用できます

    import Java.util.concurrent.TimeUnit;

    if (doAllFaceUpCardsMatch == false) {
        TimeUnit.SECONDS.sleep(2);
        concentration.flipAllCardsFaceDown();
    } else {
        concentration.makeAllFaceUpCardsInvisible();
    }
1
Lululicious

ライブラリを持ち込むことなく、簡単にハックしたい人のために...

public class Timing {
    public static void main(String[] args) {
            int delay = 1000; // number of milliseconds to sleep

            long start = System.currentTimeMillis();
            while(start >= System.currentTimeMillis() - delay); // do nothing

            System.out.println("Time Slept: " + Long.toString(System.currentTimeMillis() - start));
    }
}

高精度の60fpsゲーミングでは、これはおそらくあなたが望むものではありませんが、おそらくいくつかはそれが便利だと思うかもしれません。

0
Scotty Stephens

Thread.currentThread()。sleep(2000)を使用して、現在のスレッドを2秒間(2000ミリ秒)一時停止できます。 InterruptedException sの場合、これをtry/catchで囲む必要があります。

0
DFTBAman