Читайте также: |
|
Если вы нарисовали снеговика, то наверное согласитесь, что для этого вам пришлось основательно потрудиться, хотя сам рисунок не слишком богат, в нем всего порядка десяти элементов.
Как заставить Паскаль короткой программой рисовать множество элементов? Ответ: применять циклы, используя в обращениях к графическим процедурам вместо чисел переменные величиныи арифметические выражения.
Задача: Нарисовать горизонтальный ряд окружностей радиусом 10 на расстоянии 100 от верхнего края экрана и с такими горизонтальными координатами 50, 80, 110, 140, ¼, 290.
Как видим, центры соседних окружностей отстоят друг от друга на 30. Вот примитивный фрагмент, решающий эту задачу:
Circle(50,100,10);
Circle(80,100,10);
Circle(110,100,10);
Circle(140,100,10);
Circle(170,100,10);
Circle(200,100,10);
Circle(230,100,10);
Circle(260,100,10);
Circle(290,100,10);
При вводе этой программы вас будет раздражать необходимость вводить много раз почти одно и то же. Воспользуйтесь копированием, которое объяснено в параграфе «Копирование и перемещение фрагментов текста» из части IV.
Мы видим, что здесь Паскаль 9 раз выполнит одну и ту же процедуру, причем при каждом следующем обращении первый параметр вырастает на 30.
А теперь решим эту же задачу при помощи цикла.
Придумаем для первого параметра переменную величину, например, х. Чтобы х изменялся, организуем цикл repeat. Вот программа решения задачи:
USES Graph;
VAR x, Device, Mode:Integer;
BEGIN
Device:=0;
InitGraph(Device, Mode, ’< путь к графическим драйверам> ’);
x:=50;
repeat
Circle(x,100,10);
x:=x+30;
until x>290;
ReadLn;
CloseGraph
END.
Задание 69:. Попробуйте уменьшить расстояние между центрами окружностей, не изменяя их радиуса, нарисовав их плотнее, чтобы они пересекались, еще плотнее, пока они не образуют “трубу”.
Задание 70:. Удлините трубу налево и направо до краев экрана.
Задание 71:. Увеличьте толщину трубы.
Заставим окружности вести себя посложнее. Например, расположим их не по горизонтали, а по диагонали экрана в направлении от левого верхнего угла в правый нижний. Для этого организуем еще одну переменную - вертикальную координату у - и заставим ее тоже изменяться одновременно с x.
USES Graph;
VAR x, y, Device, Mode: Integer;
BEGIN
Device:=0;
InitGraph(Device, Mode, ’< путь к графическим драйверам> ’);
x:=50;
y:=20;
repeat
Circle(x,y,10);
x:=x+30;
y:=y+20;
until x>290;
ReadLn;
CloseGraph
END.
Если мы захотим менять радиус, то организуем переменную R, тоже типа Integer.
Задание 72:. Нарисуйте ряд точек по направлению из левого нижнего угла в правый верхний.
Задание 73:. “Круги на воде”. Нарисуйте пару десятков концентрических окружностей, то есть окружностей разного радиуса, но имеющих общий центр.
Задание 74:. “Компакт-диск”. Если радиус самого маленького “круга на воде” будет порядка 50, а самого большого - во весь экран, и если радиусы соседних окружностей будут различаться на 2-3 пиксела, то на экране вы увидете привлекательный “компакт-диск”. Сделайте его золотым (Yellow).
Задание 75:. Не трогая x, а меняя только yи R, вы получите коническую башню.
Задание 76:. Меняя все три параметра, вы получите трубу, уходящую в бесконечность.
Задание 77:. Разлинуйте экран в линейку.
Задание 78:. А теперь в клетку.
Задание 79:. А теперь в косую линейку.
Задание 80:. Начертите ряд квадратов.
Чтобы получить богатые рисунки, нужно использовать богатые возможности Паскаля: вложенные циклы, ветвление внутри цикла и т.д., например:
Задание 81:. Нарисуйте шахматную доску.
Задание 82:. “Ковер”. В задании 69 вы рисовали горизонтальный ряд пересекающихся окружностей. Теперь нарисуйте один под другим много таких рядов.
Указания: Здесь вам понадобятся вложенные циклы. Если центры соседних окружностей отстоят друг от друга на одинаковое расстояние что по горизонтали, что по вертикали, и если удачно подобраны остальные числа, то у вас получится красивый ковер во весь экран с аккуратными краями.
Задание 83:. Пусть у этого ковра будет вырезан левый нижний угол.
Задание 84:. ¼ и вдобавок вырезан квадрат посередине.
Дата добавления: 2015-11-14; просмотров: 49 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Работа с цветом. Заливка. Стиль линийи заливки | | | Использование случайных величинпри рисовании |