Ik ben nieuw in Java en maak een klein spel voor de praktijk.
if (doAllFaceUpCardsMatch == false) {
//run pause here//
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
Ik wil het spel hier twee seconden pauzeren voordat het
concentration.flipAllCardsFaceDown();
Hoe zou ik het gaan pauzeren?
Antwoord 1, Autoriteit 100%
U kunt gebruiken:
Thread.sleep(2000);
of
java.util.concurrent.TimeUnit.SECONDS.sleep(2);
Houd er rekening mee dat beide methoden InterruptedException
gooien, wat een gecontroleerde uitzondering is, zodat u dat moet betrappen of in de methode verklaren.
EDIT:
Na het vangen van de uitzondering zal uw code er als volgt uitzien:
if (doAllFaceUpCardsMatch == false) {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
Aangezien u nieuw bent, zou ik aanraden om te leren hoe u een uitzonderingsafhandeling kunt doen als u een beetje comfortabel bent met Java.
Antwoord 2, Autoriteit 10%
Voor degenen die gewoon een snelle hack willen zonder een bibliotheek te hoeven brengen …
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));
}
}
Voor gaming met 60 fps met hoge precisie is dit waarschijnlijk niet wat je wilt, maar misschien vinden sommigen het nuttig.
Antwoord 3, autoriteit 5%
Je kunt hier een soortgelijk bericht vinden: Hoe vertragen in Java?
In principe wat er in het oude bericht staat. Je zou java.util.concurrent.TimeUnit kunnen gebruiken
import java.util.concurrent.TimeUnit;
if (doAllFaceUpCardsMatch == false) {
TimeUnit.SECONDS.sleep(2);
concentration.flipAllCardsFaceDown();
} else {
concentration.makeAllFaceUpCardsInvisible();
}
Antwoord 4
U kunt Thread.currentThread().sleep(2000) gebruiken om de huidige thread 2 seconden (2000 milleseconden) te pauzeren. Je moet dit omringen met een try/catch in het geval van InterruptedExceptions.
Antwoord 5
Een andere zeer eenvoudige manier is het creëren van de volgende methode:
public static void pause(long timeInMilliSeconds) {
long timestamp = System.currentTimeMillis();
do {
} while (System.currentTimeMillis() < timestamp + timeInMilliSeconds);
}