Уменьшить программу - PascalABC.NET
Формулировка задачи:
Уменьшите программу пожалуйста.
Решение задачи: «Уменьшить программу»
textual
Листинг программы
{$reference System.Core.dll}
uses System.Linq, GraphABC;
const
R = 40;
HalfR = R div 2;
K = 1000000000;
D = 4;
var
X, Y: Integer;
Finished := false;
begin
CenterWindow;
x := HalfR; y := HalfR;
var Dirx := 1;
var Diry := 1;
var Kol := 0;
SetSmoothing(false);
LockDrawing;
repeat
Window.Clear;
Finished := Kol > K;
Setpencolor(Finished ? clBlue : clRandom);
DrawPolygon(Enumerable.Range(0, 8).Select((i :integer) ->
new Point(x - D * Ord(Finished) + Round(HalfR * sin(Pi / 8 + Pi / 4 * i)),
y - D * Ord(Finished) - Round(HalfR * cos(Pi / 8 + Pi / 4 * i)))).ToArray());
Redraw;
if Finished then Continue;
if x >= Windowwidth - HalfR Then DirX := -1;
DirY := (Y >= Windowheight - HalfR) ? -1 : (Y <= HalfR) ? 1 : DirY;
DirX := (X >= WindowWidth - HalfR) ? -1 : (X <= HalfR) ? 1 : DirX;
Inc(Kol, Ord(X <= HalfR));
x := x + dirx * d;
y := y + diry * d;
sleep(10);
until Finished;
end.