Timer im inneren while-Schleife
Wie würde ich mich über die Implementierung eines Timers in eine while-Schleife wie so in Java?
while (game not ended) {
//do something
(wait 5 seconds)
}
Wäre es etwas wie so?: (java.util.Timer
)
int delay = 1000; //milliseconds
while (game not ended) {
//do something
new Timer(delay, taskPerformer).start();
}
- Warum wollen Sie dies tun? Was ist dein Ziel?
- Suchen Sie nach "[java] - Spiel-event-Schleife". Einen Timer in Java ist ein asynchrones, Ereignis-Quelle und nicht geeignet für ein Spiel loop - aber es kann auch der Fall sein, dass das Spiel geschrieben werden sollen, in einem asynchronen Stil. (Welche Art von Spiel es ist? Was hat das bestehende Spiel-event-Schleife Aussehen? Ist es mit Swing für die UI?)
- Seine für ein swing-tetris-Spiel, mit AI. Ein agent löst für die meisten effizienten bewegt sich für einen Puffer von Stücken. Ich möchte jedem Zug gespielt werden, in der gui für eine eingestellte Zeit, so dass der marker kann jeder sehen, bewegen, wie es gespielt wird... ohne Verzögerung sehen Sie nur den letzten Zug.
- was genau ist falsch mit ihm? @AndrewThompson
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht blockiert den EDT (Event Dispatch Thread) - die GUI wird 'einzufrieren', wenn das passiert. Anstelle von aufrufen
Thread.sleep(n)
Implementierung einer SwingTimer
für sich wiederholende Aufgaben oder eineSwingWorker
für lange laufende Aufgaben. Sehen Concurrency in Swing für mehr details.Können Sie
Thread
Klassestatic
sleep() Methode.Java-Thread.sleep() ist eine Pop-Liebling: