web-dev-qa-db-fra.com

Comment mettre en pause mon programme Java pendant 2 secondes

Je suis nouveau à Java et je fais un petit jeu pour la pratique.

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

Je veux interrompre le jeu pendant deux secondes ici avant qu'il ne le fasse

concentration.flipAllCardsFaceDown();

Comment pourrais-je faire une pause?

5
Ethanph89

Vous pouvez utiliser:

 Thread.sleep(2000);

ou

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

Veuillez noter que ces deux méthodes lancent InterruptedException, qui est une exception vérifiée, vous devrez donc l'attraper ou la déclarer dans la méthode.

Edit: Après avoir capturé l'exception, votre code ressemblera à ceci:

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

Puisque vous êtes nouveau, je recommanderais d'apprendre à gérer les exceptions une fois que vous serez un peu à l'aise avec Java.

10
Ashish Gupta

Vous pouvez trouver un article similaire ici: Comment retarder en Java?

Fondamentalement, ce qui est dit dans l'ancien poste. Vous pouvez utiliser Java.util.concurrent.TimeUnit

    import Java.util.concurrent.TimeUnit;

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

Pour ceux qui veulent juste un hack rapide sans avoir à apporter une bibliothèque ...

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));
    }
}

Pour les jeux de haute précision à 60 ips, ce n'est probablement pas ce que vous voulez, mais certains pourraient peut-être le trouver utile.

0
Scotty Stephens

Vous pouvez utiliser Thread.currentThread (). Sleep (2000) pour suspendre le thread en cours pendant 2 secondes (2000 milles secondes). Vous devez l'entourer d'un try/catch en cas de InterruptedException s.

0
ILIkeEggs