Задание 67: "Круги на воде или радиоволны". Нарисуйте пару десятков концентрических окружностей, то есть окружностей разного радиуса, но имеющих общий центр.
Задание 68: "Компакт-диск" и "Летающая тарелка". Если радиус самого маленького "круга на воде" будет порядка 500, а самого большого — во весь экран, и если радиусы соседних окружностей будут различаться на 10–30 твипов, то на экране вы увидите привлекательный "компакт-диск". Сделайте его золотым (Yellow). Если получилось, то сделайте ему внутренний и наружный ободки другого цвета. А теперь "положите" диск, то есть нарисуйте его не из окружностей, а из эллипсов, сжатых по вертикали. Получится "летающая тарелка".
Задание 69: Не трогая х, а меняя только у и R, вы получите "коническую башню".
Задание 70: Меняя все три параметра, вы получите трубу, уходящую в бесконечность.
Задание 71: Разлинуйте экран в линейку.
Задание 72: А теперь в клетку.
Задание 73: А теперь в косую линейку.
Задание 74: Начертите ряд квадратов.
Чтобы получить интересные и сложные рисунки, нужно использовать богатые возможности Visual Basic: вложенные циклы, ветвление внутри цикла и т. д., например:
Задание 75: Нарисуйте шахматную доску.
Помощь: Здесь основные трудности возникнут при раскраске клеток в шахматном порядке. У Волченкова [См. список литературы] я встретил такую идею, касающуюся того, какие клетки закрашивать, а какие нет: Те клетки, у которых сумма номеров строки и столбца четная — закрашивать, остальные — нет.
Задание 76: "Ковер" или "Кольчуга". В задании 62 вы рисовали горизонтальный ряд пересекающихся окружностей. Теперь нарисуйте один под другим много таких рядов.
Указания: Здесь вам понадобятся вложенные циклы. Если центры соседних окружностей отстоят друг от друга на одинаковое расстояние как по горизонтали, так и по вертикали, и если удачно подобраны остальные числа, то у вас получится красивый ковер во весь экран с аккуратными краями.
Задание 77: Пусть у этого ковра будет вырезан левый нижний угол.
Задание 78:… и вдобавок вырезан квадрат посередине.
Использование случайных величин при рисовании
Со случайными числами и функцией Rnd мы с вами познакомились. Попробуем нарисовать "звездное небо". Для этого достаточно покрасить форму в черный или синий цвет и в случайных местах формы нарисовать некоторое количество разноцветных точек (скажем, 1000). Точка ставится методом PSet. Как сделать координаты и цвет точки случайными? Тот же Rnd. Ваша форма имеет размеры WidthxHeight, количество цветов равно 16777216, поэтому обращение к методу рисования одной точки случайного цвета будет выглядеть так:
PSet (Width * Rnd, Height * Rnd), 16777216 * Rnd
Этот оператор нужно просто выполнить 1000 раз:
For i = 1 То 1000
PSet (Width * Rnd, Height * Rnd), 16777216 * Rnd
Next
Результат будет ярче, если точки будут иметь случайную толщину (1 или 2). Имейте в виду, что сколько бы раз вы не запускали программу с указанным фрагментом, картина созвездий на экране будет абсолютно одинакова. Если вам нужно, чтобы от запуска к запуску набор значений случайной величины менялся (а значит и созвездия), употребите разик до использования функции Rnd процедуру Randomize.
Задание 79: "Звезды в окне". Звездное небо в пределах прямоугольника.
Задание 80: "Дождь в луже". Заполните форму окружностями или эллипсами радиуса 200 в случайных местах.
Задание 81: "Мыльные пузыри". То же самое случайных радиусов и цветов.
Задание 82: "Сноп света в глаза". То есть пучок лучей, выходящих из одной точки. Реализуется множеством случайных разноцветных отрезков прямых, причем одна точка всех отрезков не случайна, а находится в центре формы.
Задание 83: "Стог сена". Множество случайных разноцветных отрезков прямых преимущественно желтоватых оттенков, причем одна точка любого отрезка находится в случайной точке левой трети стога, другая — в случайной точке правой. Размер стога — 6000 на 6000. Используйте функцию RGB со случайными аргументами.
Задание 84: "Атака абстракциониста". На экране бесконечно рисуется большое количество случайных разноцветных залитых прямоугольников или эллипсов.
Совет: Если ваш компьютер быстрый, то прямоугольники или эллипсы будут сменять друг друга с огромной скоростью, что может вам не понравиться. Чтобы замедлить работу компьютера, обычно используют таймер. Но поскольку вы с ним не знакомы, вставьте для замедления внутрь цикла оператор, который, ничего не изменяя на экране, будет выполняться достаточно долго. Обычно для этих целей используют "пустой цикл":