Меню сайта
Форма входа

Категории раздела
Уроки по созданию игр [38]
Программирование игр разной сложности
Игровые алгоритмы [24]
Алгоритмы, которые уже реализованы для разных жанров игр
Графика [5]
Учимся работать с графикой в Делфи
Мультимедиа [3]
Работа с мультимедийными возможностями Делфи
Другие статьи [18]
Статьи не вошедшие не в один из разделов
Ошибки [4]
Всевозможные ошибки и пути их решения
Понедельник, 29.04.2024, 18:37
Приветствую Вас Гость

Статьи по программированию

Главная » Статьи » Игровые алгоритмы

Изменение даты и времени в игре

Изменение даты и времени в игре.

 

В сегодняшней статье мы попытаемся создать процедуру, которая возьмет на себя всю функциональность по расчету и изменению даты и времени в игре или другой делфи программе. Особенно это пригодится создателям экшенов и игр на псевдографике. Все, что Вам останется сделать после этого – это вызывать нашу процедуру в нужном месте с нужными параметрами.

 

И так, начнем. Первое, что необходимо сделать, это в разделе Var объявить такие переменные:

 

Var

Zaderzhka, ZaderzhkaMax, Sekonds, Minutes,

Hour, Chislo, Mesyats, God:integer;

 

Давайте рассмотрим наши переменные по подробней. Первые две переменные отвечают за задержку времени (текущую и максимальную). Эта задержка необходима, так как наш таймер может работать с любой частотой, которая может быть от тысяч раз в секунду до одного раза в тысячу секунд.

 

Далее идут переменные, которые будут в себе содержать секунды, минуты и часы нашего игрового или настоящего времени. После идут переменные, относящиеся к дате – число, месяц и год. Я думаю, сложного здесь ничего нет, поэтому заострять свое внимание мы не будем на этом.

 

Далее присваиваем нашим переменным начальные значения, с которых будет начинаться отчет времени и даты. Грубо говоря – это инициализация. Провести ее можно или по нажатию на кнопку или же в событии формы FormCreate:

 

Zaderzhka:=10;

ZaderzhkaMax:=10;

 

Sekonds:=10;

Minutes:=50;

Hour:=7;

 

Chislo:=12;

Mesyats:=9;

God:=1996;

 

Инициализация вполне может выглядеть и так. А далее начинаем писать нашу основную процедуру, так как эап подготовки к этому уже закончен:

 

procedure  TikTak(var Zaderzhka,ZaderzhkaMax,Sekonds,Minutes,Hour,

Chislo,Mesyats,God:integer);

begin

  Zaderzhka:=Zaderzhka-1;

 

  if Zaderzhka=0 then

  begin

    Sekonds:=Sekonds+1;

 

    if Sekonds>59 then

    begin

    Sekonds:=0;

    Minutes:=Minutes+1;

    end;

 

    If Minutes>59 then

    begin

    Minutes:=0;

    Hour:=Hour+1;

    end;

 

    if Hour>23 then

    begin

    Hour:=0;

    Chislo:=Chislo+1;

    end;

 

    if ((Mesyats=1) and (Chislo>31))

    or ((Mesyats=2) and (Chislo>29) and (God div 4=0) )

    or ((Mesyats=2) and (Chislo>28) and (God div 4<>0) )

    or ((Mesyats=3) and (Chislo>31))

    or ((Mesyats=4) and (Chislo>30))

    or ((Mesyats=5) and (Chislo>31))

    or ((Mesyats=6) and (Chislo>30))

    or ((Mesyats=7) and (Chislo>31))

    or ((Mesyats=8) and (Chislo>31))

    or ((Mesyats=9) and (Chislo>30))

    or ((Mesyats=10) and (Chislo>31))

    or ((Mesyats=11) and (Chislo>30)) then

    begin

    Chislo:=1;

    Mesyats:=Mesyats+1;

    end;

 

    if (Mesyats=12) and (Chislo>31) then

    begin

    Mesyats:=1;

    God:=God+1;

    end;

    Zaderzhka:=ZaderzhkaMax;

  end;

end;

 

В данном алгоритме мы с каждым вызовом уменьшаем значение задержки. Как только она станет равна нулю, тогда начинается расчет даты и времени. Если секунды или минуты становятся больше 59, то переход на следующий уровень времени идет. А в дате каждый месяц отдельно обрабатывается, так как все зависит от количества дней в месяце и высокосный год или нет. На последок в таймере или другом месте просто вызываете созданную ранее процедуру так:

 

TikTak(Zaderzhka,ZaderzhkaMax,Sekonds,Minutes,Hour,Chislo,Mesyats,God);

 

Надеюсь, статья будет для Вас полезной. Всем пока и удачи в Ваших начинаниях.

 

Автор: Соколов Виталий

Источник: delgame.at.ua

Категория: Игровые алгоритмы | Добавил: Armageddets (25.02.2015) | Автор: Изменение даты и времени в игре
Просмотров: 1350 | Теги: kylix, Изменение даты и времени в игре, lazarus, Delphi | Рейтинг: 1.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Наш опрос
Где Вам удобнее оставлять коментарии и задавать вопроссы?
Всего ответов: 24
Мини-чат
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0