- •1.Графический модуль
- •2.Инициализация графического режима
- •2.Система координат
- •4.Управление цветом линии
- •5.Заливка области
- •6.Некоторые графические примитивы
- •1.Рисование забора
- •2.Относительные координаты
- •3.Строительство забора
- •4.Круги и эллипсы
- •5. Рисование дуг
- •1.Оператр цикла
- •2.Вложенные циклы
- •3. Генератор случайных чисел
- •4.Инициализация генератора случайных чисел
- •5.Случайное число из промежутка
- •6.Звезды сияют и плывут
- •1.Копирование фрагмента программы
- •2.Изменение диапазона
- •3.Определение условий выбора
- •4.Решение «проблемы штриховки»
- •5.Прверка условия для области
- •6.Дощечки
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.
Операторные скобки используются в тех случаях, когда группу операторов необходимо рассматривать как единое целое.
• Запустите программу:
Как видите, звёздочки на окнах и месяце пропали, но они продолжают «просвечивать» сквозь решётчатые крышу и стену дома. Почему так происходит, вы, наверное, уже догадались — иногда загаданная точка оказывается между линиями штриховки и проверка условия даёт положительный ответ. Действительно, приглядитесь к рисунку: