11

 

 

 

Статьи

Понидилок Андрей

Учим DelphiX

ВВЕДЕНИЕ

  Приветствую, ученик. Ты наверное не раз писал какие-нибудь игрульки на Delphi. Что тебе мешало, если в игре было слишком много графики или игровое поле было огромных размеров? Правильно - тормоза, не те, что в голове, а те, что заставляют игру быть медленнее, чем ты хотел. 

   Есть несколько способов от этого избавиться. Первый - вырезать все излишки графики. Второй - получить доступ к видео памяти, но это у тебя не получится. Третий - использовать Delphi X, который сделает все за тебя. Тебе лишь останется писать игру, как с обычным canvas'ом.

   Как установить? Легко. Качаете арихив с Delphi X из интернета(например, есть на сайте DelphiGFX) Распаковываете его. Затем заходите в папку ...\BIN\ И запускаете файл install_for(?).exe, где (?) - номер вашей версии Delphi. Запускаете Дельфу. И там, где у вас различные компоненты (типа, Standard или Win32) есть и DelphiX. Он находится в самом конце списка, но вы можете легко перенести его вперед, нажав на properties.

  Все готово для работы, приступим.

УРОК 1

   Запускаем Delphi и создаем новое приложение File=>New application
   Сворачиваем форму (Form1) и делаем следующие изменения:

Как было:

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;

Как надо:

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DXClass;

type
TForm1 = class(
TDXForm)
private
{ Private declarations }
public
{ Public declarations }
end;

   Это поможет нам избезать ошибок, которые могут возникнуть при работе компонентов DelphiX с TForm.

   Теперь создадим поле для рисования. Это компонент DXDraw. Находим его, как на рисунке.

  Ставим его на форму. Размером 640х480 или как вам больше нравится. Меняем свойство Align на AlClient, Deisplay.BitCount с 8 на 16 или 32. И там же cтавим наше разрешение в пунктах Height = 640, Width = 480. Изменим имя (name) на DXDraw без 1.

  Чтобы изображение каждый раз менялось, а не было похоже на картину "Застывший от Ужаса в сортире", ставим DXTimer. Вот он:

Ставим параметр Interval на 0, а enabled на false. Теперь изменим события (Events) DXDraw. OnInitialize: пишем там

DXTimer1.Enabled := True; //включаем таймер

   А в событии OnFinalize пишем

DXTimer1.Enabled := false; //выключаем таймер

   Теперь переходим непосредственно к отрисовке. В событии DXTimer'а - OnTime пишем

if not DXDraw.CanDraw then exit; // Если система не может найти DirectX, то выходим

DXDraw.Surface.Fill(0); // Заполняем всё черным, т.е. очищаем экран

   Здесь мы можем рисовать линии, точки и т.д. а так же выводить текст.

with DXDraw.Surface.Canvas do // на канве DXDraw делаем чего - нить
begin
Brush.Style := bsClear;
// Задаем стиль кисти
Font.Color := clWhite; // Цвет текста - белый
Font.Size := 20; // Размер шрифта
Textout(30, 30, 'Hello World'); // Выводим легендарную фразу

Release; // реализуем
end; // заканчиваем работу с поверхностью

DXDraw.Flip; // "тик" DDraw

  Теперь сделаем быстрых выход из программы и переход в полноэкранный режим.

 У формы изменяем свойство KeyPreview на true. В событии формы OnKeyDown пишем:

 Выход из программы 
if Key=VK_ESCAPE then
Close;

 Меняем режим экрана по Alt+Enter 
if (ssAlt in Shift) and (Key=VK_RETURN) then
begin
DXDraw.Finalize;

if doFullScreen in DXDraw.Options then
begin
RestoreWindow;

DXDraw.Cursor := crDefault;
BorderStyle := bsSizeable;
DXDraw.Options := DXDraw.Options - [doFullScreen];
end else
begin
StoreWindow;

DXDraw.Cursor := crNone;
BorderStyle := bsNone;
DXDraw.Options := DXDraw.Options + [doFullScreen];
end;

DXDraw.Initialize;
end;

  Вот  и всё. Мы создали бланк приложений с DelphiX. Сохраните и создайте резервную копию.

Продолжение уроков в следующих статьях.
Если возникли какие-нибудь вопросы, то пишите...


-









 
 

Copyright © Pascal 2000 - 2002
Дизайн: Понидилок Андрей

Hosted by uCoz