Как задержать показ одного изображения на экране в Java? - PullRequest
0 голосов
/ 11 июня 2018

Я до сих пор работаю над игрой Pacman для своей компьютерной науки 12 класса.

Я хочу позволить монстрам автоматически перемещаться по игре.Я использую Slick2D и LWJGL для своей игры.В моей игре есть немного кода, который контролирует, куда движется синий монстр.

if (bluePosX < 400) {
    try {
        Thread.sleep(100);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    bluePosX++;
}

Итак, в основном то, что я вижу на экране, это синий монстр, автоматически движущийся в правильном направлении.Моя единственная проблема - когда я использую Thread.sleep(100);, это задерживает весь экран.Я просто хочу отложить, как долго синий монстр должен ждать, прежде чем двигаться в правильном направлении.Как мне задержать только изображение синего монстра, а не весь экран?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я рекомендую вам работать с дельтой, имеющейся в вашем методе обновления.

См .: this

Вы можете подсчитать дельту в переменной и выполнитьопределенное действие после достижения максимальной дельты.После этого вы можете сбросить deltaCounter на 0. Я бы не рекомендовал использовать Thread.sleep или что-то подобное.Вы можете использовать Java Swing Timer, но обычно связанные с синхронизацией вещи достигаются с помощью дельты.Это проще и обеспечивается движком, который вы используете.

0 голосов
/ 11 июня 2018

Я предполагаю, что вы устанавливаете частоту обновления игрового цикла, например, 60 раз в секунду = 60 кадров в секунду.В этом случае 100 мс равны 6 обновлениям (каждое обновление находится на расстоянии 1000/60 мс).Так что просто подождите 6 обновлений, прежде чем менять bluePosX++.

...