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

1.Копирование фрагмента программы

СПРАВКА

Меню Edit

Команды меню Edit (Alt+E) применяются для работы с буфером обмена (clipboard).

  • Undo — отменяет последнее действие. Горячие клавиши — Alt+Backspace

  • Redo— действует противоположно Undo, возвращая то, что эта команда отменила.

  • Cut— вырезает выделенный текст в буфер обмена (выделить текст можно мышью или с помощью нажатой клавиши Shift). Горячие клавиши Shift+Del

  • Сору — копирует выделенный текст в буфер обмена. Горячие клавиши Ctrl+lns

  • Paste — вставляет текст из буфера обмена в место, где находится курсор. Горячие клавиши Shift+lns

  • Cleаr — удаление выделенного текста. Быстрая клавиша Ctrl+Del

  • Show clipboard — перейти в окно буфера обмена (все, что мы копировали можно найти здесь).

Как вы помните, программа рисования картинки с домиком сохранена в файле prS.pas, а программа рисования звёздного неба — в pr6.pas.

• Откройте файл prS.pas, а затем файл pr6.pas:

Обратите внимание, что окна обеих программ расположились каскадом (так, чтобы были видны оба заголовка).

Нам необходимо скопировать текст процедуры Star и цикл, в котором рисуются звёзды, из файла pr6.pas в файл prS.pas.

  • Выделите протягиванием мыши (или курсорными клавишами с нажатой клавишей Shift текст процедуры Star.

  • Щёлкните по выделенному правой кнопкой мыши и в контекстном меню выберите пункт Сору:

Обратите внимание— «горячие» клавиши работы с буфером обмена в среде Pascal совсем не такие, к которым мы привыкли в Windows.

• Переключитесь в окно с текстом программы prS.pas (как вы помните, это можно сделать аккордом Аlt+номер_окна).

• Вставьте пустую строку после окончания процедуры Luna и в контекстном меню выберите

• Таким же образом (Сору в файле pr6.pas и Paste в файл prS.pas) скопируйте цикл вывода звёзд — в конец программы:

• Кроме этого не забудьте объявить в разделе VAR переменную i.

• Запустите программу:

2.Изменение диапазона

Не ожидали? Звёзды рассыпались по всей картине...

Как справиться с такой ситуацией? Собрать звёздочки, упавшие на траву, довольно легко — достаточно изменить диапазон координаты у при выводе звёзд.

• Исправьте программу так, чтобы звёзды появлялись только выше травы.

• Проверьте — получилось?

3.Определение условий выбора

Чтобы справиться со звёздочками, оказавшимися перед домиком, месяцем, тучками, немного порассуждаем.

Как мы поступали до сих пор? Выводили звезду прямо в загаданной точке, не озаботившись тем, какого цвета эта точка.

Теперь же мы:

  • сначала загадаем точку (для координат случайной точки заведём переменные а и b);

  • проверим, какого цвета эта точка на экране (для проверки цвета точки используется функция getPixel);

  • если эта точка чёрная (код чёрного цвета равен 0), то выведем на это место звёздочку;

  • в противном случае ничего делать не будем.

• Исходя из этого изменим программу:

Разбор

С помощью команд a:=random(640) и b:=random(300) загадываем два случайных числа а и b (абсцисса и ордината звёздочки).

Оператор if getPixel(a,b)=0 then Star(a,b,random(7)+9) буквально переводится если цвет в точке (а,b) равен 0, то выполнить процедуру Star.

Так как теперь в цикле должны выполняться не одна, а три команды, эти команды берут в так называемые операторные скобки begin и end.

Операторные скобки используются в тех случаях, когда группу операторов необходимо рассматривать как единое целое.

• Запустите программу:

Как видите, звёздочки на окнах и месяце пропали, но они продолжают «просвечивать» сквозь решётчатые крышу и стену дома. Почему так происходит, вы, наверное, уже догадались — иногда загаданная точка оказывается между линиями штриховки и проверка условия даёт положительный ответ. Действительно, приглядитесь к рисунку: