Мобильная версия сайта | |||||||||
[Главная] | [Новости] | [Статьи] |
[Проекты] |
[Ссылки] |
[Автор] |
||||
[Архив новостей] | |||||||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | ||||||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [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 | |||||||||
Урок 1 Введение в Delphi DirectX 8.1. Создание шаблона стартового приложения. | |||||||||
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1 | |||||||||
Далее у читателя подразумевается наличие базовых знаний языка Delphi. | |||||||||
Введение Библиотека Delphi DirectX 8.1 предсталяет собой набор исходных файлов, которые позволят Вам писать приложения для платформы Windows DirectX на Delphi. О том, что представляет из себя библиотека Delphi DirectX 8.1 более подробно. Любое приложение начинается со стартовой заготовки - шаблона. Создание Delphi DirectX приложения можно выполнить в виде окна с использованием компонентов VCL или в виде Win32-приложения. К этому каркасу будет добавлен код, необходимый для работы с DirectX. Для создания оконного приложения на основе VCL Вам не потребуется особых усилий, если Вы хорошо знакомы с основами создания приложений в Delphi. Создание кода для Win32-приложения будет немного сложнее для новичка, но не на столько сложно, как может показаться на первый взгляд. Мы с Вами начнем с VCL-приложения. Это будет всего лишь класс формы, производный от TForm, к которому мы добавим необходимый код для создания стартового шаблона - минимального кода, необходимого для создания простейшего Delphi DirectX 8.1 - приложения. |
|||||||||
Это приложение должно всего лишь создать окно формы и заполнить его рабочую область любым заданным Вами цветом. | |||||||||
Далее мы будем рассматривать работу в среде Delphi 2006. Из среды Delphi 7 все действия будут подобны, с тем лишь отличием, что названия нужных пунктов могут несколько отличатся от описанного, но это будет указано особо! | |||||||||
Создадим новый проект Delphi 2006 File > New > VCL Forms Application - Delphi for Win32 В Delphi 7 для этого нужно выбрать File > New > Application |
|||||||||
Созданный проект нужно предварительно сохранить в какую-либо удобную для Вас папку. После этого скомпилировать и запустить. Если у Вас есть даже небольшой опыт создания Windows-приложений в среде Delphi, то это Вы уже должны уметь. Фактически за Вас всё сделала среда Delphi. Начальная заготовка Windows-приложения готова. Это всего лишь окно, которое появляется на экране при запуске приложения и реагирует на стандартные команды любого типового окна Windows - сворачивается, разворачивается, закрывается, позволяет изменять размеры и т.п. |
|||||||||
Сейчас Мы добавим в шаблон код, который превратит данное приложение в Windows - DirectX. Поскольку окно нашего приложения будет всего одно и единственное, оно будет главным, поэтому для удобства класс окна лучше сразу назвать вместо TForm1 как TMainForm Для этого в окне структур откройте переменную Form1 |
|||||||||
А в инспекторе объектов найдите её свойство Name и переименуйте Form1 в MainForm и нажмите Enter. | |||||||||
В код класса формы TMainForm добавьте обработчик события OnFormShow Для этого в окне Инспектора объектов выберите вкладку Events, найдите событие с данным именем и щелкните дважды в пустом поле напротив этого события. При этом в коде класса будет сгенерирован начальный код для обработчика данного события - |
|||||||||
Добавьте пока между операторами begin и end метода procedure TMainForm.FormShow оператор комментария // |
|||||||||
Этот оператор не выполняет никаких действий, но поскольку какой-то код в обработчик уже добавлен, то при сохранении проекта обработчик уже не будет автоматически удаляться как если Вы оставите его сгенерированный код без изменений. | |||||||||
Теперь вместо данного комментария добавьте в обработчик следующий код - | |||||||||
Мы видим, что среда Delphi подчеркнула фразы g_d3dApp и InitD3DApp. Всё правильно, поскольку мы еще не объявили эти идентификаторы. | |||||||||
Восполним этот недостаток. В секцию интерфейса класса TMainForm добавим следующий код - |
|||||||||
Это решит проблему, но тут же возникнет новая - необъявленный идентификатор типа TD3DGameApp Мы добавим этот класс чуть позже, а пока после фразы type и перед секцией начала описания класса TMainForm нужно добавить строку кода |
|||||||||
TD3DGameApp = class; |
|||||||||
Теперь нужно добавить реализацию метода InitD3DApp, описание и реализацию класса TD3DGameApp и другой необходимый для шаблона Delphi DirectX - приложения код | |||||||||
В секции интерфейса добавим реализацию метода InitD3DApp - procedure TMainForm.InitD3DApp;
// сохранение статичной ссылки на обработчик рабочей области панели окна
приложения g_d3dApp.m_hWnd :=
m_hwndRenderWindow;
//g_d3dApp.LoadSettings; |
|||||||||
Вас не должно пугать количество ошибок, которые были выделены в коде. Все эти идентификаторы и методы мы будем постепенно добавлять далее | |||||||||
Несколько слов о сути работы нашего будущего приложения Оно будет работать следующим образом: В момент показа окна формы (событие OnFormShow и его обработчик FormShow) будет вызываться метод инициализации D3D-приложения (InitD3DApp). Слово D3D означает сокращение от Direct3D, а поскольку Delphi DirectX используется именно для работы с Direct3D, то D3D-приложение будет являться синонимом Delphi DirectX - приложения и будет употребляться наряду с ним. В момент разрушения окна формы (событие OnFormDestroy) будет вызываться код необходимый для освобождения памяти от созданных D3D-приложением ресурсов. В методе бездействия приложения procedure TMainForm.ApplicationEventsIdle (который мы создадим чуть позже) должен будет вызываться метод g_d3dApp.Render3DEnvironment осуществляющий анимацию и отображение изображений игровых объектов на поверхности окна формы или на поверхности других элементов управления, например TPanel. Компонент TPanel удобен тем, что позволяет создать нужную область окна формы, в которую будет выводиться изображение игры формируемое средствами Direct3D. |
|||||||||
В дальнейшем, если Вы заглянете в код игры "Ну, Погоди!", то увидите там метод Render3DEnvironment внутри которого вызываются методы FrameMove и Render осуществляющие анимацию и отображение графики. Кроме того, внутри метода FrameMove вызываются методы необходимые для управления игрой со стороны пользователя от мыши, клавиатуры и других устройств ввода. | |||||||||
Таким образом функциональную схему D3D-приложения можно представить следующим образом | |||||||||
На данной схеме показаны основные функциональные связи D3D-приложения. В случае Win32-приложения вместо класса формы TForm применяется класс приложения TD3DGameApp. В нашем случае данный класс будет создаваться, использоваться и уничтожаться внутри показанных методов класса TMainForm. Если Вы заглянете в код проекта - файл с расширением bdsproj, то увидите, что |
|||||||||
То есть сам класс формы управляется компонентом Application из библиотеки VCL. В случае Win32-приложения это происходит без использования данного компонента. Как? Вы можете увидеть в коде примера игры [Пример игры Donuts3D] | |||||||||
Теперь Вам должен быть ясен основной функционал нашего будущего приложения. Весь остальной код, реализующий загрузку необходимых ресурсов (моделей, текстур, текста, музыки, звуков и т.д.), игровую логику, какие-либо сервисы и прочее вызывается из показанных на схеме выше методов. |
|||||||||
[далее] | |||||||||
по всем вопросам пишите на 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 | |||||||||