- •Лабораторная работа №3 Динамические структуры данных. Класс как динамическая структура данных. Создания пользовательского класса в Delphi.
- •1. Цель работы:
- •2. Порядок выполнения работы и требования к отчету:
- •3. Теоретические сведения
- •4. Задание на лабораторную работу
- •X,y:integer; //текущие координаты точки
- •X,y,w:integer;
- •Implementation
- •I, j:Integer;
X,y,w:integer;
Implementation
{$R *.dfm}
procedure Widt (w:integer);
begin
w:=10;
end;
function Point.GetX:integer;
begin
result:=x;
end;
function Point.GetY:integer;
begin
result:=y;
end;
constructor Point.Create(px,py:integer;c:TColor);
begin
x:=px; // инициализация поля x
y:=py; // инициализация поля у
col:=c;
end;
procedure TForm1.Button1Click(Sender: TObject);
Begin
b:=TBitmap.Create;
b.Height := form1.PaintBox1.Height; // задание размеров плоскости
b.Width := form1.PaintBox1.Width;
b.Canvas.Brush.Color := clSilver; // заполнение черным цветом
b.Canvas.Pen.Color := clred;
b.Canvas.Rectangle(10,10,b.Width,b.Height);
pt:=Point.Create(15,15,clRed); // создание объекта (красная точка с координатами 150,150)
// нарисовать точку в PaintBox1
pt.Draw(b.Canvas);
// копирование на основную плоскость рисования
PaintBox1.Canvas.Draw(0,0,b);
Timer1.Enabled:=true;
Button1.Enabled:=false;
Button2.Enabled:=true;
End;
procedure TForm1.Button2Click(Sender: TObject);
begin
pt.Free; // удаление объекта
Timer1.Enabled:=false;
Button1.Enabled:=true;
Button2.Enabled:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
b.Canvas.Rectangle(0,0,b.Width,b.Height);
if (GetAsyncKeyState(VK_down) and $8000) = $8000
then pt.Move(pt.GetX,pt.GetY+1);
if (GetAsyncKeyState(VK_up) and $8000) = $8000
then pt.Move(pt.GetX,pt.GetY-1);
if (GetAsyncKeyState(VK_left) and $8000) = $8000
then pt.Move(pt.GetX-1,pt.GetY);
if (GetAsyncKeyState(VK_RIGHT) and $8000) = $8000
then pt.Move(pt.GetX+1,pt.GetY);
pt.Draw(b.Canvas);
PaintBox1.Canvas.Draw(0,0,b);
form1.label2.Caption:=inttostr(pt.y);
form1.label1.Caption:=inttostr(pt.x);
end;
procedure point.Move(px,py:integer);
begin
x:=px; // инициализация поля x
y:=py; // инициализация поля у
end;
procedure Point.Draw(canvas:TCanvas);
var
I, j:Integer;
begin
canvas.Pixels[x,y]:=col; // вывод красной точки
for i:=1 to 10 do
Canvas.Ellipse((X-10)+i,(Y-10)+i,(X+10)-i,(y+10)-i);
end;
procedure point.SetColor(c:TColor);
begin
c:=clRed;;
end;
Вывод: Изучил динамические структуры данных – классы.