Решение задач с использованием графических объектов в Delphi
В объектно-ориентированном программировании основным элементом является объект, который содержит данные и код. Хранение данных и кода в одном объекте позволяет облегчить поиск и исправление ошибок в программе. Взаимодействие между объектами происходит посредством сообщений, т.е. объекты взаимодействуют между собой, посылая и получая сообщения.
Объект – это совокупность свойств и методов, а также событий на которые он может реагировать. Все объекты наделены определенными свойствами, которые выделяют объект их множества других объектов. Объект обладает качественной определенностью, т.к. объект можно представить перечислением присущих ему свойств. Свойства объектов различных классов могут «пересекаться», т.е. возможны объекты обладающие одинаковыми свойствами. Одним из свойств объекта является метод его обработки.
Рисунок 1. |
Одним из основных составных частей Delphi является Инспектор Объектов (Object TreeView) (рис.1). Информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Инспектор Объектов состоит из двух страниц: первая – это список свойств, вторая – список событий. Каждую страницу можно использовать для определения поведения данного компонента.
Создадим объектный тип, который будет являться прародителем целого семейства разнообразных графических образов, обладающих некоторыми общими характеристиками, а именно
1. x, y – координаты левого верхнего угла прямоугольника, описанного около объекта;
2. color – его цвет.
Кроме того, наши объекты будут обладать следующими свойствами. Каждый из них может быть
1. создан вызовом специальной процедуры – конструктора create;
2. нарисован цветом color вызовом процедуры show;
3. спрятан вызовом процедуры hide (т.е. нарисован цветом фона);
4. перемещен вызовом процедуры move (т.е. спрятан, затем, после изменения координат на величину смещения по каждой из осей, нарисован вновь).
В набор процедур добавим процедуру draw. Процедура draw в классе-прародителе пустая. Этот метод для объектов-потомков будет определять вид фигурки, которую мы будем рисовать. Для того чтобы конкретный вид фигурки потомка можно было бы задавать на этапе выполнения программы, процедура draw объявлена виртуальной.
Итак, опишем родительский тип GOb следующим образом:
type Gob = class
x, y : integer;
color : TColor;
constructor create(ax, ay : integer; acolor:TColor);
procedure draw(acolor : TColor); virtual;
procedure show;
procedure hide;
procedure move(dx, dy : integer);
end;
Описание родительского класса в модуле располагается в разделе interface. В разделе implementation запишем реализацию методов, объявленных в описании класса (при реализации заголовки методов дополняются именем класса):
constructor GOb.create;
begin
inherited create; x:=ax; y:=ay; color:=acolor
end;
procedure GOb.draw;
begin end;
procedure GOb.show;
begin draw(color) end;
procedure GOb.hide;
begin draw(form1.color) end;
procedure GOb.move;
begin hide; x:=x + dx; y:=y + dy; show end;
Конструктор Gob.create сначала вызывает родительский конструктор create, который должен создать объект как динамическую переменную. Вызов любого метода родительского класса достигается с помощью зарезервированного слова inherited. Типичное действие, реализуемое конструктором, состоит в наполнении объектных полей конкретными значениями. В нашем примере конструктор create класса GOb получает все необходимые для полного определения объекта данные через параметры ax, ay, acolor.
Процедура draw предназначена для вычерчивания графического объекта. Эта процедура будет реализовываться в потомках класса Gob по-разному. Например, для рисования точки (объект point) достаточно записать: form1.Canvas.Pixels[x,y]:=acolor. Объект класса GOb абстрактный и не предназначен для вывода на экран. Однако наличие процедуры draw в этом объекте позволяет любому потомку класса GOb, имеющему свой собственный метод draw, пользоваться методами show, hide и move своего предка – класса GOb. Таким образом, методы show, hide и move родительского класса GOb будут использовать метод draw своего потомка.
При трансляции объекта, содержащего виртуальные методы, создаётся так называемая таблица виртуальных методов (VMT – Virtual Method Table), количество элементов которой равно количеству виртуальных методов объекта. В этой таблице будут храниться адреса точек входа в каждый виртуальный метод. В нашем примере VMT для GOb хранит адрес метода draw. Когда мы создаём объект-потомок GOb, то его VMT содержит адрес соответствующего метода draw. Такая процедура называется поздним связыванием объекта. Позднее связывание позволяет методам родителя обращаться к виртуальным методам своих потомков и использовать их для реализации специфичных для потомков действий. Поскольку абстрактный объект класса GOb не предназначен для вывода на экран, его метод draw ничего не делает. Однако методы Hide, Show и Move "знают" формат вызова этого метода и реализуют необходимые действия, обращаясь к методам draw своих потомков через соответствующие VMT. Таким образом, в Delphi полиморфизм достигается не только механизмом наследования и перекрытия методов родителя, но и их виртуализацией, позволяющей родительским методам обращаться к методам потомков.
Используя родительский тип GOb, изобразим движение миньона Кевина, нарисованного на картинке (рис.2), где одна клетка – одни пиксель, вертикально вниз. Белые клетки соответствуют цвету фона – form1.color.
Рисунок 2. |
Назовем новый класс, являющийся потомком класса Gob, именем simsprite.
Определим тип
type imager = array[0..72,0..72] of byte;
Свойство Color задаёт цвет фона обычных ячеек. В Инспекторе Объектов свойство Color задаётся выпадающим списком, в котором константа − название цвета иллюстрируется цветным окошком, показывающим, что это за цвет. Для цвета ячеек можно задать абсолютное значение цвета, не зависящее от настроек Windows.
Для нашего миньона цвета мы будем использовать 9 цветов, где 0 – жёлтый, 1 – серый, 2 – оливковый, 3 – красный, 4 – синий, 5 – голубой, 6 – темно-бордовый, 7 – черный, 8 – цвет фона формы (белый).
Вид фигурки, создаваемой методом draw, определим с помощью типизированной константы bug, имеющей тип imagearr, т.е. массив 73×73 целых чисел. Для того чтобы занести в массив bug цвет каждого пиксела рисунка, перенумеруем используемые для рисования цвета с помощью процедуры:
function col(k:byte):tcolor;
begin
case k of
0 : col:=clyellow;
1 : col:=clgray;
2 : col:=clolive;
3 : col:=clred;
4 : col:=acolor;
5 : col:=claqua;
6 : col:=clmaroon;
7 : col:=clblack;
8 : col:=form1.color;
end;
Описание типа формы:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
Текст модуля:
type imagearr = array[0..72,0..72] of byte;
type Gob = class
x, y : integer;
color : TColor;
constructor create(ax, ay : integer; acolor : TColor);
procedure draw(acolor:TColor); virtual;
procedure show;
procedure hide;
procedure move(dx, dy:integer);
end;
type simsprite = class(GOb)
image : imagearr;
constructor create(aimage:imagearr; ax, ay:integer; acolor:tcolor);
procedure draw(acolor:TColor); override;
end;
var Form1: TForm1; a : simsprite;
implementation
{$R *.dfm}
constructor GOb.create;
begin inherited create; x:=ax; y:=ay; color:=acolor end;
procedure GOb.draw;
begin end;
procedure GOb.show;
begin draw(color) end;
procedure GOb.hide;
begin draw(form1.color) end;
procedure GOb.move;
begin hide; x:=x+dx; y:=y+dy; show end;
constructor simsprite.create;
begin
inherited create(ax, ay, acolor); image:=aimage;
end;
procedure simsprite.draw(acolor:TColor);
var i, j : byte;
function col(k:byte):tcolor;
begin
case k of
0 : col:=clyellow;
1 : col:=clgray;
2 : col:=clolive;
3 : col:=clred;
4 : col:= acolor;
5 : col:=claqua;
6 : col:=clmaroon;
7 : col:=clblack;
8 : col:=form1.color;
end
end;
Зададим размер объекта:
begin
if acolor<>form1.Color then
for i:=0 to 72 do for j:=0 to 72 do
form1.Canvas.Pixels[x + j, y + i]:=col(image[i, j])
else
for i:=0 to 72 do for j:=0 to 72 do
form1.Canvas.Pixels[x + j, y + i]:=form1.color
end;
Матрица спрайта:
procedure TForm1.FormPaint(Sender: TObject);
const bug : imagearr = (Приложение 1)
Подробное описание матрицы находится в приложении 1.
Координаты расположения объекта:
begin a:=simsprite.create(bug, 130, 30, clblue); a.show; end;
Зададим скорость объекта:
procedure TForm1.Timer1Timer(Sender: TObject);
begin a.move(0, 10); end;
end.
Полный текст программы приведен в приложении 2.
Запустив программу, получим передвигающегося вертикально вниз по экрану (Миньон Кевин) миньона Кевина, который будет маленький квадратный объект. Результат программы представлен в приложении 3.
Полученный объект можно назвать спрайтом, т.к. спрайт − это графический объект в компьютерной графике. Он представляет собой растровое изображение и как правило небольшого размера, которое перемещается по экрану. Является одним из важнейших графических элементов двухмерных компьютерных игр.
Заключение
Delphi является объектно-ориентированным и структурированным языком программирования. Среда программирования Delphi 7 сильно упрощает разработку программ, благодаря этому мы видим объекты такими, какими они появляются в ходе исполнения программы. Все это снимает необходимость проведения множества операций вручную. После того, как объект помещен в специальную форму среды визуального программирования, все его атрибуты сразу же отображаются в виде кода. Delphi очень популярен на сегодняшний день среда. Скорость, эффективность и простота системы и объясняют её популярность.
В языке программирования Delphi имеется несколько классов и компонентов. Я изучила их свойства и функции. В ходе решения задачи с использованием графического объекта узнала, что такое объект. И на примере моего созданного проекта я наглядно рассмотрела все свойства и функции объектов.
Объектом в задаче был герой из популярного мультфильма «Миньоны». На сегодняшний день это актуально, так как за 2015 год мультфильм пользуется большой популярностью. С каждым днем персонажи появляются в продаже на одежде, на бытовых предметах, на школьных принадлежностях, в виде игрушек и т.п. Появилось также и множество игр. Поэтому тема актуальна и движущейся герой может представить большой интерес как для взрослых , так и для детей. Из получившегося объекта миньона Кевина, люди старшего возраста могут разработать компьютерную игру, а для младшего возраста может помочь в математике или информатике.
Список литературы:
1. Садовская О. Б. Программирование в среде Delphi. Часть 4. Файлы: Учебное пособие. - Воронеж: Изд-во ВГУ, 2006. - 39 с.
2. Культин Н. Б. Программирование в Turbo Pascal 7.0 и Delphi. 1999г.
3. В.Кучеренко. Тонкости программирования на Delphi. Серия книг «Кратко, доступно, просто» - М.: «Познавательная книга плюс», 2000. – 192с.
4. Бобровский С.И. Delphi 5: начальный курс. М.: «Десс», «Информ-ком-Пресс», 1999. – 272с.
5. Гофман В.Э., Хомоненко А.Д. Delphi. Быстрый старт. — СПб.: БХВ-Петербург, 2003. — 288 с.
6. Фленов М.Е. Библия Delphi. – 3-е изд., перераб. и доп. – СПб.: БХВ-Петербург, 2011. – 688 с.: ил. + CD-ROM.
7. Попов В.Б. Delphi для школьников. – М.: Финансы и статистика,2010. – 320 с.
8. Архангельский А.Я. Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .NET. – М.: ООО «Бином-Пресс»,2011 – 1152с.
9. Лесневский А.С. Объектно−ориентированное программирование для начинающих. М.: Бином. Лаборатория знаний, 2005 – 232с. ISBN: 978-5-94774-251-9 DJVU.
10. Хомоненко А., Гофман В., Мещеряков М. Delphi 7. – М.: БХВ-Петербург, 2010 – 1137С. ISBN: 978-5-9775-0425-6.
ПРИЛОЖЕНИЕ 1
Матрица спрайта
const bug : imagearr =
((8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,7,8,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,7,8,8,8,8,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,7,8,8,8,7,8,8,7,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,7,8,0,0,0,0,0,0,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,8,8,8,8,8,8,8,8,8,8,8,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,8,8,8,8,8,8,8,8,8,8,2,2,2,8,8,8,2,2,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,8,8,8,0,1,1,1,0,0,8,8,8,8,8,8,8,8,8,8,2,2,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,1,1,0,8,8,8,8,8,8,0,0,1,0,0,8,8,8,8,8,8,8,8,8,8,2,2,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,1,0,8,8,8,8,0,1,1,1,1,1,0,8,8,8,8,8,8,8,8,0,1,1,0,0,8,8,8,8,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,0,0,8,8,8,8,8,8,0,1,1,1,0,8,8,8,8,8,8,8,8,8,8,0,1,1,2,0,8,8,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,8,8,8,8,8,8,8,8,8,0,1,1,0,8,8,8,8,6,6,8,8,8,8,0,1,1,2,2,8,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,0,8,8,8,8,8,8,8,8,8,8,1,1,0,8,8,8,6,7,7,6,8,8,8,0,1,1,2,2,2,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,8,8,8,8,8,8,8,8,8,8,8,0,1,0,8,8,8,6,7,7,6,8,8,8,0,1,1,2,2,2,2,8,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,1,8,8,8,8,8,6,6,8,8,8,8,0,1,0,8,8,8,6,6,6,6,8,8,8,0,1,1,0,2,2,2,8,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,1,8,8,8,8,6,7,7,6,8,8,8,0,1,1,0,8,8,8,6,6,8,8,8,0,1,1,0,0,0,0,2,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,2,2,1,1,8,8,8,8,6,7,7,6,8,8,8,0,1,1,1,0,8,8,8,8,8,0,0,1,1,0,0,0,0,0,0,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,1,1,0,8,8,8,8,6,6,8,8,8,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,8,8,8,8,8,0,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,2,1,1,1,0,8,8,8,8,8,8,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,8,8,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,2,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,8,8,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,3,3,8,8,8,3,8,8,8,3,0,0,0,0,0,0,0,4,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,8,8,8,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,4,4,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,8,8,8,3,3,0,0,0,0,0,0,0,0,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,0,0,0,0,0,0,0,0,0,0,3,3,3,8,8,8,3,8,8,8,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,4,4,4,4,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,4,4,4,4,4,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,5,7,7,7,5,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,0,0,0,8,8,8,8,8,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,0,0,0,0,8,8,8,8,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,8,2,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,2,2,2,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,5,7,7,5,5,5,4,4,4,4,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,0,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,8,8,8,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,8,8,8,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,8,8,8,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,8,8,8,8,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,6,6,8,8,8,8,8,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,7,7,7,7,7,8,8,8,8,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8));
ПРИЛОЖЕНИЕ 2
Полный текс программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormPaint(Sender: TObject);
end;
type imagearr = array[0..72,0..72] of byte;
type Gob = class
x, y : integer;
color : TColor;
constructor create(ax, ay : integer; acolor : TColor);
procedure draw(acolor:TColor); virtual;
procedure show;
procedure hide;
procedure move(dx, dy:integer);
end;
type simsprite = class(GOb)
image : imagearr;
constructor create(aimage:imagearr; ax, ay:integer; acolor:tcolor);
procedure draw(acolor:TColor); override;
end;
var Form1: TForm1; a : simsprite;
implementation
{$R *.dfm}
constructor GOb.create;
begin inherited create; x:=ax; y:=ay; color:=acolor end;
procedure GOb.draw;
begin end;
procedure GOb.show;
begin draw(color) end;
procedure GOb.hide;
begin draw(form1.color) end;
procedure GOb.move;
begin hide; x:=x+dx; y:=y+dy; show end;
constructor simsprite.create;
begin
inherited create(ax, ay, acolor); image:=aimage;
end;
procedure simsprite.draw(acolor:TColor);
var i, j : byte;
function col(k:byte):tcolor;
begin
case k of
0 : col:=clyellow;
1 : col:=clgray;
2 : col:=clolive;
3 : col:=clred;
4 : col:=acolor;
5 : col:=claqua;
6 : col:=clmaroon;
7 : col:=clblack;
8 : col:=form1.color;
end
end;
begin
if acolor<>form1.Color then
for i:=0 to 72 do for j:=0 to 72 do
form1.Canvas.Pixels[x + j, y + i]:=col(image[i, j])
else
for i:=0 to 72 do for j:=0 to 72 do
form1.Canvas.Pixels[x + j, y + i]:=form1.color
end;
procedure TForm1.FormPaint(Sender: TObject);
const bug : imagearr =
((8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,7,8,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,7,8,8,8,8,7,8,8,7,8,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,8,7,8,8,8,7,8,8,7,8,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,8,8,7,8,0,0,0,0,0,0,8,8,8,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,8,8,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,8,8,8,8,8,8,8,8,8,8,8,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,1,1,1,0,0,8,8,8,8,8,8,8,8,8,8,2,2,2,8,8,8,2,2,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,0,0,8,8,8,0,1,1,1,0,0,8,8,8,8,8,8,8,8,8,8,2,2,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,1,0,0,0,0,1,1,0,0,1,1,1,0,8,8,8,8,8,8,0,0,1,0,0,8,8,8,8,8,8,8,8,8,8,2,2,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,1,0,8,8,8,8,0,1,1,1,1,1,0,8,8,8,8,8,8,8,8,0,1,1,0,0,8,8,8,8,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,0,0,8,8,8,8,8,8,0,1,1,1,0,8,8,8,8,8,8,8,8,8,8,0,1,1,2,0,8,8,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,1,1,8,8,8,8,8,8,8,8,8,0,1,1,0,8,8,8,8,6,6,8,8,8,8,0,1,1,2,2,8,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,0,8,8,8,8,8,8,8,8,8,8,1,1,0,8,8,8,6,7,7,6,8,8,8,0,1,1,2,2,2,8,8,8,8,8,2,2,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,8,8,8,8,8,8,8,8,8,8,8,0,1,0,8,8,8,6,7,7,6,8,8,8,0,1,1,2,2,2,2,8,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,1,8,8,8,8,8,6,6,8,8,8,8,0,1,0,8,8,8,6,6,6,6,8,8,8,0,1,1,0,2,2,2,8,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,1,1,1,8,8,8,8,6,7,7,6,8,8,8,0,1,1,0,8,8,8,6,6,8,8,8,0,1,1,0,0,0,0,2,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,2,2,1,1,8,8,8,8,6,7,7,6,8,8,8,0,1,1,1,0,8,8,8,8,8,0,0,1,1,0,0,0,0,0,0,8,8,8,8,2,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,1,1,0,8,8,8,8,6,6,8,8,8,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,8,8,8,8,8,0,2,2,2,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,2,1,1,1,0,8,8,8,8,8,8,0,0,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,8,8,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,2,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,8,8,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,0,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,8,3,3,8,8,8,3,8,8,8,3,0,0,0,0,0,0,0,4,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,8,8,8,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,4,4,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3,8,8,8,3,3,0,0,0,0,0,0,0,0,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,0,0,0,0,0,0,0,0,0,0,3,3,3,8,8,8,3,8,8,8,0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,4,4,4,4,7,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,4,4,7,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,7,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,4,4,4,4,4,0,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,5,7,7,7,5,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,0,0,0,0,8,8,0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,0,0,0,8,8,8,8,8,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,0,0,0,0,8,8,8,8,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,0,0,0,0,0,8,2,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,7,7,7,7,5,5,4,4,4,4,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,0,0,0,0,2,2,2,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,5,5,5,7,7,5,5,5,4,4,4,4,4,4,0,0,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,0,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,2,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,2,2,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,8,8,8,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,8,8,8,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,4,4,8,8,8,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,4,4,4,4,4,4,8,8,8,8,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,6,6,8,8,8,8,8,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,6,6,6,6,6,8,8,8,8,6,6,6,6,6,6,6,6,6,6,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,7,7,7,7,7,8,8,8,8,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8),
(8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8));
begin a:=simsprite.create(bug, 130, 30, clblue); a.show; end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin a.move(0, 10); end;
end.
ПРИЛОЖЕНИЕ 3
Результат программы