Мобильная версия сайта | |||||||||
[Главная] | [Новости] | [Статьи] |
[Проекты] |
[Ссылки] |
[Автор] |
||||
[Архив новостей] | |||||||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | ||||||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...] | |||||||||
[Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi] | |||||||||
[Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX] | |||||||||
Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!" | |||||||||
скачайте полную версию игры, зарегистрируйтесь и получите бесплатно полный исходный код игры для компиляции в 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); |
|||||||||
Работа формы VisitSiteForm реализована в модуле VisitSiteU.pas Окно формы сделано самых минимальных размеров и на него добавлен компонент TWebBrowser из палитры Internet. То, что происходит в коде данного модуля совсем просто, достаточно Вам лишь заглянуть в него и Вам всё сразу же станет ясно. В простейшем случае нужно внутри дистрибутива игрового проекта создать отдельную папку и разместить в ней нужный html-документ, а далее в коде указать ссылку на него и передать компоненту TWebBrowser. Всё остальное выполнит сам этот компонент. Важно правильно указать путь к этому документу и это показано в коде. Если путь к документу не будет найден, то запущенный браузер не сможет ничего отобразить. Для режима on-line нужно передать браузеру ссылку на требуемый интернет-ресурс и если соединение в данный момент установлено, то нужная страница будет отображена. |
|||||||||
Реализация в игре "Ну, Погоди!" режима паузы также достаточно проста. Для этих целей в классе приложения TD3DGameApp используется поле m_bPaused: Boolean; Если выполнить поиск по фразе m_bPaused в коде модуля Main.pas, то Вы увидите все части кода, в которых используется данное поле. Например, в коде метода TD3DGameApp.FrameMoveGameSituation отвечающем за формирование игровой ситуации есть такие строки - if
m_bPaused then begin т. е. кода режим паузы имеет место, то выполняется сброс 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 | |||||||||