Графика в Delphi - примеры задач на построение графиков, а также компоненты для графики

Система рационального создания спрайтов

B примере мы рассмотрим Четыре способа создания спрайтов:
1. Аркадный
2. Нерациональный
3. Рациональный
4. Рациональный два
Итак способ первый - Аркадный. Его смысл заключается в том, что процедура создания спрайта описывается в коде заранее, а значит параметры спрайта определены ещё до его появления. Вот пример:

constructor TPlayerSprite.Create(AParent: TSprite);
begin
inherited Create(AParent);
Image := MyForm.ImageList.Items.Find(’PlayerScate’);
Width := Image.Width;
Height := Image.Height;
X := 20;
Y := 240-Height div 2;
Z := 2;
PixelCheck:=true;
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 0/1000;
end;

Минус сей идеи в том, что каждый раз спрайт будет появлятся в одном и том же месте (в примере по Икс=20 и по Игрик=240 минус половину высоты картинки). Такой способ хорош только для аркад - где главный герой появляется строго в заданном месте. Второй способ - нерациональный. Каждому спрайту придумать свое имя (не путать с классом). Покажу на примере как это:

procedure TMainForm.FormCreate(Sender: TObject);
var MASHINA : TplayerSprite; //Вот оно имя спрайта - MASHINA
begin
mashina:=TplayerSprite.create(spriteengine.engine);
with TplayerSprite(mashina) do
begin
Image := MyForm.ImageList.Items.Find(’PlayerScate’);
Width := Image.Width;
Height := Image.Height;
X := 20;
Y := 240-Height div 2;
Z := 2;
PixelCheck:=true;
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 0/1000;
end;
end;

Минус этой идеи в том, что спрайтов можно использовать ограниченное количество (только те которые так описаны и имеют свое имя), таким образом чтобы создать 100 спрайтов надо 100 раз написать эту функцию и придумать 100 разных имен! И вот наконец 3-й - Рациональный способ. Его идея состоит в том, чтобы создать TList добавить в него нужное кол-во спайтов и обработать их в нем. Вот пример для создания сотни спрайтов класса TPlayerSprite стоящих в ряд:

Procedure TMainForm.StartGameScene;
var
i:integer; //Переменная счета
List : Tlist;
begin
List:=Tlist.create;
for i:=1 to 100 do
begin
list.add(TPlayerSprite.create(spriteengine.engine));//Создаем спрайт и добавляем его в TList
with TplayerSprite(list.items[0]) do //Устанавливаем его характеристики
begin
Image := MyForm.ImageList.Items.Find(’PlayerScate’);
Width := Image.Width;
Height := Image.Height;
X := 20+width*i; //Ставим его на место в ряд по номеру
Y := 240-Height div 2;
Z := 2;
PixelCheck:=true;
AnimCount := Image.PatternCount;
AnimLooped := True;
AnimSpeed := 0/1000;
end;
list.clear; //Спрайт готов, и в TList он больше не нужен
end;
list.free; //Спрайты созданы и Tlist нам больше не нужен
end;

У этого варианта нет минусов. Именно “мутации” этой идеи используются в большинстве проффесиональных игр. Совсем забыл вот ещё четвертый:

Type
TOrc = class(TImageSprite) //Орк становится подклассом
public
constructor Create(AParent: TSprite;nx,ny:double);
end;

//А вот сама процедура:
constructor TOrc.Create(AParent: TSprite;nx,ny:double);
begin
inherited Create(AParent);
image:=myform.il.Items.Find(’stand’); //Ну или свою картинку
width:=image.Width;
height:=image.Height;
x:=nx;
y:=ny;
//Тут чего нить свое
end;

Работает как часы! Орк(в примере) создается командой:

Torc.create(spriteengine.engine, *Ваши координаты*);

Надеюсь то что написано в этой статье вам поможет.

Powered WP Ъ скачать delphi, delphi 7, скачать delphi 7, delphi файлы, delphi, компоненты, delphi 2009, delphi программы, delphi бесплатно, delphi скачать, бесплатно работа delphi, delphi создание, delphi строки, программирования delphi, borland delphi, delphi формы