Периодическая задержка отрисовки движения предметов в SDL 1.2

Реализую отображение равномерно падающих яблок с верха экрана. В следующей части функции отсчитываются "такты" и в соответствии со скоростью каждого объекта выполняется отрисовка (например, 1 - перемещение каждый такт, 2 - перемещение каждые 2 такта):

while (true)
{
    for (i = 0; i < 10; i++)
        array[i]->Redraw (tact);

    tact++;
    SDL_Flip (screen);
    SDL_Delay (16);
}

Функция Redraw() сначала восстанавливает ту часть фона, которая должна быть видна после перемещения объекта, затем отсчитывает перемещение и отрисовывает объект в новом месте:

void FRUIT :: Redraw (short tact)
{
    prev_coord = coord; prev_coord.h = 1;
    SDL_BlitSurface (background, &prev_coord, screen, &coord);
    if (tact % speed == 0) coord.y++;
    SDL_BlitSurface (fruit.Picture, NULL, screen, &coord);
}

Движение отображается правильно, кроме одного момента: через равные (на взгляд) промежутки времени перемещение объектов приостанавливается на долю секунды. Чем это может быть вызвано и как может быть связано с используемыми функциями?


Ответы (0 шт):