70 lines
2.0 KiB
Plaintext
70 lines
2.0 KiB
Plaintext
program Cuboid_Demo(output);
|
|
|
|
procedure DoCuboid(sWidth, sHeight, Depth: integer);
|
|
const
|
|
widthScale = 4;
|
|
heightScale = 3;
|
|
type
|
|
TPage = array of array of char;
|
|
var
|
|
Cuboid: TPage;
|
|
i, j: integer;
|
|
Width, Height: integer;
|
|
totalWidth, totalHeight: integer;
|
|
begin
|
|
Width := widthScale * sWidth;
|
|
Height := heightScale * sHeight;
|
|
totalWidth := 2 * Width + Depth + 3;
|
|
totalHeight := Height + Depth + 3;
|
|
setlength (Cuboid, totalHeight + 1);
|
|
for i := 1 to totalHeight do
|
|
setlength (Cuboid[i], totalwidth + 1);
|
|
// points
|
|
for i := low(Cuboid) to high(Cuboid) do
|
|
for j := low(Cuboid[i]) to high(Cuboid[i]) do
|
|
Cuboid[i,j] := ' ';
|
|
Cuboid [1, 1] := '+';
|
|
Cuboid [Height + 2, 1] := '+';
|
|
Cuboid [1, 2 * Width + 2] := '+';
|
|
Cuboid [Height + 2, 2 * Width + 2] := '+';
|
|
Cuboid [totalHeight, Depth + 2] := '+';
|
|
Cuboid [Depth + 2, totalWidth] := '+';
|
|
Cuboid [totalHeight, totalWidth] := '+';
|
|
// width lines
|
|
for I := 1 to 2 * Width do
|
|
begin
|
|
Cuboid [1, I + 1] := '-';
|
|
Cuboid [Height + 2, I + 1] := '-';
|
|
Cuboid [totalHeight, Depth + I + 2] := '-';
|
|
end;
|
|
// height lines
|
|
for I := 1 to Height do
|
|
begin
|
|
Cuboid [I + 1, 1] := '|';
|
|
Cuboid [I + 1, 2 * Width + 2] := '|';
|
|
Cuboid [Depth + I + 2, totalWidth] := '|';
|
|
end;
|
|
// depth lines
|
|
for I := 1 to Depth do
|
|
begin
|
|
Cuboid [Height + 2 + I, 1 + I] := '/';
|
|
Cuboid [1 + I, 2 * Width + 2 + I] := '/';
|
|
Cuboid [Height + 2 + I, 2 * Width + 2 + I] := '/';
|
|
end;
|
|
for i := high(Cuboid) downto 1 do
|
|
begin
|
|
for j := 1 to high(Cuboid[i]) do
|
|
write (Cuboid[i,j]);
|
|
writeln;
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
writeln('1, 1, 1:');
|
|
DoCuboid(1, 1, 1);
|
|
writeln('2, 3, 4:');
|
|
DoCuboid(2, 3, 4);
|
|
writeln('6, 2, 1:');
|
|
DoCuboid(6, 2, 1);
|
|
end.
|