51 lines
977 B
ObjectPascal
51 lines
977 B
ObjectPascal
// Класс штампа креста
|
|
uses GraphABC;
|
|
|
|
type
|
|
CrossStamp = class
|
|
x,y,w: integer;
|
|
constructor (xx,yy,ww: integer);
|
|
begin
|
|
x := xx; y := yy;
|
|
w := ww;
|
|
end;
|
|
procedure Stamp;
|
|
begin
|
|
MoveTo(x,y);
|
|
LineTo(x+w,y);
|
|
LineTo(x+w,y+w);
|
|
LineTo(x+2*w,y+w);
|
|
LineTo(x+2*w,y);
|
|
LineTo(x+3*w,y);
|
|
LineTo(x+3*w,y-w);
|
|
LineTo(x+2*w,y-w);
|
|
LineTo(x+2*w,y-2*w);
|
|
LineTo(x+w,y-2*w);
|
|
LineTo(x+w,y-w);
|
|
LineTo(x,y-w);
|
|
LineTo(x,y);
|
|
end;
|
|
procedure MoveOn(dx,dy: integer);
|
|
begin
|
|
x += dx; y += dy;
|
|
end;
|
|
procedure MoveOnRel(a,b: integer);
|
|
begin
|
|
MoveOn(a*w,b*w);
|
|
end;
|
|
function Clone := new CrossStamp(x,y,w);
|
|
end;
|
|
|
|
begin
|
|
var r := new CrossStamp(100,150,20);
|
|
for var k:=1 to 2 do
|
|
begin
|
|
var r1 := r.Clone;
|
|
for var i:=1 to 8 do
|
|
begin
|
|
r1.Stamp;
|
|
r1.MoveOnRel(2,1);
|
|
end;
|
|
r.MoveOnRel(-1,2);
|
|
end;
|
|
end. |