Информатика и образование
  Мобильная версия сайта            
               
[Главная] [Новости]
[Статьи]
[Проекты]
[Ссылки]
[Автор]
               
    [Архив новостей]        
               
  [Форум] на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы  
       
  Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...]    
       
  [Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi]    
  [Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX]    
       
  Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!"    
       
  триал-версия, 1,34 Mb   скачайте полную версию игры, зарегистрируйтесь и получите бесплатно полный исходный код игры для компиляции в delphi 7 или 2006 и уроки delphi directx 8.1 содержащие статьи по созданию собственной 2D/3D игры в среде delphi directx    
       
  Урок 8 Загрузка/Сохранение текущей игры, режим паузы, режимы часов/будильника, запуск браузера Internet Explorer для показа сайта разработчика и других интернет-ресурсов    
       
  О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1    
       
  Далее у читателя подразумевается наличие базовых знаний языка Delphi.    
       
  [назад] [страница 1] [далее] [к содержанию]    
       
 

Самым простым в данной теме будет рассмотрение вопроса как запустить браузер Internet Explorer для показа нужного html-документа в режиме off- или on-line, поэтому с этого мы и начнём.

В проекте игры "Ну, Погоди!" если исходный код у Вас под рукой и открыт, Вы увидите, что при выборе пункта меню ? > Сайт Мега Информатик выполняется такой код -

procedure TMainForm.VisitSiteHelpItemClick(Sender: TObject);
begin
VisitSiteForm.OpenSitePage;
end;

   
       
 

Работа формы VisitSiteForm реализована в модуле VisitSiteU.pas

Окно формы сделано самых минимальных размеров и на него добавлен компонент TWebBrowser из палитры Internet.

То, что происходит в коде данного модуля совсем просто, достаточно Вам лишь заглянуть в него и Вам всё сразу же станет ясно.

В простейшем случае нужно внутри дистрибутива игрового проекта создать отдельную папку и разместить в ней нужный html-документ, а далее в коде указать ссылку на него и передать компоненту TWebBrowser. Всё остальное выполнит сам этот компонент.

Важно правильно указать путь к этому документу и это показано в коде. Если путь к документу не будет найден, то запущенный браузер не сможет ничего отобразить.

Для режима on-line нужно передать браузеру ссылку на требуемый интернет-ресурс и если соединение в данный момент установлено, то нужная страница будет отображена.

   
       
 

Реализация в игре "Ну, Погоди!" режима паузы также достаточно проста.

Для этих целей в классе приложения TD3DGameApp используется поле

m_bPaused: Boolean;

Если выполнить поиск по фразе m_bPaused в коде модуля Main.pas, то Вы увидите все части кода, в которых используется данное поле.

Например, в коде метода TD3DGameApp.FrameMoveGameSituation отвечающем за формирование игровой ситуации есть такие строки -

if m_bPaused then begin
DXUtil_Timer(TIMER_RESET);
Exit;
end;

т. е. кода режим паузы имеет место, то выполняется сброс DX-таймера и выход из метода формирования игровой ситуации. Вот и всё.

В каких еще местах и каким образом используется поле m_bPaused посмотрите самостоятельно в исходном коде игры "Ну, Погоди!"

   
       
 

Режимы часов/будильника. Для этих режимов применяются специальные состояния приложения: gmTimer, gmSetAlarm

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

В реальной электронной игре "Ну, Погоди!" время часов можно настраивать, как и время подачи будильника. В эмуляторе установка времени опущена, т. к. этого не требуется, исходя из того, что переводить системные часы, думаю, нужды нет, тем более посредством эмулятора.

Работа в режиме будильника сводится к тому, что запоминается установленное пользователем время его подачи, а во время игры или в режиме часов сверяются заданное и текущее время. Если время будильника подошло, то в течение 1 минуты подается сигнал будильника. Как это реализовано тоже можете увидеть в коде.

   
       
  Загрузка/Сохранение текущей игры реализованы не намного сложнее, чем вышеописанные режимы. Состояние игры определяется некоторым набором переменных. Значения этого набора переменных заносятся в специальный блок данных. При сохранении данный блок выводится в файл, а при загрузке происходит считывание данных из этого файла. После считывания данные заносятся в переменные игры, в результате чего игра переходит в состояние аналогичное загруженному.    
       
 

Для понимания работы по загрузке/сохранению текущей загляните в реализацию методов обработки пунктов меню Загрузка и Сохранение.

Важным моментом является установка/восстановление текущей директории приложения. Если этого не делать возможны ошибки в работе. Реализованы предупреждения о потере текущей игры в случае загрузки и о перезаписи существующего файла сохранений.

Для идентификации файла загрузки/сохранений применяется проверка расширения, размера файла и идентификационной метки в начале блока данных.

Работа с файлом данных реализована на базе класса TFileStream.

За конкретной информацией о реализации снова обращаю Вас к исходному коду.

   
       
 

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

Для лучшего уяснения того, как создать собственную игру на платформе delphi directx 8.1 начните с 1 урока, возьмите за основу шаблон стартового приложения, разберите как оно работает, а затем постепенно наращивайте функциональность кода добавляя всё новые и новые, доступные для понимания на каждом этапе части кода.

Так постепенно Вы придете к законченному игровому проекту.

   
       
 

Важным аспектом в понимании принципов создания игровых приложений является их отладка и тестирование. Чтобы Ваша игра была стабильной в работе и не давала ошибок ее нужно тщательно отлаживать и постоянно тестировать.

Кое-что об этом рассказано в следующем уроке.

   
       
  [назад] [страница 1] [далее] [к содержанию]    
       
       
       
       
       
  по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме    
       
 

 

Обновления и новости о развитии Delphi DirectX проекта
смотри на сайтах:

http://www.megainformaticsite.pochta.ru

http://www.megainformatic.boom.ru

http://www.megainformatic.narod.ru

 

   
       
     
 

Cвои пожелания, вопросы или заметки отправляйте на:

megainformatic@mail.ru или пишите на форуме

 
     
   Обмен ссылками  
     
     
             
 
 
         
(с) МЕГА ИНФОРМАТИК 2006-2009
Hosted by uCoz