Как построить дом в pascal abc
Работа с графикой в PascalABC
После запуска PascalABC, по умолчанию, запускается текстовый режим. Для работы с графикой служит отдельное графическое окно.
Чтобы его открыть, необходимо подключить модуль GraphABC. В этом модуле содержится набор процедур и функций, предназначенных для работы с графическим экраном, а также некоторые встроенные константы и переменные, которые могут быть использованы в программах с графикой.
С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.
Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;
Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.
Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметров.
Управление графическим окном
После запуска PascalABC, по умолчанию, запускается текстовый режим. Для работы с графикой служит отдельное графическое окно.
Чтобы его открыть, необходимо подключить модуль GraphABC. В этом модуле содержится набор процедур и функций, предназначенных для работы с графическим экраном, а также некоторые встроенные константы и переменные, которые могут быть использованы в программах с графикой.
С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.
Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;
Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.
Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметров.
Процедуры рисования графических примитивов
Процедуры, используемые для работы с цветом
Процедуры для работы с текстом
Цвета в PascalABC
Пример графической программы, рисующей изображение дома:
Program Domik;
uses Graphabc; //подключение модуля GraphABC
begin
SetWindowWidth(800); //ширина окна программы
SetWindowHeight(600); //высота окна программы
SetPenWidth(3); //толщина пера
SetFontSize(18); //размер шрифта
SetFontColor(clRed); //цвет шрифта
SetFontStyle(fsBold); //жирный стиль шрифта
TextOut(100,100,’Домик’); //текст
Rectangle(200, 300, 600,600); //дом
Circle(400,225, 40); //круг
SetBrushColor(clAqua); //цвет заливки окна
FillRect(300, 400,500,500); //процедура заливки окна
rectangle(300,400,500,500); //окно
Line(400,400,400,500); // окно
Line(300,450,500,450); //окно
Line(200,300,400,150); //крыша
Line(400,150,600,300); //крыша
Line(480,210,480,160); //труба
Line(480,160,520,160); //труба
Line(520,160,520,240); //труба
end.
Программа, рисующая фигурку:
Program Figurka;
uses GraphABC;
begin
SetWindowSize(500, 500); //задаем размер графического окна
SetPenWidth(3); //устанавливаем стиль пера
SetBrushColor(clFuchsia); //устанавливаем цвет кисти
Circle(225,160,50); //рисуем окружность
Line(225,160,225,180); //рисуем линии
Line( 210,190,240,190);
Line( 225,210,225,250);
Line( 100,100,200,260);
Line( 200,260,400,260);
Line( 210,350,200,480);
Line(240,350,250,480);
Rectangle(200,230,250,350); //рисуем прямоугольник SetBrushColor(clLime);
FillRect(0, 480,500,500); //рисуем закрашенный прямоугольник
SetBrushColor(clWhite);
Circle(205,150,10);
Circle(245,150,10);
end.
Практическая работа за компьютером
Задание 1. Определите координаты и составьте программу, выводящую на экран рисунок дома и дерева.
Программа будет иметь вид:
Program domik_2;
uses GraphABC;
var i: integer;
st:string;
begin
SetWindowSize(500, 500);
{Коричневая стена}
SetPenWidth(2);
SetBrushColor(clBrown);
FillRect(100,50,150,100);
{Крыша желтого цвета}
SetPenColor(clBrown);
Line(125,25,80,75);
Line(125,25,170,75);
FloodFill(125, 30,clYellow);
{Крона дерева}
SetPenColor(clGreen);
SetBrushColor(clGreen);
Ellipse(100,150,150,200);
{ствол дерева}
SetBrushColor(clBrown);
FillRect(120,200,130,230);
end.
Задание 2. Используя оператор цикла и введя переменную для пересчета координат по оси x, постройте “поселок”, состоящий из 5 домов. Внесите соответствующие дополнения и изменения в предыдущую программу.
Весь наш «поселок» выстроился вдоль горизонтальной оси экрана — оси X. Построение рисунка начинается с левого верхнего угла стены первого дома — точки с координатами (100, 50). Координата Y не изменяется. Чтобы начать рисовать второй домик, нужно координату X увеличить на 150 (50 точек — ширина первого дома и 100 точек — расстояние между домиками).
Выберем в качестве параметра цикла целочисленную переменную X.
Для всех элементов нашего рисунка абсолютное значение координаты X заменим на относительное. Например, для стены дома процедура для рисования запишется следующим образом:
FillRect(x,50,x+50,100);
Сформулируем условие выполнения цыклических действий для нашей задачи.Какие координаты имеет левый верхний угол пятого дома? Конечное значение выбранного нами параметра цикла x = 700. Тогда условие выполнения цикла записывается так: x<=700.
Словесное описание алгоритма коротко можно записать так:
Переменной цикла x присвоить начальное значение 100. Пока x<=700 выполнять серию действий «Нарисуй дом и дерево», после каждого фрагмента рисунка увеличивать значение переменной цикла на 150.
Программа будет иметь вид:
Program Domik;
uses GraphABC;
var i: integer;
st:string;
x:integer;
begin
SetWindowSize(800, 500);
x:=100;
While x<=700 do
begin
{Коричневая стена}
SetPenWidth(2);
SetBrushColor(clBrown);
FillRect(x,50,x+50,100);
{Крыша желтого цвета}
SetPenColor(clBrown);
Line(x+25,25,x-20,75);
Line(x+25,25,x+70,75);
FloodFill(x+25, 30,clYellow);
{Крона дерева}
SetPenColor(clGreen);
SetBrushColor(clGreen);
Ellipse(x,150,x+50,200);
{ствол дерева}
SetBrushColor(clBrown);
FillRect(x+20,200,x+30,230);
x:=x+150;
end;
end.
Источник
Рисование объектов в Pascal ABC
Выполним несколько простых заданий в Pascal ABC.
1. Рисуем окружность радиусом 50 и центром в точке 100х100.
program graphic;
uses graphABC; {подключаем модуль GraphABC для работы}
begin
circle(100,100,50); {рисуем окружность радиуса 50 центром в точке (100;100)}
end.
Результат показан на рисунке.
2. Изменим радиус окружности с 50 на 60.
program graphic;
uses graphABC; {подключаем модуль GraphABC для работы}
begin
circle(100,100,60); {рисуем окружность радиуса 60 центром в точке (100;100)}
end.
3. Переместим окружность в середину экрана, предварительно рассчитав (приблизительно) координаты центра.
program graphic;
uses graphABC; {подключаем модуль GraphABC для работы}
begin
circle(300,200,60); {рисуем окружность радиуса 60 центром в точке (300;200)}
end.
Координаты центра примерно (300;200).
4. Добавим в текст команду, разрешающую рисовать другим цветом, отличным от белого. Для рисования цветом установим цвет пера с помощью символической константы.
program graphic;
uses graphABC; {подключаем модуль GraphABC для работы}
begin
SetPenColor(clRed); {устанавливаем цвет пера — красный}
circle(300,200,60); {рисуем окружность радиуса 60 центром в точке (300;200)}
end.
5. Закрасим окружность синим цветом.
Это можно сделать двумя способами: с помощью заливки и установив цвет кисти.
В первом случае устанавливается цвет пера, рисуется окружность, затем проводится заливка (функция FloodFill(х,у, color)). х и у – это координаты точки внутри закрашиваемой фигуры.
Во втором случае устанавливается цвет пера и цвет кисти, затем рисуется фигура, уже закрашенная.
Первый способ:
program graphic;
uses graphABC; {подключаем модуль GraphABC для работы}
begin
SetPenColor(clRed); {устанавливаем цвет пера — красный}
circle(300,200,60); {рисуем окружность радиуса 60 центром в точке (300;200)}
FloodFill(300,200, clBlue); {Первый способ – заливка области с центра}
end.
Второй способ:
program graphic;
uses graphABC; {подключаем модуль GraphABC для работы}
begin
SetPenColor(clRed); {устанавливаем цвет пера — красный}
SetBrushColor(clBlue); {Второй способ – установка цвета кисти}
circle(300,200,60); {рисуем окружность радиуса 60 центром в точке (300;200)}
end.
6. Рисуем разноцветного снеговика
program graphic;
uses graphABC; {подключаем модуль GraphABC для работы}
begin
SetPenColor(clBlack); {устанавливаем цвет пера — черный}
{нижний шар}
circle(300,300,80); {рисуем окружность радиуса 80 центром в точке (300;300)}
FloodFill(300,300, clNavy); {заливка области темно-синим цветом}
{средний шар}
circle(300,160,60); {рисуем окружность радиуса 60 центром в точке (300;160)}
FloodFill(300,160, clLime); {заливка области ярко-зеленым цветом}
{верхний шар}
circle(300,60,40); {рисуем окружность радиуса 40 центром в точке (300;60)}
FloodFill(300,60, clFuchsia); {заливка области сиреневым цветом}
end.
7. Рисуем зеленую елку
program graphic;
uses graphABC; { подключаем модуль GraphABC для работы }
begin {начало основного блока операторов программы}
SetPenColor(clGreen); {установка цвета пера – зеленый цвет}
Line(100,400,200,300); {рисуем отрезок из точки (100;400) до точки
(200;300)}
Line(200,300,150,300);
Line(150,300,210,250);
Line(210,250,180,250);
Line(180,250,220,200);
Line(220,200,260,250);
Line(260,250,230,250);
Line(230,250,300,300);
Line(300,300,250,300);
Line(250,300,350,400);
Line(350,400,100,400);
FloodFill(115,390,clGreen); {заливка области зеленым цветом с точки (115;390)}
End.
8. Дорисуем елке ствол, используя оператор Закрашенный прямоугольник.
program graphic;
uses graphABC; { подключаем модуль GraphABC для работы }
begin {начало основного блока операторов программы}
SetPenColor(clGreen); {установка цвета пера — зеленый цвет}
Line(100,400,200,300); {рисуем отрезок из точки (100;400) до точки
(200;300)}
Line(200,300,150,300);
Line(150,300,210,250);
Line(210,250,180,250);
Line(180,250,220,200);
Line(220,200,260,250);
Line(260,250,230,250);
Line(230,250,300,300);
Line(300,300,250,300);
Line(250,300,350,400);
Line(350,400,100,400);
FloodFill(115,390,clGreen); {заливка области зеленым цветом с точки (115;390)}
SetBrushColor(clBrown);{устанавливаем коричневый цвет кисти}
Rectangle(212,400,232,500); {закрашенный прямоугольник внизу зеленой части елки}
End.
9. Нарисуем синий домик под елочкой
program graphic;
uses graphABC; { подключаем модуль GraphABC для работы }
begin {начало основного блока операторов программы}
SetPenColor(clGreen); {установка цвета пера — зеленый цвет}
Line(100,400,200,300); {рисуем отрезок из точки (100;400) до точки
(200;300)}
Line(200,300,150,300);
Line(150,300,210,250);
Line(210,250,180,250);
Line(180,250,220,200);
Line(220,200,260,250);
Line(260,250,230,250);
Line(230,250,300,300);
Line(300,300,250,300);
Line(250,300,350,400);
Line(350,400,100,400);
FloodFill(115,390,clGreen); {заливка области зеленым цветом с точки (115;390)}
SetBrushColor(clBrown);{устанавливаем коричневый цвет кисти}
Rectangle(212,400,232,500); {закрашенный прямоугольник внизу зеленой части елки}
SetPenColor(clNavy); {установка цвета пера — темно-синий цвет}
SetBrushColor(clBlue);{устанавливаем синий цвет кисти}
Rectangle(280,450,330,500); {синий домик}
SetBrushColor(clSkyBlue);{устанавливаем голубой цвет кисти}
Rectangle(295,460,315,480); {голубое окно}
Line(273,460,305,410); {скат крыши}
Line(305,410,337,460); {скат крыши}
FloodFill(305,415,clBlue); {заливка крыши}
Rectangle(299,430,311,442); {голубое окно на чердаке}
End.
Как рисовать объекты и графики функций с помощью циклов в программе Pascal ABC, можно посмотреть здесь.
Источник