PowerDraw вместе с DelphiX
Автор: Daddy
WEB-сайт: http://daddy.mirgames.ru
Так как у PD нет компонентов ни для работы со звуком ни спрайтового движка, то я советую вам использовать эти компоненты из набора DelphiX! Если со звуком ничего не поменялось, то вот со спрайтовым движком есть проблемы. Дабы вы не мучались и не бились в истерике при разборе кода связанного с движком товарисч Spose уже все исправил. Вам только необходимо поместить на форму DxSpriteEngine из компонентов DelphiX и сбросить в каталог с игрой файл DxSprites.pas из архива, ссылку на который вы сможете найти в конце статьи. К сожалению некоторых, я убрал из движка кучу наворотов (вращающиеся спрайты и фоновые спрайты) хотя при желании вы все легко сможете восстановить. Если не сможете, то напишите нам на форум и я сделаю это сам. Плюс к нему прилагается файл Proced.pas. Он содержит нормальные процедуры загрузки графических файлов формата BMP (не менее 16битных!!! И желательно чтобы ширина и длина изображения была кратна 16) и последующего вывода их на экран. Ещё в архиве находится файл agfunit - исправленая Spos'ом
версия оригинального файла. Добавлена загрузка из потока (Tmemorystream) и исправлена пара глюков. Его тоже желательно ТОЛЬКО ПОДКЛАДЫВАТЬ в каталог с программой перед компиляцией!
Вот они:
- LoadGrafix(pd:TPowerDraw;name:string);
pd - ваш PowerDraw. name - имя каталога в котором лежат картинки которые будут загружаться.
ВНИМАНИЕ!!! У каждой картинки должен быть файл расширения txt с тем же именем со следующим содержанием (по строкам):
- Ширина паттерна (кадра)
- Высота паттерна
- Ширина всей картинки
- Высота всей картинки
- Цвет прозрачности (у меня почему-то работает только clBlack)
Если же все файлы однотипны (одинаковый размер и прочее) то создайте файл all.txt и заполните его соответствующими данными. Несмотря на это, если у какого-то файла будет свой txt, его хар-ки будут грузится именно из него.
- FindImage(name:string):TagfImage;
Находит картинку по ее имени (нужна для приведенных ниже процедур).
- ImDraw(PowerDraw;findimage(ИМЯ КАРТИНКИ);x,y,НОМЕР ПАТТЕРНА,effect:integer);
Рисует нужную паттерн картинки (ИМЯ КАРТИНКИ) на выбраный PowerDraw, по координатам, с эффектами (выберите любой):
- effectNone - просто выводит картинку (без прозрачности)
- effectSrcAlpha - выводит картинку с прозрачным Transparent Color (который был указан в текстовом файле)
- effectSrcColor - выводит картинку прозрачной, так что все темные областе наней становятся более прозрачными нежели светлые - это идеально для рисования огня и дыма!
- effectMultiply - "вливает" картинку в фон
- effectInvMultiply - меняет цвета у картинки и "вливает" ее в фон
- effectNegative - рисует негатив картинки
Остальные эффекты я перечислять не стал, так как они используются другими процедурами (написаными ниже).
- ImFlipDraw(pd:TPowerDraw;name:Tagfimage;x,y,patternnumber,effect:integer); Рисует картинку отражая ее по горизонтали!
- ImStrDraw(pd:TPowerDraw;name:Tagfimage;x,y,width,height,patternnumber,effect:integer); overload; Растягивает или Стягивает картику.
- ImStrDraw(pd:TPowerDraw;name:Tagfimage;x,y,width,height,patternnumber,alpha:integer;ifisalpha:boolean); overload; Растягивает или Стягивает картику + прозрачность (alpha) всей картинки; Последний boolean ни на что не влияет, он просто нужен для различения процедур.
- ImRtDraw(pd:TPowerDraw;name:Tagfimage;x,y,patternnumber,angle,effect:integer); Вращает картинку. Под углом angle (0-360).
- ImDrawSh(pd:TPowerDraw;name:Tagfimage;x,y,patternnumber,angle,alpha:integer); Типа тень от объекта... нужно дорабатывать.
- ImDrawAlpha(pd:TPowerDraw;name:Tagfimage;x,y,patternnumber,alpha:integer); Рисует всю картинку с прозрачностью alpha.
- Dnt(pf:TpowerFont;text:string;x,y,color,center:integer); Выводит текст (text) шрифтом из PowerFont, с изменяемыми координатами и выбираемым цветом. В случае Center = 1 текст будеть центрироваться по координатам (на указаных координатах будет центр рисуемой строки, это нужно для рисования Caption'ов на кнопках и прочего), в любом другом случае текст будет рисоваться от координат.
- printscreen(Форма с PowerDraw); В скобках укажите форму и в каталоге с игрой вы найдете скриншот. (Они никогда не пишутся поверх старых, а всегда создают новые с другими номерами).
Вот и все. Качайте архив с файлами, упоминаемыми в статье.
|