Составьте программу рисования на экране снеговика. Радиус меньшего круга и координаты центра этого круга необходимо задавать в диалоге — Pascal(Паскаль)

uses crt,graph;
var xc,yc,gd,gm,mx,my,r,w,h:integer;
    x1,y1,x2,y2,x3,y3,x4,y4:integer;
begin
{зайдем в граф. режим, определим размеры экрана}
gd:=0;
initgraph(gd,gm,'');
mx:=getmaxX;
my:=getmaxY;
restorecrtmode;{вернемся в текстовый}
clrscr;
repeat
write('Radius [10..40] r=');{оптимальные размеры меньшего радиуса}
readln(r);
until r in [10..40];
repeat
write('Х [',2*r,'..',mx-2*r,']  xc=');{коодината Х, чтобы вошло на экран}
readln(xc);
until(xc>=2*r)and(xc<=mx-2*r);
repeat
write('Y [',2*r,'..',my-9*r,']  yc=');{также координата У}
readln(yc);
until(yc>=r)and(yc<=my-9*r);
gd:=0;
initgraph(gd,gm,'');
{рисуем три белых круга}
setfillstyle(1,15);
fillellipse(xc,yc,r,r);
fillellipse(xc,yc+2*r+r div 2,r+r div 2,r+r div 2);{второй радиус=1,5r}
fillellipse(xc,yc+6*r,2*r,2*r);{третий=2r}
{рисуем ведро - 4 точки, привязанные к радиусу и начальным координатам}
x1:=xc-r;y1:=yc-round(r*cos(pi/3));
x2:=xc+r;y2:=y1;
x3:=xc-r div 2;y3:=y1-r;
x4:=xc+r div 2;y4:=y3;
setcolor(8);
line(x1,y1,x2,y2);
line(x1,y1,x3,y3);
line(x3,y3,x4,y4);
line(x4,y4,x2,y2);
setfillstyle(1,8);
floodfill(xc,y1-2,8);
{рисуем марковку-3 точки, также привязываем}
h:=r div 10;
x1:=xc+r-h;y1:=yc+h;
x2:=x1;y2:=yc-h;
x3:=xc+r+5*h;y3:=yc;
setcolor(12);
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x3,y3,x1,y1);
setfillstyle(1,12);
floodfill(x1+2,yc,12);
readln
end.

Leave a Comment

8 + 1 =