2013-05-18 4 views
2

Как бы я мог реализовать таймер внутри цикла while, как в Java?Таймер внутри цикла

while (game not ended) { 
//do something 
(wait 5 seconds) 
} 

было бы что-то вроде так ?: (java.util.Timer)

int delay = 1000; //milliseconds 

    while (game not ended) { 
     //do something 
     new Timer(delay, taskPerformer).start(); 
    } 
+1

Зачем вы хотите это сделать? Какова ваша цель? –

+0

Искать "[java] игровой цикл событий". Таймер в Java является * асинхронным * источником событий и не подходит для игрового цикла, но также может быть, что игра должна быть написана в асинхронном стиле. (What * kind * of the game) Что такое * существующий * игровой цикл событий, похожий? Используется ли Swing для пользовательского интерфейса?) – user2246674

+0

@AndrewThompson Его для игры с качелями тетриса с использованием AI. Агент решает для наиболее эффективных ходов для буфера кусков. Я хочу, чтобы каждый ход воспроизводился в gui в течение установленного времени, чтобы маркер мог видеть каждый ход, когда он играет ... без задержки вы видите только последний ход. –

ответ

1

Не блокировать EDT (Event отправка Thread) - графический интерфейс пользователя будет 'заморозить', когда это произойдет. Вместо того, чтобы звонить Thread.sleep(n), выполните Swing Timer для повторения заданий или SwingWorker для выполнения длительных задач. См. Concurrency in Swing для более подробной информации.

2

You может использовать Thread класс staticsleep() способ.

while (game not ended) { 
    //do something 
    Thread.sleep(5000); 
} 
Смежные вопросы