77 lines
1.7 KiB
Text
77 lines
1.7 KiB
Text
type
|
|
TColorFuncX = function (x : Integer) : Integer;
|
|
|
|
type
|
|
TSquareBoard = class
|
|
Scale : Integer;
|
|
Pix : array of array of Integer;
|
|
|
|
constructor Create(aScale : Integer);
|
|
begin
|
|
Scale := aScale;
|
|
Pix := new Integer[aScale*12+1, aScale*12+1];
|
|
end;
|
|
|
|
method Print;
|
|
begin
|
|
var i, j : Integer;
|
|
for i:=0 to Pix.High do begin
|
|
for j:=0 to Pix.High do begin
|
|
case Pix[j, i] of
|
|
1 : Print('.');
|
|
2 : Print('#');
|
|
else
|
|
Print(' ');
|
|
end;
|
|
end;
|
|
PrintLn('');
|
|
end;
|
|
end;
|
|
|
|
method DrawCircle(cx, cy, cr : Integer; color : TColorFuncX);
|
|
begin
|
|
var rr := Sqr(cr*Scale);
|
|
var x, y : Integer;
|
|
for x := 0 to Pix.High do begin
|
|
for y := 0 to Pix.High do begin
|
|
if Sqr(x-cx*Scale)+Sqr(y-cy*Scale)<=rr then
|
|
Pix[x, y] := color(x);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
method ColorHalf(x : Integer) : Integer;
|
|
begin
|
|
if (x<6*Scale) then
|
|
Result:=1
|
|
else Result:=2;
|
|
end;
|
|
|
|
method ColorYin(x : Integer) : Integer;
|
|
begin
|
|
Result:=2;
|
|
end;
|
|
|
|
method ColorYang(x : Integer) : Integer;
|
|
begin
|
|
Result:=1;
|
|
end;
|
|
|
|
method YinYang;
|
|
begin
|
|
DrawCircle(6, 6, 6, ColorHalf);
|
|
DrawCircle(6, 3, 3, ColorYang);
|
|
DrawCircle(6, 9, 3, ColorYin);
|
|
DrawCircle(6, 9, 1, ColorYang);
|
|
DrawCircle(6, 3, 1, ColorYin);
|
|
end;
|
|
|
|
end;
|
|
|
|
var sq := new TSquareBoard(2);
|
|
sq.YinYang;
|
|
sq.Print;
|
|
|
|
sq := new TSquareBoard(1);
|
|
sq.YinYang;
|
|
sq.Print;
|