Содержание
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Графика в Паскале
Для работы с графикой в pascal abc используется модуль GraphABC. Для его подключения используется следующий код:
uses GraphABC; begin . end.
Система координат в Паскале соответствует экранной системе координат и выглядит следующим образом:
Управление цветом
Для того, чтобы использовать цвет, необходимо применить этот цвет к инструменту перо:
- SetPenColor(color) — устанавливает цвет пера, задаваемый параметром color;
- setBrushColor(color) — устанавливает цвет кисти, задаваемый параметром color;
- либо для палитры RGB: SetPenColor(rgb(0-255, 0-255, 0-255));
или использовать для заливки:
После чего можно использовать процедуры для рисования геометрических фигур.
clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый
clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый
clSilver – серебряный
Точки, отрезки и ломаные
Для отображения точки в паскале используется процедура:
SetPixel(x,y,color) — Закрашивает один пиксел с координатами (x,y) цветом color
uses GraphABC; begin SetPixel(300,200,clred); end.
Для рисования линии используется:
Line(x1,y1,x2,y2) — рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2)
uses GraphABC; begin SetPenColor(clgreen); line(100,50,500,250); end.
Ломаные можно рисовать с помощью процедур MoveTo (x1, y1) и LineTo (x2, y2) .
Процедуры работают в паре: MoveTo передвигает курсор в определенную точку, а процедура LineTo рисует линию с этой точки до точки, определенной параметром данной процедуры.
uses GraphABC; begin . SetPenColor(clblue); MoveTo (x1, y1); LineTo (x2, y2); LineTo (x3, y3); LineTo (x4, y4); LineTo (x5, y5); end.
Для установки размеров графического окна используется процедура
SetWindowSize(ширина, высота)
Рисование фигур
uses GraphABC; begin Rectangle(50,50,200,200); end.
uses GraphABC; begin Rectangle(50,50,200,200); FloodFill(100,100,clBlue); end.
Line(x1,y1,x2,y2);
LineTo(x,y);
uses GraphABC; begin setpenwidth(20); setpencolor(clred); moveTo(300,100); lineTo(500,300); lineto(100,300); lineto(300,100); floodfill(300,200,clgreen); end.
uses GraphABC; begin Circle(500,200,100); FloodFill(500,200,clred); end.
uses GraphABC; Begin SetPenWidth(10); Arc(300,250,150,45,135); end.
Функция random для использования окраски
* раскрасить круги случайным цветом
Нарисовать штриховку на Паскале можно, используя процедуры рисования прямоугольника и линии:
Программа будет выглядеть следующим образом:
uses graphABC; var i, x1, x2, y1, y2, N: integer; h, x: real; begin x1 := 100; y1 := 100; x2 := 300; y2 := 200; N := 10; Rectangle (x1, y1, x2, y2); h := (x2 — x1) / (N + 1); x := x1 + h; for i:=1 to N do begin Line(round(x), y1, round(x), y2); x := x + h; end; end.
Анимация в Паскале
Анимация в программировании заключается в том, что сначала рисуется фигура цветным инструментом, затем с тем же координатами рисуется та же фигура белым цветом. После чего происходит сдвиг фигуры и действия повторяются.
uses GraphABC; var x:integer; begin x:=40; repeat SetPenColor(clWhite); Circle(x,100,10); <Рисуем белую окружность>SetPenColor(clBlack); Circle(x,100,10); <Рисуем черную окружность>x:=x+1 <Перемещаемся немного направо>until x>600; end.
Что ты хочешь узнать?
Ответ
var
x, y: integer;
s: string;
b: boolean;
begin
Graphabc.Coordinate.Origin := GraphABC.Window.Center();
Coordinate.SetMathematic();
Coordinate.SetScale(10, 10);
s := ‘(-5; 4), (-7; 4), (-9; 6), (-11; 6), (-12; 5), (-14; 5), (-12; 4), (-14; 3), (-12; 3), (-11; 2), (-10; 2), (-9; 1), (-9; 0), (-8; -2), (0; -3), (3; -2), (19; -2), (4; 0), (19; 4), (4; 2), (2; 3), (6; 9), (10; 11), (3; 11), (1; 10), (-5; 4)’;
foreach a: string in s.Replace(‘), (‘, ‘),(‘).Split(‘,’) do
begin
X := integer.Parse(a.Replace(‘(‘, »).Replace(‘)’, »).Replace(‘ ‘, »).Split(‘;’)[0]);
Y := integer.Parse(a.Replace(‘(‘, »).Replace(‘)’, »).Replace(‘ ‘, »).Split(‘;’)[1]);
if (b) then
GraphABC.LineTo(X, Y)
else
begin
GraphABC.MoveTo(X, Y);
b := true;
end;
end;
end.
Сея программа хоть что нарисует, только координаты смени (тут ласточка, а другие в инете найти можно)
нужно составить рисунки в программе паскаль abc.)
1) белорусский флаг. (верхняя часть — красная, нижняя часть — зелёная). чтобы части флага были закрашенными цветами указанными ранее.
2)ёлка. состоит из трёх треугольников. тоже чтобы треугольники были закрашены.
3)светофор. ну а на нём кружочки) ну и чтобы каждый кружочек был в свой цвет закрашен) (красный, жёлтый, зелёный)
program SadSmiley;
uses graphABC;
function AllFunc():integer;
begin
rectangle(175,450,325,475);
floodfill(200,465,clBlack);
rectangle(325,425,375,450);
floodfill(350,435,clBlack);
rectangle(375,400,400,425);
floodfill(385,410,clBlack);
rectangle(400,375,425,400);
floodfill(410,385,clBlack);
rectangle(425,325,450,375);
floodfill(435,350,clBlack);
rectangle(450,175,475,325);
floodfill(465,250,clBlack);
rectangle(425,125,450,175);
floodfill(435,150,clBlack);
rectangle(400,100,425,125);
floodfill(410,110,clBlack);
rectangle(350,75,400,100);
floodfill(375,85,clBlack);
rectangle(300,50,350,75);
floodfill(325,60,clBlack);
rectangle(200,25,300,50);
floodfill(250,35,clBlack);
rectangle(150,50,200,75);
floodfill(175,60,clBlack);
rectangle(100,75,150,100);
floodfill(125,85,clBlack);
rectangle(75,100,100,125);
floodfill(85,110,clBlack);
rectangle(50,125,75,175);
floodfill(60,150,clBlack);
rectangle(25,175,50,325);
floodfill(35,250,clBlack);
rectangle(50,325,75,375);
floodfill(65,350,clBlack);
rectangle(75,375,100,400);
floodfill(85,385,clBlack);
rectangle(100,400,125,425);
floodfill(115,410,clBlack);
rectangle(125,425,175,450);
floodfill(150,435,clBlack);
rectangle(200,375,300,400);
floodfill(250,385,clBlack);
rectangle(125,275,225,300);
floodfill(175,285,clBlack);
rectangle(250,275,350,300);
floodfill(300,285,clBlack);
rectangle(100,175,125,275);
floodfill(115,225,clBlack);
rectangle(350,175,375,275);
floodfill(365,225,clBlack);
rectangle(325,150,350,175);
floodfill(335,160,clBlack);
rectangle(300,125,325,150);
floodfill(310,135,clBlack);
rectangle(125,150,150,175);
floodfill(135,165,clBlack);
rectangle(150,125,175,150);
floodfill(165,135,clBlack);
Line(175,125,175,100);
Line(175,100,300,100);
Line(300,100,300,125);
Line(300,125,250,125);
Line(250,125,250,175);
Line(250,175,300,175);
Line(300,175,300,250);
Line(300,250,250,250);
Line(250,250,250,275);
Line(250,275,225,275);
Line(225,275,225,250);
Line(225,250,175,250);
Line(175,250,175,175);
Line(175,175,225,175);
Line(225,175,225,125);
Line(225,125,175,125);
floodfill(200,200,clBlack);
floodfill(250,350,clYellow);
end;