Я бы для этого использовал твининг, рассчет скорости зависящей от FPS конечно хорошо, но проще обновлять игру 30 раз в секунду, чем n=FPS раз в секунду...
Вот стандартный шаблон:
...
period=1000/FPS ; FPS определяет, сколько раз в сеунду будет обновляться игра, если FPS = 30, то игра будет обнавляться 30 раз, но текущая скорость кадров не будет от этого зависеть, даже если она будет меньше 30.
time=MilliSecs()-period
While Not KeyHit(1)
Repeat
elapsed=MilliSecs()-time
Until elapsed
;Сколько кадров прошло
ticks=elapsed/period
;положение между предидущим и следующим кадрами (от 0 до 1)
;при значении не равном 0 или 1 блитц достраивает промежуточные кадры
tween#=Float(elapsed Mod period)/Float(period)
For k=1 To ticks
time=time+period
' сохранение текущего положения всех объектов для расчета промежуточного их положения между текущим и новым положением (CaptureWorld)
If k=ticks Then CaptureWorld
UpdateGame();Обновление игры
UpdateWorld
Next
RenderWorld tween
Flip
Wend
End
Таким образом StepDistance# = Const, если надо ускорить игрока, то просто надо увеличить StepDistance#, замедлить -уменьшить StepDistance#, но не надо ее рассчитывать при каждом обновлении игры.
Не волнуйся, если поймешь не сразу
PS: эта часть кода из примера MAK->CASTLE