- •1.Графический модуль
- •2.Инициализация графического режима
- •2.Система координат
- •4.Управление цветом линии
- •5.Заливка области
- •6.Некоторые графические примитивы
- •1.Рисование забора
- •2.Относительные координаты
- •3.Строительство забора
- •4.Круги и эллипсы
- •5. Рисование дуг
- •1.Оператр цикла
- •2.Вложенные циклы
- •3. Генератор случайных чисел
- •4.Инициализация генератора случайных чисел
- •5.Случайное число из промежутка
- •6.Звезды сияют и плывут
- •1.Копирование фрагмента программы
- •2.Изменение диапазона
- •3.Определение условий выбора
- •4.Решение «проблемы штриховки»
- •5.Прверка условия для области
- •6.Дощечки
4.Решение «проблемы штриховки»
Самый простой способ решения проблемы просвечивающего домика— закрасить его сплошной штриховкой.
• Замените в блоках рисования крыши и стены в командах setFillStyle тип штриховки на 1:
• Запустите программу — домик чистый?
Однако, такое решение не может считаться универсальным. Действительно, а если штриховка необходима и её нельзя заменить на сплошную заливку? • Поэтому верните прежние значения в командах setFillStyle — мы будем искать другое решение:
5.Прверка условия для области
СПРАВКА
Вложенные циклы
Если некоторую циклическую конструкцию необходимо повторить множество раз, применяются вложенные циклы. Вложенный цикл— это такая алгоритмическая конструкция, в которой телом одного цикла является другой цикл.
Как это работает?
Сначала переменная j принимает значение 1:
начинает работать внутренний цикл — переменная i принимает значение 1;
■ на экран выводится точка с координатами (1*30,1*30);
переменная i принимает значение 2;
■ на экран выводится точка с координатами (2*30,1*30);
переменная i принимает значение 21;
` ■ на экран выводится точка с координатами (21*30,1*30).
Переменная j принимает значение 2:
начинает работать внутренний цикл — переменная i принимает значение 1;
■ на экран выводится точка с координатами (1*30,2*30);
переменная i принимает значение 2;
■ на экран выводится точка с координатами (2*30,2*30);
переменная i принимает значение 2.
И так до тех пор, пока переменная j не примет значение 15 и «прогонит» переменную i последний раз ОТ 1 ДО 21.
Таким образом, в нашем примере цикл по j был проигран 1 раз, тогда как цикл по i выполнился 15 раз.
КОНЕЦ СПРАВКИ.
Проблема «прозрачной» штриховки заключается в том, что перед выводом звёздочки мы проверяем «на черноту» только одну точку — центр звезды. Но ведь звезда занимает квадрат 5x5 пикселей:
Значит, перед тем, как вывести звезду, необходимо проверить цвет всех 25 пикселей вокруг загаданной точки. И сделать это можно с помощью двойного цикла:
В этом фрагменте мы перебираем все точки из диапазона [a-2..a+2;b-2..b+2] и как только обнаруживается чёрная точка, выполняется оператор black:=black+l, который увеличивает значение переменной black на единицу. Таким образом мы подсчитываем количество чёрных точек. Ну а дальше нужно всего лишь убедиться, что получилось 25 точек...
• Исправьте соответствующий блок программы:
• Не забудьте объявить переменные j, к и black.
• Запустите программу:
6.Дощечки
Теперь все звёздочки на месте? Нет, конечно— остался просвечивающий забор. Но эту проблему решить несложно...
• Реализуйте в процедуре Doska закрашивание дощечки, например, так:
• Не забудьте сохранить файл — мы ещё к нему вернёмся.
Коротко о главном
В меню находятся команды управления буфером обмена. Эти же команды расположены в контекстном меню выделенного фрагмента программы.
Выделить фрагмент программы можно протягиванием мыши либо курсорными клавишами с нажатой клавишей Shift
Условный оператор (ветвление) позволяет проверить условие и выполнить некоторый блок команд только в случае его истинности.
Если вместо одного предполагается выполнить некоторую группу операторов, эту группу обрамляют операторными скобками begin и end:
Такой оператор называется составным оператором. Типичные ошибки
В IDE Borland Pascal не работает привычная нам по работе в Windows-приложениях функция замены (если выделить блок и начать набирать текст, то выделенный текст заменится новым). Поэтому перед тем, как заменить какой-либо фрагмент программы, выделите его, выполните команду Clear и уже после этого вводите новый текст.
Если в цикле или в условном операторе необходимо выполнить несколько команд, НЕ ЗАБЫВАЙТЕ их брать в операторные скобки begin и end.
Задание к уроку
Задание 1
Создайте программу, выводящую прямоугольник и рамку бирюзового цвета, заполненные колечками (радиус 5). Проследите, чтобы колечки не вылезали за пределы бирюзового поля:
Замечание. В файле Обеспечение\з12\процедуры.tхt находится несколько процедур, которые могут вам пригодиться при выполнении заданий.
Задание 2
Составьте программу, выводящую в центре экрана «мишень». Раскидайте по жёлтому полю колечки, а по чёрному — снежинки. Проследите, чтобы колечки и снежинки целиком помещались на своём поле:
Ваша программа будет более ценной, если мишень вы нарисуете (и раскрасите), используя цикл, так, чтобы этот цикл правильно работал для любого количества колец.
Замечание. В файле Обеспечение\з12\процедуры.1х1 находится несколько процедур, которые могут вам пригодиться при выполнении заданий.
Задание 3
Составьте программу, выводящую на экран круг из точек:
Указание. Используйте сведения из курса математики: координаты (а.b) точки, находящейся внутри окружности с центром (х.у) радиуса г, удовлетворяют условию
(х-а)2+(у-b)2<r2.
Задание 4
Составьте программу, выводящую на экран следующую картинку:
Указание. Используйте сведения из курса математики: координаты (а.Ь) точки, находящейся внутри окружности с центром (х.у) радиуса г, удовлетворяют условию (х-а)2+(у-b)2<r2.