- •1.Графический модуль
- •2.Инициализация графического режима
- •2.Система координат
- •4.Управление цветом линии
- •5.Заливка области
- •6.Некоторые графические примитивы
- •1.Рисование забора
- •2.Относительные координаты
- •3.Строительство забора
- •4.Круги и эллипсы
- •5. Рисование дуг
- •1.Оператр цикла
- •2.Вложенные циклы
- •3. Генератор случайных чисел
- •4.Инициализация генератора случайных чисел
- •5.Случайное число из промежутка
- •6.Звезды сияют и плывут
- •1.Копирование фрагмента программы
- •2.Изменение диапазона
- •3.Определение условий выбора
- •4.Решение «проблемы штриховки»
- •5.Прверка условия для области
- •6.Дощечки
1.Рисование забора
Забор возле домика будет состоять из досочек-штакетинок:
У вас есть предложение?
Конечно, раз забор состоит из множества одинаковых фигурок, стоит создать процедуру и вызывать её для построения каждой досочки. Попробуем?
• Откройте файл pr5.pas.
• Добавьте объявление процедуры Doska и её вызов в программе:
• Запустите программу — получилась досочка?
Теперь достаточно добавить второй вызов процедуры Doska, потом третий, четвёртый, пятый...— Погодите! — вырывается у вас — но ведь и вторая, и третья, и пятидесятая доски будут рисоваться на том же самом месте!
И действительно, мы создали процедуру, рисующую фигуру в абсолютных координатах. Такая процедура пригодна для рисования единственного экземпляра. Если же нам необходимо рисовать несколько одинаковых (или почти одинаковых) фигур, то рисование в процедуре должно производиться по относительным координатам.
— Как это? — спросите вы. А давайте попробуем.
2.Относительные координаты
Абсолютными называют координаты, которые отсчитывают от верхнего левого угла экрана (именно там расположено начало координат).
Относительными называют координаты, которые отсчитываются от текущей точки.
• Исправьте процедуру Doska и её вызов:
То, что мы сделали, требует более подробного пояснения.
Итак, в процедуру Doska переданы параметры х=290 и у=250.
Команда MoveTo(x.y) перемещает графический указатель в точку с координатами (290,250).
Команда LineRel(10,-10) рисует отрезок от точки (290,250) до точки (300,240). Как получились эти координаты?
■ компилятор получил их сложением: 290+10=300, 250+(-10)=240— ему хорошо, он считает быстро;
■ человек считает медленнее, но лучше ориентируется в пространстве— относительные координаты (10,-10) получаются смещением точки на 10 пикселей вправо и на 10 пикселей вверх (вы ещё не забыли, что ось Y направлена вниз?)
При рисовании отрезка произошло также перемещение графического указателя — теперь он расположен в точке (300,240).
Команда LineRel(10,10) рисует отрезок, направленный вправо (на 10 пикселей) и вниз (на 10 пикселей).
Приведённая схема поможет вам в освоении относительных координат:
• Запустите программу — не ошиблись?
3.Строительство забора
Для того, чтобы «прибить» следующую дощечку, необходимо вызвать процедуру Doska с новыми параметрами. Как их узнать?
Обратим внимание:
• ширина дощечки составляет 20 пикселей;
• дощечки размножаются по горизонтали;
• изменять надо координату Х.
• если между дощечками предполагается некоторое расстояние, то величину смещения увеличиваем на это расстояние.
4.Круги и эллипсы
Для того, чтобы пустить по небу облака, создадим соответствующую процедуру. • Добавьте процедуру Oblako:
Как всегда, разберёмся:
в процедуру Oblako кроме координат будет передаваться параметр с, задающий цвет облака;
в этой процедуре реализован ещё один способ рисования в относительных координатах — все координаты отсчитываются от значений х и у;
команда Circle выводит окружность (первые два параметра задают координаты центра, третий параметр — величину радиуса);
командой Ellipse рисуется эллипс (два первых параметра задают координаты центра эллипса, пятый и шестой параметры— горизонтальный и вертикальный радиусы, про третий и четвёртый узнаем чуть позже).
• Добавьте в программу вызов процедуры: