Движение противника в игровом цикле

76
05 мая 2021, 08:30

Пишу простенькую игру на sfml. Не буду вдаваться в подробности - опишу кратко, как все реализовано.

У меня есть игровой цикл, в котором отслеживаются event'ы и рисуется графика игры (по примеру туториалов). На данный момент в игре есть мой персонаж - он может двигаться и стрелять.
Схематически, игровой цикл выглядит так:

sf::RenderWindow window(sf::VideoMode(600, 800), "Test");
sf::Event _event;
while (window.isOpen()) // Игровой цикл.
{
    while(window.pollEvent(_event)  // Цикл event'ов.
    {
        ...
    }
    // Рисуем графику.
    ...
}

Теперь я хочу добавить противника - он появляется вверху карты и идет вниз (не постоянно - иногда встанет постоит немного и пойдет дальше, т.е., по задумке он не предсказуемый).
Но тут возникла проблема. Я хотел, чтобы в цикле с вероятностью 50% противник спускался вниз. Вроде-как все OK:

sf::RenderWindow window(sf::VideoMode(600, 800), "Test");
sf::Event _event;
while (window.isOpen()) // Игровой цикл.
{
    while(window.pollEvent(_event)  // Цикл event'ов.
    {
        ...
    }
    if(rand()%2) // Вероятность 50%.
    {
        // Двигаем вниз нашего противника.
    }
    // Рисуем графику.
    ...
}

Но нет. Противник молниеносно пробегает по карте вниз и исчезает. Понимаю почему так происходит - цикл отрабатывает много раз за секунду и противник движется вниз.

Итак, что же я хочу? Я хочу чтобы противник плавно шел вниз, иногда замирая на месте. Пожалуйста, подскажите как мне это сделать - опишите идею, а с реализацией справлюсь сам.

READ ALSO
Функция не видит поля дружественного класса с++

Функция не видит поля дружественного класса с++

В классе getpoint есть функция show, её я обьявил как дружественную для класса point, но почему-то в строке cout << "A = " << objecta << endl << "B = " <<...

110
Создать массив в функции, используя параметр

Создать массив в функции, используя параметр

В данном примере при попытке создания массива output, возникает ошибка под new: «для агрегатного объекта требуется инициализация

77
Segmentation Fault при завершении скрипта на lua

Segmentation Fault при завершении скрипта на lua

Написал небольшой модуль для lua51 (в качестве эксперимента) на с++ (понятное дело функции экспортированы в C)

85
Запись в файл для всех файлов проекта

Запись в файл для всех файлов проекта

Друзья, помогите с задачейКак сделать так, чтобы запись в файл производилась из всех файлов проекта(например

85