Нарисовать дорожный знак. - Pascal ABC
Формулировка задачи:
Нарисовать этот дорожный знак.
Решение задачи: «Нарисовать дорожный знак.»
textual
Листинг программы
uses graphABC;
var c,r:integer;
begin
setwindowsize(400,400);
centerwindow;
c:=200;
r:=c-10;
circle(c,c,r);
r:=r-15;
setpenwidth(20);
setpencolor(clRed);
circle(c,c,r);
setfontname('Times New Roman');
setfontsize(60);
setbrushstyle(bsClear);
textout(c-35,c+20,'10');
textout(c-17,c+75,'м');
setpenwidth(1);
setpencolor(clBlack);
line(c-65,c+40,c-65,c+120);
line(c-65,c+40,c-105,c+80);
line(c-105,c+80,c-65,c+120);
floodfill(c-70,c+80,clBlack);
line(c+65,c+40,c+65,c+120);
line(c+65,c+40,c+105,c+80);
line(c+105,c+80,c+65,c+120);
floodfill(c+70,c+80,clBlack);
//рама и низ кабины
setbrushcolor(clBlack);
rectangle(c-105,c-20,c+105,c-5);
rectangle(c-105,c-40,c-30,c-20);
//колеса
setpencolor(clWhite);
setbrushcolor(clWhite);
circle(c-65,c-5,20);
circle(c+65,c-5,20);
setpencolor(clBlack);
setbrushcolor(clBlack);
circle(c-65,c-5,18);
circle(c+65,c-5,18);
setpencolor(clWhite);
setbrushcolor(clWhite);
circle(c-65,c-5,12);
circle(c+65,c-5,12);
//кузов
setpencolor(clBlack);
setbrushcolor(clBlack);
rectangle(c-25,c-120,c+100,c-25);
//кабина
line(c-105,c-39,c-85,c-90);
line(c-85,c-90,c-31,c-90);
line(c-31,c-90,c-31,c-40);
floodfill(c-70,c-50,clBlack);
setpencolor(clWhite);
setbrushcolor(clWhite);
line(c-95,c-39,c-40,c-39);
line(c-95,c-39,c-80,c-85);
line(c-80,c-85,c-40,c-85);
line(c-40,c-85,c-40,c-39);
floodfill(c-50,c-60,clWhite);
end.
Объяснение кода листинга программы
- Используется библиотека graphABC, которая предоставляет функции для работы с графикой.
- Переменные c и r инициализируются значением 200 и вычитаются 10, чтобы получить начальные координаты центра окружности.
- Создается окружность с центром в точке (c,c) и радиусом r.
- Устанавливается цвет шрифта на черный и устанавливается размер шрифта на 60 пунктов.
- Выводится текст
10под точкой (c-35,c+20). - Выводится текст
мпод точкой (c-17,c+75). - Устанавливается цвет шрифта на черный и устанавливается размер шрифта на 1 пункт.
- Выполняется линия от точек (c-65,c+40) до (c-65,c+120).
- Выполняется линия от точек (c-65,c+40) до (c-105,c+80).
- Выполняется линия от точек (c-105,c+80) до (c-65,c+120).
- Выполняется floodfill для области под рамкой и над нижней частью кабины.
- Выполняется линия от точек (c+65,c+40) до (c+65,c+120).
- Выполняется линия от точек (c+65,c+40) до (c+105,c+80).
- Выполняется линия от точек (c+105,c+80) до (c+65,c+120).
- Выполняется floodfill для области под рамкой и над верхней частью кабины.
- Устанавливается цвет шрифта на белый и устанавливается размер шрифта на 1 пункт.
- Выводится текст
мпод точкой (c+105,c+80). - Устанавливается цвет шрифта на черный и устанавливается размер шрифта на 60 пунктов.
- Выполняется рама и низ кабины.
- Выполняются колеса.