Периодическая задержка отрисовки движения предметов в 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);
}
Движение отображается правильно, кроме одного момента: через равные (на взгляд) промежутки времени перемещение объектов приостанавливается на долю секунды. Чем это может быть вызвано и как может быть связано с используемыми функциями?