Если вы используете обыкновенный таймер для своей игры, то тут ничего сложного нет, заведите переменную FPS целого типа и поставьте второй таймер с интервалом 1000, обнулите FPS скажем при событии OnCraete и в таймере с игрой в самом конце прибавляйте ей по единички, а во втором таймере выведите значение например в заголовок формы и обнулите FPS. Это все что необходимо сделать если у вас игра происходит по таймеру! Модуль Forms прибавляет к вашей программе около 300 кб., ого какой размер, есть вариант самим создать форму используя функции WinAPI и делать игру в цикле, тогда она будет идти с той скоростью какую сможет позволить система и подсчет FPS немного сложнее и ниже речь пойдет о еще одном способе подсчета FPS.
Заведите 4 переменные целого типа я их обозвал так:
var
t1,t2,fps1,fps2: integer;
t1 и t2 этими переменными мы организуем некий самодельный таймер.
fps1 и fps2 первый будет считать, а второй будем выводить на экран.
Обнулите переменные FPS1 и FPS2, после того как вы создали форму но еще ее не показали переменным t1 и t2 присвойте значение функции GetTickCount(получить время в миллисекундах от начала старта Windows). В конце цикла где происходит ваша игра встевьте этот код:
Code
Setwindowtext(pWnd,pchar(inttostr(FPS2)));
t1:=GetTickCount;
if t1-t2>=1000 then
begin
fps2:=fps1;
fps1:=0;
t2:=GetTickCount;
end;
fps1:=fps1+1;
Кол-во кадров в секунду будут выводиться в заголовок созданной вами формы. Если вы еще не имеет представления как создавать свою форму прочтите эту тему.
Добавлено (10.03.2008, 13:54)
---------------------------------------------
Вот формула для расчета FPS за любой промежуток времени
Code
Setwindowtext(pWnd,pchar(inttostr(FPS2)));
t1:=GetTickCount;
if t1-t2>=750 then
begin
fps2:=fps1/(t1-t2)*1000;
fps1:=0;
t2:=GetTickCount;
end;
fps1:=fps1+1;