Цель работы: Изучение графических процедур и функций. Стандартные модули в Паскале.
Теоретические основы:
Паскаль имеет большое количество стандартных подпрограмм и данных, объединенных в несколько так называемых «стандартных модулей». Например:
Sistem – основная библиотека;
Strings – работа с ASCIIZ – строками;
Crt – работа с консолью;
Graph – графическая библиотека;
Dos – использование возможностей Dos;
Windos – использование возможностей Dos и ASCIIZ – строк;
Overlay – организация оверлейных структур;
Printer – работа с принтером.
Модуль Crt – один из наиболее часто используемых. Он содержит процедуры обслуживания процессов вывода информации на экран, ввода с клавиатуры, а так же процедуры и функции вывода звуковых сигналов, работы с окнами на экране и вывода цветных текстовых сток на экран.
При работе с экраном через модуль Crt весь экран разбивается на отдельные строки, а каждая строка – на отдельные позиции, в каждую из которых можно поместить один символ (в том числе и пробел). Таким образом весь экран разбивается на отдельные неделимые прямоугольные элементы. Для каждого элемента можно задать цвет фона (задний план) и цвет символа (передний план).
Система координат:
(1,1) Х
Y
Процедуры модуля Crt
В предыдущей лекции мы уже упоминали, что модуль Crt, входящий в состав стандартных библиотек языка Pascal, содержит средства для работы с экраном в текстовом режиме.
Для того чтобы сделать работоспособными все описанные ниже процедуры и функции, ваша программа должна подключить стандартный модуль Crt:
uses crt;
Активная область ввода / вывода
Процедура Window(x1,y1,x2,y2: byte) создаст на экране окно с координатами левого верхнего угла в точке (x1,y1) и координатами правого нижнего угла в точке (x2,y2). Теперь активная область экрана будет ограничена этим окном. Текущие координаты курсора будут отсчитываться не от левого верхнего угла экрана, а от левого верхнего угла этого окна.
Очистка
Процедура ClrScr очистит весь экран (или активное окно); курсор будет помещен в верхний левый его угол.
Процедура ClrEol очистит текущую строку, начиная с текущей позиции курсора и до правого края экрана (окна).
Процедура DelLine удалит строку, в которой находится курсор.
Процедура InsLine очистит текущую строку целиком. Курсор останется на прежней позиции.
Цвета
Процедура TextBackground(color: byte) установит цвет фона.
Процедура TextColor(color: byte) установит цвет выводимого текста.
Замечание: Вместо номера цвета возможно использовать соответствующую константу (см. табл. 1).
Таблица 1. Стандартные цвета языка Pascal | |||||
Стандартная константа | Номер | Цвет | Стандартная константа | Номер | Цвет |
black | 0 | Черный | darkgray | 8 | Темно-серый |
blue | 1 | Синий | lightblue | 9 | Ярко-синий |
green | 2 | Зеленый | lightgreen | 10 | Ярко-зеленый |
cyan | 3 | Голубой | lightcyan | 11 | Ярко-голубой |
red | 4 | Красный | lightred | 12 | Розовый |
magenta | 5 | Фиолетовый | lightmagenta | 13 | Ярко-фиолетовый |
brown | 6 | Коричневый | yellow | 14 | Желтый |
lightgray | 7 | Светло-серый | white | 15 | Белый |
Помимо этого, можно использовать константу blink = 128 (мерцание).
Звук
Процедура Sound(hz: word) включит звуковой сигнал с частотой hz герц.
Процедура NoSound выключит звуковой сигнал.
Позиционирование
Процедура GotoXY(x,y: byte) переместит курсор в заданную позицию в пределах текущего окна (экрана).
Функция WhereX: byte вычислит положение курсора в текущем окне (или на экране): его горизонтальную составляющую. Напомним, что координата X отсчитывается от левого края экрана (окна).
Функция WhereY: byte вычислит положение курсора в текущем окне (или на экране): его вертикальную составляющую. Напомним, что координата Y отсчитывается от верхнего края экрана (окна).
Ожидание
Процедура Delay(ms: word) приостановит исполнение программы на ms миллисекунд.
Функция KeyPressed: boolean отслеживает нажатия клавиш (на клавиатуре).
Функция ReadKey: char возвращает код символа, чья клавиша (или комбинация клавиш) была нажата.
В графическом режиме экран разделяется прямоугольной сеткой, каждый элемент которой имеет свои координаты. Левый верхний угол экрана имеет координаты (0;0). Значение левой координаты (Х) увеличивается в горизонтальном направлении слева направо. Значение правой координаты (У) увеличивается в вертикальном направлении сверху вниз.
Система координат:
(0,0) Х
Y
Графическому режиму как и текстовому, присуще понятие текущего указателя. Текущий указатель в любой момент времени может находится в любой точке экрана с координатами (х;у). Его местонахождение отображается курсором, но в графическом режиме курсор не виден.
Инициализация (включение) графического режима
InitGraph (gd, gm, p);
где gd – переменная типа integer, которая указывает на используемый тип графического драйвера; gm – переменная типа integer устанавливающая разрешение экрана; p – строковая константа, указывающая путь к драйверу.
Драйвер – это программа обеспечивающая работу отдельного устройства, в данном случае графического адаптера, который в свою очередь позволяет реализовать графический режим.
В нашем случае gd=9 всегда.
Что касается разрешения то возможны такие варианты значений которые принимает переменная gm:
gm=0 - низкое (640x200)
gm=1 - среднее (640x350)
gm=2 - высокое (640x480)
Ну а путь к драйверу на наших машинах выглядит следующим образом: ‘c:\trans\bp\bgi’
Выключение графического режима
CIoseGraph;
Изображение точек
PutPixel (x, y, c);
где х и у – координаты точки, а с – это цвет которым будет изображена точка (номера цветов аналогичны номерам цветам в модуле crt).
Изображение линий.
Цвет линии
SetColor (c);
где с – цвет которым будет изображена линия или текст.
Стиль линии
SetLineStyle (s, p, t);
где s – стиль лини; p – шаблон линии; t – толщина линии.
Переменная s может принимать следующие значения:
0
1
2
3
4 Определяется шаблоном
Переменная t принимает следующие значения:
1 - Тонкая
3 - Толстая
Переменная p может иметь любое значение если стиль линии не шаблон (т.е. если s<>4).
Отрезок прямой линии
Line (x1,y1, x2,y2);
где x1,y1- начальные координаты прямой линии; x2,y2 – координаты конца линии.
Отрезок до точки
LineTo (x,y);
где линия рисуется от точки в который находится указатель в данный момент; х, у – координаты указателя после выполнения команды, т.е. линия рисуется до точки с координатами х, у.
Данную команду удобно использовать при рисовании ломанных линий.
Перемещение текущего указателя в точку с координатами ( x , y )
MoveTo (x,y);
Отрезок (вектор)
LineRel (dx, dy);
где линия рисуется от точки в который находится указатель в данный момент; а конечные координаты отрезка формируются следующим образом: к текущим координатам х и у прибавляются соответственно dx и dy.
Варианты самостоятельных заданий
Задание №1
1. Выведите свое имя посередине экрана мигающим красным цветом в небольшом прямоугольнике серого цвета
2. Выведите свое имя разними цветами и на разном фоне по главной диагонали экрана
3. Выведите на экран разными цветами сегодняшнюю дату в формате число месяц год
4. Разделите экран монитора на две части по вертикали. Выведите свое имя в левой части серым цветом на синем фоне, а в правой части синим цветом на сером фоне
5. Выведите на экран разными цветами часы в формате : ЧЧ:ММ:СС
6. Разделите экран монитора на две части по горизонтали. Выведите свое имя в левой части красным цветом на желтом фоне, а в правой части свою фамилию желтым цветом на красном фоне
7. Напишите программу, которая по введенным с клавиатуры данным выводила бы ваше имя на экране монитора. Вводимые данные: цвет символа, цвет экрана, координаты текста.
8. Выведите на экран монитора таймер отсчитывающий указанное время
9. Выведите свое имя посередине экрана мигающим красным цветом в небольшом прямоугольнике серого цвета
10. Выведите свое имя разними цветами и на разном фоне по главной диагонали экрана
11. Выведите на экран разными цветами сегодняшнюю дату в формате число месяц год
12. Разделите экран монитора на две части по вертикали. Выведите свое имя в левой части серым цветом на синем фоне, а в правой части синим цветом на сером фоне
13. Выведите на экран разными цветами фразу «До нового года осталось____ дней»
14. Разделите экран монитора на две части по горизонтали. Выведите свое имя в левой части красным цветом на желтом фоне, а в правой части свою фамилию желтым цветом на красном фоне
15. Напишите программу, которая по введенным с клавиатуры данным выводила бы ваше имя на экране монитора. Вводимые данные: цвет символа, цвет экрана, координаты текста.
16. Выведите на экран монитора таймер отсчитывающий указанное время
17. Разделите экран монитора на две части по вертикали. Выведите свое имя в левой части серым цветом на синем фоне, а в правой части синим цветом на сером фоне
18. Выведите на экран разными цветами часы в формате : ЧЧ:ММ:СС
19. Разделите экран монитора на две части по горизонтали. Выведите свое имя в левой части красным цветом на желтом фоне, а в правой части свою фамилию желтым цветом на красном фоне
20. Напишите программу, которая по введенным с клавиатуры данным выводила бы ваше имя на экране монитора. Вводимые данные: цвет символа, цвет экрана, координаты текста.
Контрольные вопросы:
1. Какие стандартные модули Вы знаете?
2. Система координат при работе с модулями CRT и GRAPH
3. Процедуры работы с текстом?
4. Рисование линии, стиль линии
5. Перемещение указателя в точку с координатами
Дата: 2019-11-01, просмотров: 375.