Как рисовать спрайты в DXDraw DelphiX - Delphi, Pascal, ObjectPascal - Программирование
Навигация по сайту
Сайт:

Дополнительно:

Файловый архив:

Каталог статей:

Форум:


Категории раздела
Delphi, Pascal, ObjectPascal [18]
Программирование на Delphi, Pascal, ObjectPascal
C, C++, C# [7]
Программирование на C, C++, C#
ПХП (PHP) [6]
Все что связано с программированием на PHP.
DirectX [0]
Программирование с использованием графического API DirectX
OpenGL [0]
Программирование с использованием графического API OpenGL
Работа с базами данных (БД) [0]
Работа с базами данных MySQL и т.д. Разработка, теории, алгоритмы.
Сетевое программирование [0]
Сетевое программирование, организация сетей.
Программирование игр [0]
Все что связано с программированием игр, организацией их разработки.
Работа с мультимедиа данными [0]
Загрузка, обработка, воспроизведение и все что связано со звуком и видео.
Работа с устройсвами ввода и вывода [0]
Программирование устройств ввода и вывода. Работа с геймпадом, рулем и многим другим.
Программирование HTML 5 игр [0]
Программирование HTML 5 игр, html верстка, JS (JavaScript)
Остальное [0]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Чему вы отдаете большее предпочтение?
Всего ответов: 465

Партнеры сайта
....

 Главная » Статьи » Программирование » Delphi, Pascal, ObjectPascal » Как рисовать спрайты в DXDraw DelphiX

Как рисовать спрайты в DXDraw DelphiX

00:28
Подготовка к использованию:

Для начала допустим, что у нас есть исходная форма Form1 типа TForm
Внести в форму следующие компоненты из вкладки DelphiX
DXSpriteEngine1 - спрайтовый движок DelphiX
DXDraw1 - графический движок DelphiX
DXImageList1 - будущая коллекция наших спрайтов
DXTimer1 - таймер связанный с DXSpriteEngine1
DXInput1 - слежение за мышью/джойстиком/клавиатурой
Изменить тип исходной формы на TDXForm вместо TForm
Внести в DXImageList1 необходимые нам рисунки спрайтов - для этого нужно дважды кликнуть на компоненте и в открывшемся меню выбрать нужные спрайты.
Выставить в компоненте DXImageList1 в поле TDXDraw значение нашего графического движка - DXDraw1, чтобы связать их.
В методе OnCreate нашей формы создаём палитру из цветов выбранных из наших спрайтов и заполняем соответствующие поля графического движка DXDraw1 :
DXImageList1.Items.MakeColorTable;
DXDraw1.ColorTable := DXImageList1.Items.ColorTable;
DXDraw1.DefColorTable := DXImageList1.Items.ColorTable;
DXDraw1.UpdatePalette;

Настраиваем разрешение и др. параметры графического движка DXDraw1 в том же методе OnCreate нашей формы:
//если нам необходим полноэктанный режим
DXDraw1.Options := DXDraw1.Options + [doFullScreen];
DXDraw1.Width := 1024;
DXDraw1.Height := 768;
DXDraw1.Display.Width := 1024;
DXDraw1.Display.Height := 768;
DXDraw1.Display1.BitCount := 32; // глубина цвета
DXForm1.BorderStyle := bsNone; // если нужно убрать рамку формы
DXDraw1.Left := 0;
DXDraw1.Top := 0;
DXDraw1.Cursor := crNone; // если нужно убрать курсор;
// всё - графический движок запущен и готов к использованию.
DXDraw1.Initiate;

Заполняем метод OnTimer компонента DXTimer1 (не забыть выставить поле Interval этого компонента):
// регулярное обновление событий клавиатуры/мыши
DXInput1.Update;
//смещаем все спрайты в целом на 5 шагов
//(правила смещения отдельного спрайта описываются позже в самом спрайте).
DXSpriteEngine1.DoMove (5);
//замораживаем спрайтовый движок;
DXSpriteEngine1.Dead;
//очистка экрана (очень быстрая)
DXDraw1.Surface.Fill(0);
//прорисовываем все спрайты (пока только в памяти)
DXSpriteEngine1.Draw;
//отображаем всё что получилось на экран
DXDraw1.Flip;

После всего этого графический движок уже может нормально функционировать - остаётся только создать и зарегистрировать наши спрайты и их поведение в спрайтовом движке.

Создание фона и спрайтов:
Существует несколько типов спрайтов, которые можно легко использовать в приложении. Необходимо уяснить для себя какими свойствами обладает тот или иной спрайт (как он движется) и ограничить себя необходимым типом:

TSprite - простой неанимированный спрайт - может совершать лишь поступательные движения и неспособен менять свой рисунок.
TImageSrite - простой анимированный спрайт - может совершать поступательные движения и пробегать при этом анимационный ряд (последний интуитивно устанавливается в компоненте DXImageList1).
TImageSpriteEx - самый сложный из доступных - может совершать не только поступательные движения но и вращаться (разумеется в плоскости монитора) да ещё при этом пробегать анимационный ряд.
TBackgroudSprite - фон - неанимирован фиксирован относительно спрайтового движка (хотя можно перемещаться относительно него - при этом он периодически повторяется в бесконечном пространстве)
Для создания спрайта необходимо описать его тип - его начальные данные и поведение.

type
TMySprite = class (TImageSpriteEx);
constructor Create (AParent : TSprite) ; override;
procedure DoMove (movecount : Integer) ; override;
end;

Начальные данные задаются в конструкторе:
constructor TMySprite.Create(AParent : TSprite) ;
begin
//регистрация в спрайтовом движке
inherited Create (AParent);

//задаём картинку или анимационный ряд нашего спрайта - берём их из
//коллекции рисунков DXImageList1
Image := DXForm1.DXImageList1.Items.Find ('мой спрайт.bmp');
Width := Image.Width;
//указываем размеры спрайта как у его рисунка.
Height := Image.Height;
//координата X нашего спрайта;
X :=
//координата Y нашего спрайта;
Y :=
//глубина на которой спрайт находится - если Z спрайта больше,
//чем у других - он всех будет крыть.
Z :=

//Только для анимированных спрайтов:
//указывает сколько рисунков в анимационном ряду.
AnimCount := Image.PatternCount;
AnimLooped := //true - если ряд зациклен, false - если нет
AnimPos := //начальный рисунок в анимационном ряду.

//Только для вращающихся спрайтов
//Angle - угол поворота спрайта - 0 вверх, 64 вправо, 128 вниз,
//192 - влево, 256 - вверх и так далее.

//Только для фона:
//если неоходимо периодически заполнить всё
//пространство одним рисунком, false - если нет такой необходимости.
Tile := true
end;

Конечно же не обязательно описывать всё это в конструкторе - это можно сделать и в runtime после создания спрайта. Сам объект спрайт в runtime создаётся (и регистрируется) обычно, как и все другие объекты - нужно лишь указать наш спрайтовый движок:

MySprite := TMySprite.Create (DXSpriteEngine1.Engine);
И теперь, в общих словах, о поведении спрайтов. Все те свойства, которые были описаны в конструкторе разумеется можно менять. Поведение каждого спрайта должно быть описано в его методе DoMove, который впоследствии автоматически вызывается - когда мы вызываем метод нашего движка DXSpriteEngine1.Move(5) - вызываются автоматически все методы DoMove для всех зарегистрированных спрайтов (причём в данном случае ровно 5 раз). Описание поведения для отдельного спрайта будет выглядеть так:

procedure TMySprite.DoMove (movecount : Integer);
begin
inherited DoMove (movecount);
//а здесь задаём поведение(меняем координаты- X,Y,Z, угол
//поворота - Angle , рисунок в анимационном ряду - AnimPos и т.п.)
end;

И напоследок замечу, что можно менять и положение экрана относительно фона - для этого существуют поля DXSpriteEngine1.Engine.X и DXSpriteEngine1.Engine.Y соответственно.

Если нужна более полная информация или дополнительная - о механизме столкновения и обработке событий клавиатуры через DXInput1 - по всему этому обращайтесь тут же.


Категория: Delphi, Pascal, ObjectPascal | Просмотров: 5792 | Добавил: ДядяВолк (11.08.2010) | Рейтинг: 0.0/0
Теги: DXDraw, Спрайты, как, DelphiX, рисовать
Источник: http://quadrathell.cn.ua/ |
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Уроки по C/C++ (Части с 21 по 40) (0)
Немного о секретах озвучки. (2)
Создание Платформенной Игры Copyright 2001 by Mark Overmars (0)
Начинаем изучать PHP (4)
статьи по Yogurt3D (0)
Пишем игровой сюжет (10)
Создание заставки (Intro) (0)
[Статья] Создаем дополнительное оружие (2)
Создаем анимацию игрока (0)
Синтаксис GML в сравнении с Pascal (1)
Работа с инифайлами (*.ini) (0)
Создание многопользовательской(online) игры на Game Maker. (часть 5) (1)
Урок для начинающих по Game Maker v8 (платформенная игра) (1)
Несколько советов (ГМ) (0)
Создание рикошета пуль от стены (4)
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Поиск по всему сайту:
Поиск по разделу:

Панель пользователя
Здравствуйте, Гость


Ник:
Пароль:
Запомнить :

Ваш IP: 18.97.14.83

Случайные конструкторы

Случайные движки

Случайные статьи

Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0

На сайте были:
Pigeon , Gandis

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2025 Хостинг от uCoz
Топ Разработка игр