graph pascal abc



Автор Макс Тихомиров задал вопрос в разделе Другие языки и технологии

Как в Pascal ABC с помощью модуля graph abc нарисовать это и получил лучший ответ

Ответ от
Решение на Pascal ABC
program star;
uses graphabc;
var k, xw, s: integer;
function po (xs, xf, ys, yf: integer; col: color): integer;
var i, g: integer;
begin
g:=10; {время задержки вывода на экран, можно менять от 10 до 500, то есть пауза}
k:=trunc(xw/20);
s:=k-1; {ширина белого зазора между квадратами = 1, можно менять от 0 до k/2-2}
ys:=ys-1;
yf:=yf-1;
xs:=xs-1;
xf:=xf-1;
setpenwidth (1);
setpencolor(col);
if (xf-xs) > (yf-ys) then
for i:=xs to xf do
begin
{if (yf-ys) = 0 then yf:=yf+1;}
rectangle (i*k, round((yf-ys)/(xf-xs)*(i-xs)+ys)*k,i*k+s,round((yf-ys)/(xf-xs)*(i-xs)+ys)*k+s );
floodfill (i*k+trunc(k/2),round((yf-ys)/(xf-xs)*(i-xs)+ys)*k+trunc(k/2), col);
sleep (g);
end
else
for i:=ys to yf do
begin
{if (xf-xs) = 0 then xf:=xf+1;}
rectangle (round((xf-xs)/(yf-ys)*(i-ys)+xs)*k, i*k,round((xf-xs)/(yf-ys)*(i-ys)+xs)*k+s, i*k+s );
floodfill (round((xf-xs)/(yf-ys)*(i-ys)+xs)*k+trunc(k/2),i*k+trunc(k/2), col);
sleep (g);
end;
end;
begin
xw:=800; {размеры экрана можно менять}
setwindowsize (xw,xw);
setwindowtitle ('Star');
{красный цвет - ready}
po (2,5,8,8,clred);
po (3,4,9,9,clred);
po (8,10,5,3,clred);
po (8,10,4,2,clred);
{orangle}
po (4,11,10,3,clOrange);
po (5,11,10,4,clOrange);
po (5,10,11,6,clOrange);
{yeloow}
po (11,12,5,6,clYellow);
po (6,12,11,5,clYellow);
po (6,12,12,6,clYellow);
po (5,11,14,8,clYellow);
{green}
po (12,13,7,8,clLightgreen);
po (4,13,16,7,clLightgreen);
po (4,13,17,8,clLightgreen);
po (5,14,17,8,clLightgreen);
{lightblue}
po (8,15,15,8,clLightblue);
po (10,16,14,8,clLightblue);
po (11,17,14,8,clLightblue);
{blue}
po (12,18,14,8,clblue);
po (12,14,15,13,clblue);
po (13,14,15,14,clblue);
{purple}
po (14,14,15,16,clpurple);
po (15,15,14,16,clpurple);
{pink}
po (15,16,17,16,clpink);
po (16,16,16,17,clpink);
{black}
po (1,6,7,7,clblack);
po (1,5,8,12,clblack);
po (5,3,12,17,clblack);
po (3,5,18,18,clblack);
po (5,7,18,16,clblack);
po (7,10,16,15,clblack);
po (10,13,15,16,clblack);
po (13,15,16,18,clblack);
po (15,17,18,18,clblack);
po (17,17,16,18,clblack);
po (15,17,12,17,clblack);
po (15,19,12,8,clblack);
po (14,19,7,7,clblack);
po (12,13,3,6,clblack);
po (10,12,1,3,clblack);
po (8,10,3,1,clblack);
po (8,7,3,6,clblack);
{eye}
po (8,8,8,10,clblack);
po (11,11,8,10,clblack);
end.
{координата нижняя левая у квадрата}
{код не идеален, т. к. фигура симметричная}
вот код проще, и рисунок легче "my-files.ru/sxjnue" - ссылка

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: Как в Pascal ABC с помощью модуля graph abc нарисовать это
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*