Увеличение круга при нажатии клавиши - PascalABC.NET

Формулировка задачи:

Помогите пожалуйста с задачей. Знаю только как сделать крутящийся кружочек Круг движется по окружности. При попадании круга в I четверть он заполняется клеткой, во II четверть - ///, в III - \\\, в IV - точками. При нажатии клавиши стрелка вверх увеличивается его радиус, стрелка вниз - соответственно уменьшается. Выход по Esc.

Код к задаче: «Увеличение круга при нажатии клавиши - PascalABC.NET»

textual
uses graphABC;
var f:boolean;//переменная для выхода из программы 
    r:integer;//радиус круга
procedure KeyDown(Key:integer);
begin
case Key of
VK_Up:r:=r+5;
VK_Down:r:=r-5;
VK_Escape:f:=false
end;
end;
var xc,yc,x,y,r1:integer;
    u:real;
begin
xc:=Window.Width div 2;
yc:=Window.Height div 2;
r:=20;
r1:=110;//радиус вращения круга
f:=true;
Pen.Color:=clred;
Brush.Color:=clRed;
lockdrawing;
u:=0;
repeat
clearwindow;
Brush.Style:=bsClear;
TextOut(100,10,'Стрелка вверх увеличить радиус, стрелка вниз-уменьшить, Esc-выход');
Brush.Style:=bsHatch;
x:=xc+round(r1*cos(u));
y:=yc-round(r1*sin(u));
if(x>xc)and(y<yc)then Brush.Hatch:=bhCross
else if(x<=xc)and(y<yc)then Brush.Hatch:=bhBackwardDiagonal
else if(x<=xc)and(y>=yc)then Brush.Hatch:=bhForwardDiagonal
else Brush.Hatch:=bhPercent40;
Circle(x,y,r);
sleep(50);
u:=u+0.05;
redraw;
OnKeyDown:=KeyDown;
until f=false;
CloseWindow;
end.

6   голосов, оценка 3.333 из 5


СОХРАНИТЬ ССЫЛКУ