Практическая работа №13 Графические процедуры и функции.
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Цель работы: Изучение графических процедур и функций. Стандартные модули в Паскале.

Теоретические основы:

Паскаль имеет большое количество стандартных подпрограмм и данных, объединенных в несколько так называемых «стандартных модулей». Например:

       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, просмотров: 337.