Сейчас, в преддверии Нового Года мне хочется Вас немного «повеселить». Предупреждаю, графика в Паскале не для всех веселая тема. Эта статья не будет посвящаться тому, чтобы обучать Вас этому делу. Но, скорее всего, до этого мы дойдем в других статьях.
В этой же — я хочу показать на Вам примерах, чего можно достичь, используя модуль Graph в Паскале, а в компиляторе PascalABC.NET — GraphABC, который работает несколько по-другому. И вот пример простейшей программы для компилятора PascalABC.NET.
Program snegovik; uses graphABC; begin FloodFill(50, 80, clYellow); setpenwidth(3); setwindowsize(400, 500); ellipse(120, 350, 280, 480); circle(200, 300, 60); circle(200, 210, 40); line(170, 120, 230, 120); line(160, 180, 240, 180); line(170, 120, 160, 180); line(230, 120, 240, 180); floodfill(200, 173, clblack); floodfill(200, 123, clblack); setbrushcolor(clblack); circle(190, 200, 5); circle(210, 200, 5); line(200, 210, 220, 220); line(200, 220, 220, 220); line(200, 210, 200, 220); floodfill(204, 214, clblack); setpenwidth(5); line(210, 230, 190, 230); line(70, 320, 170, 250); line(230, 250, 330, 300); line(327, 450, 327, 200); circle(200, 265, 10); circle(200, 300, 10); circle(200, 338, 10); circle(200, 390, 10); circle(200, 428, 10); circle(200, 460, 10); end.
Данная программа нарисует снеговика. setpenwidth(3) — устанавливается толщина кисти,ellipse рисует эллипс.circle(x,y,r) рисует окружность с центром в точке (x,y) радиусом r. Команда FloodFill(x,y,color) принимает 3 параметра и заливает область, начиная из точки с координатами (x,y) цветом color.
Команда Line(x, y, x1, y1) — это линия, а (x,y, x1,y1,) — координаты точек начала и конца отрезка, setbrushcolor(clblack) — устанавливается цвет кисти. Вот пример следующей программы, которая нарисует нарядную новогоднюю елочку.
Program Elka; uses GraphABC; begin for var i := 1 to 100 do begin Pen.Color := RGB(2, 200, i); Line(100 - i, i, 100 + i, i); end; for var i := 1 to 100 do begin Pen.Color := RGB(0, i, 0); Line(100 - i, i + 100, 100 + i, i + 100); end; for var i := 1 to 100 do begin Pen.Color := RGB(0, i, 0); Line(100 - i, i + 200, 100 + i, i + 200); end; Setpenwidth(1); Setpencolor(clBrown); Rectangle(75, 301, 125, 375); FloodFill(77, 350, clBrown); Circle(50, 80, 20); Circle(153, 80, 20); Circle(100, 50, 15); Circle(100, 160, 20); Circle(50, 180, 20); Circle(153, 180, 20); Circle(100, 255, 20); Circle(153, 277, 20); Circle(50, 277, 20); FloodFill(50, 80, clRed); FloodFill(153, 80, clRed); FloodFill(100, 50, clBlue); FloodFill(100, 160, clPurple); FloodFill(50, 180, clYellow); FloodFill(153, 180, clYellow); FloodFill(50, 277, clYellow); FloodFill(100, 255, clRed); FloodFill(153, 277, clYellow); end.
В циклах рисуются треугольники(сама елочка). Причем, они не однотонные, это достигается так, что при увеличении счетчика i изменяется цвет и длина линии, остальные команды упомянуты выше. Я хочу привести пример результата работы уже готовой программы, которая гораздо сложнее предыдущих, кроме того, в ней используется объектно-ориентированное программирование, что намного сложней, чем структурное программирование.
Результат этой программы вы видите на скриншоте компилятора — это анимация. К этой программе мы вернемся позже, когда будем осваивать ООП(объектно-ориентированное программирование).