Информатика и образование
  Мобильная версия сайта            
               
[Главная] [Новости]
[Статьи]
[Проекты]
[Ссылки]
[Автор]
               
    [Архив новостей]        
               
  [Форум] на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы  
       
  Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [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    
       
  Урок 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;
begin
g_d3dApp := TD3DGameApp.Create;
//g_d3dApp.fAppForm := Self;


m_hwndRenderWindow := 0;

// сохранение статичной ссылки на обработчик рабочей области панели окна приложения
m_hwndRenderWindow:= RenderWindowPanel.Handle;

g_d3dApp.m_hWnd := m_hwndRenderWindow;
g_d3dApp.Create_(HInstance);

//g_d3dApp.LoadSettings;
end;

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

Несколько слов о сути работы нашего будущего приложения

Оно будет работать следующим образом:

В момент показа окна формы (событие 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
Hosted by uCoz