program asd; uses Graph, crt; var grDriver: Integer; grMode: Integer; ErrCode: Integer; XC,YC:integer; i, r: integer; f: boolean; const n = 10; var x: array[1 .. n + 1] of integer; pnt: array[1 .. n + 1] of PointType; scale: real; sign: integer; begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode <> grOk then begin Writeln('Graphics error:', GraphErrorMsg(ErrCode)); halt; end; XC := GetMaxX div 2; YC := GetMaxY div 2; R := 75; for i:= 1 to n do begin x[i] := Trunc(R*Sin(i*2*Pi/n)); pnt[i].Y := YC+Trunc(R*Cos(i*2*Pi/n)); end; x[n + 1] := x[1]; pnt[n + 1].Y := pnt[1].Y; scale := 1; sign := -1; f := false; repeat setcolor(random(16)); for i := 1 to n + 1 do pnt[i].X := XC + trunc(x[i] * scale); drawpoly(n + 1, pnt); delay(5000); if keypressed then f := true; Setcolor(black); drawpoly(n + 1, pnt); if (scale + sign * 0.1 < 0) or (scale + sign * 0.1 > 1) then sign := -sign; scale := scale + sign * 0.1; Until f; CloseGraph; end.