Добро пожаловать на MidletPascal - а теперь еще скоро и Android и Iphone...
Авторизироваться
Меню сайта
Категории раздела
Для начинающих [16]
С этих статей вырасли все, кто сейчас программирует на MP. Именно с этих статей надо начинать новичку, качество у них не всегда хорошее, но почитать стоит.
Разбираем.Обьясняем [1]
В этой категории обьясняем, разьясняем библиотеки,примеры,мидлеты и т.д.
Прочее [4]
Прочее, что не касается программирования: как настроить MP, что нужно для работы и др...
Наш опрос
Вы программируете на MP?
Всего ответов: 617
Мини-чат
200
Статистика

Онлайн : 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Midlet Pascal » Прочее

Ограничитель FPS
Для тех, кто не знает: FPS - это дословно "кадры в секунду". На мобилках, что мощнее, игры "играют" быстро, а на слабеньких еле-еле. Чтобы ваша игра шла с одинаковой скоростью на всех устройствах, надо это FPS как то зафиксировать. Предлагаю свое решение:
Code
program fps;
const frames = 20; // ограничим FPS 20-ю кадрами в секунду
var delay_,f,fps,s:integer; // объявляем переменные
procedure game; // процедура игры
begin
setcolor(0,0,0); // меняем цвет на черный
fillrect(0,0,getwidth,getheight); // закрашиваем весь экран
//\\//\\//\\//\\//\\//\\//\\//\\//\\//
//ЗДЕСЬ МОЖЕТ БЫТЬ ВАША ПРОГРАММА =)//
//\\//\\//\\//\\//\\//\\//\\//\\//\\//
setcolor(0,255,0); // меняем цвет на зеленый
drawtext('FPS: ' + fps,0,0); // выводим количество кадров
end;
begin // начало основного кода
fps:=0; // любые переменный в начале нужно обнулять
delay_:=25; // первоначальное значение времени задержки
repeat
f:=0; // обнуляем счетчик
s:=getsecond(getcurrenttime); // узнаем текущую секунду
while (s=getsecond(getcurrenttime)) do begin // пока не прошла секунда
f:=f+1; // считаем кадры
game; // выполняем процедуру игры
repaint; // перерисовываем экран и больше эту процедуру не вызываем
delay(delay_); // ждем...
end;
fps:=f; // переменную fps можно было и не заводить - она нужна лишь для вывода на экран
if (f<frames-1) then delay_:=delay_-1; // если FPS меньше нужного нам, то уменьшаем задержку
if (f>frames+1) then delay_:=delay_+1; // и наоборот ("1" - это как бы погрешность, нужно для стабильности FPS)
if (delay_<0) then delay_:=0; // если задержка будет отрицательной, то приложение зависнет
until getkeyclicked=KE_KEY0; // выход из приложения при нажатии "0"
end.
Категория: Прочее | Добавил: APTEM (12.02.2011) E
Просмотров: 2088 | Комментарии: 1 | Рейтинг: 0.0/0
Всего комментариев: 1
05.01.2012 в 20:30 Спам
рябят используйте теги
Code
Код программы
читать нереально
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]