Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графика Паскаль.doc
Скачиваний:
6
Добавлен:
23.08.2019
Размер:
1.48 Mб
Скачать

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.

81