Тема: незрозуміла помилка
вискакує помилка 7 Found 'private' but expected ';', я просто не розумію чого, вроді все правильно написав
Unit Figura;
interface
type
tLocation = object
private
x, y: Integer;
public
constructor Init(InitX, InitY: Integer);
procedure SetX(NewX: Integer);
procedure SetY(NewY: Integer);
function GetX: Integer;
function GetY: Integer;
procedure Draw; virtual;
procedure Hide; virtual;
procedure Move(NewX, NewY: Integer);
end;
tPoint = object(tLocation)
private
color: Word;
public
constructor Init(InitX, InitY: Integer; InitColor: Word);
procedure Draw; virtual;
procedure Hide; virtual;
end;
tLine = object(tPoint)
private
dx, dy: Integer;
public
constructor Init(InitX, InitY, InitX2, InitY2: Integer; InitColor: Word);
procedure SetX2(NewX2: Integer);
procedure SetY2(NewY2: Integer);
function GetX2: Integer;
function GetY2: Integer;
procedure Draw; virtual;
procedure Hide; virtual;
end;
tCircle = object(tPoint)
private
r: Word;
fillColor: Word;
public
constructor Init(InitX, InitY: Integer; InitR, InitColor,
InitFillColor: Word);
procedure SetR(NewR: Word);
function GetR: Word;
procedure Draw; virtual;
procedure Hide; virtual;
end;
tPlane = object
private
cir: tCircle;
lines: array[1..9] of tLine;
public
constructor Init(InitX, InitY: Integer);
procedure Draw;
procedure Move(dx, dy: Integer);
end;
implementation
Uses Crt, Graph;
constructor tLocation.Init(InitX, InitY: Integer);
begin
x := InitX;
y := InitY;
end;
procedure tLocation.SetX(NewX: Integer);
begin
x := NewX;
end;
procedure tLocation.SetY(NewY: Integer);
begin
y := NewY;
end;
function tLocation.GetX;
begin
GetX := x;
end;
function tLocation.GetY;
begin
GetY := y;
end;
procedure tLocation.Draw;
begin
end;
procedure tLocation.Hide;
begin
end;
procedure tLocation.Move(NewX, NewY: Integer);
begin
Hide;
x := NewX;
y := NewY;
Draw;
end;
constructor tPoint.Init(InitX, InitY: Integer; InitColor: Word);
begin
tLocation.Init(InitX, InitY);
color := InitColor;
end;
procedure tPoint.Draw;
begin
PutPixel(x, y, color);
end;
procedure tPoint.Hide;
begin
PutPixel(x, y, GetBkColor);
end;
constructor tLine.Init(InitX, InitY, InitX2, InitY2: Integer;
InitColor: Word);
begin
tPoint.Init(InitX, InitY, InitColor);
dx := InitX2 - x;
dy := InitY2 - y;
end;
procedure tLine.SetX2(NewX2: Integer);
begin
dx := NewX2 - x;
end;
procedure tLine.SetY2(NewY2: Integer);
begin
dy := NewY2 - y;
end;
function tLine.GetX2: Integer;
begin
GetX2 := x + dx;
end;
function tLine.GetY2: Integer;
begin
GetY2 := y + dy;
end;
procedure tLine.Draw;
begin
SetColor(color);
Line(x, y, x + dx, y + dy);
end;
procedure tLine.Hide;
begin
SetColor(GetBkColor);
Line(x, y, x + dx, y + dy);
end;
constructor tCircle.Init(InitX, InitY: Integer; InitR, InitColor,
InitFillColor: Word);
begin
tPoint.Init(InitX, InitY, InitColor);
r := InitR;
fillColor := InitFillColor;
end;
procedure tCircle.SetR(NewR: Word);
begin
r := NewR;
end;
function tCircle.GetR: Word;
begin
GetR := r;
end;
procedure tCircle.Draw;
begin
SetColor(color);
Circle(x, y, r);
SetFillStyle(SolidFill, fillColor);
FloodFill(x, y, color);
end;
procedure tCircle.Hide;
begin
SetFillStyle(SolidFill, GetBkColor);
FloodFill(x, y, color);
SetColor(GetBkColor);
Circle(x, y, r);
end;
constructor tPlane.Init(InitX, InitY: Integer);
begin
cir.Init(InitX + 38, InitY + 7, 3, 9, 1);
lines[1].Init(InitX, InitY, InitX + 45, InitY, 1);
lines[2].Init(InitX + 45, InitY, InitX + 60, InitY + 7, 4);
lines[3].Init(InitX + 60, InitY + 7, InitX + 45, InitY + 14, 4);
lines[4].Init(InitX + 45, InitY + 14, InitX, InitY + 14, 1);
lines[5].Init(InitX, InitY + 14, InitX, InitY, 1);
lines[6].Init(InitX, InitY, InitX - 7, InitY - 14, 1);
lines[7].Init(InitX - 7, InitY - 14, InitX + 20, InitY, 1);
lines[8].Init(InitX, InitY + 14, InitX - 7, InitY + 28, 1);
lines[9].Init(InitX - 7, InitY + 28, InitX + 20, InitY + 14, 1);
end;
procedure tPlane.Draw;
var
i: Integer;
begin
cir.Draw;
for i := 1 to 9 do
lines[i].Draw;
end;
procedure tPlane.Move(dx, dy: Integer);
var
x: Integer;
y: Integer;
i: Integer;
begin
x := lines[1].GetX;
y := lines[1].GetY;
Inc(x, dx);
if x < 10 then
x := GetMaxX - 70
else if x > GetMaxX - 70 then
x := 10;
Inc(y, dy);
if y < 20 then
y := GetMaxY - 30
else if y > GetMaxY - 30 then
y := 20;
dx := x - lines[1].GetX;
dy := y - lines[1].GetY;
cir.Move(cir.GetX + dx, cir.GetY + dy);
for i := 1 to 9 do
lines[i].Move(lines[i].GetX + dx, lines[i].GetY + dy);
end;
end.