TURBO PASCAL

Новости

Программы   

Turbo Pascal 

Игры

Документация   

Странности

FAQ

Ссылки

Форум

Гостевая книга

Рассылка

Благодарности

Об авторе

 

 

[ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Использование графики и звука в языке Turbo Pascal

Прежде, чем приступить к созданию графических программ на Turbo Pascal, необходимо ознакомиться с богатейшими графическими возможностями этого языка, сосредоточенными в стандартных модулях (библиотеках) GRAPH и CRT (название CRT происходит от Cathode-Ray Tube — электронно-лучевая трубка). Эти модули содержат описания стандартных констант, процедур и функций, используемых при работе с монитором в текстовом и графическом режимах.
При работе в текстовом режиме экран монитора разбивается на строки, строки — на позиции, в каждую из которых можно поместить один символ. Положение символа на экране задается двумя координатами — вертикальной X и горизонтальной Y. X — это номер позиции в строке, а Y — номер строки. Чаще всего на экране в текстовом режиме размещается   25 строк по 80 позиций.
При работе в графическом режиме весь экран разбивается на отдельные точки — "пикселы". Положение пиксела также задается двумя координатами — X и Y. Координата X увеличивается слева направо, а координата Y — сверху вниз. Количество пикселов на экране зависит от типа графического адаптера и для распространённого адаптера VGA составляет 640 х 480.
Подключение модулей CRT и GRAPH к программе осуществляется с помощью ключевого слова Uses (англ. uses — использует) :
Uses Crt, Graph;

В системе программирования Turbo Pascal имеется хорошо развитая встроенная служба помощи, позволяющая получать подробное описание стандартных подпрограмм с примерами их применения. Поэтому ниже приведены только названия, описание параметров и назначение наиболее употребительных процедур и функций.

 

8.1. Модуль C R T

 
Модуль CRT содержит описания констант,   процедур и функций, обеспечивающих управление текстовым режимом работы монитора и звуковым генератором.
 
Процедуры

ClrScr   Очищает экран или окно и помещает курсор в верхний левый угол.
Delay(D: Word)   Приостанавливает работу программы на указанное число D миллисекунд. Практически время задержки зависит от тактовой частоты процессора.
GotoXY(X, Y: Byte)   Перемещает курсор в позицию X строки Y экрана.
NoSound   Выключает источник звука.
Sound(F: Word)   Запускает источник звука с частотой F (Гц).
TextBackGround(Color:Byte)   Устанавливает цвет фона.
TextColor(Color: Byte)   Устанавливает цвет символов.
Window(X1, Y1, X2, Y2: Byte)   Определяет текстовое окно на экране. X1, Y1 — координаты левого верхнего угла окна, X2, Y2 — правого нижнего угла окна.
 
Функции

KeyPressed: Boolean   Анализирует нажатие клавиши. Результат TRUE, если на клавиатуре нажата клавиша (кроме Alt, Ctrl и т.п.), и FALSE в противном случае. Не задерживает исполнение программы.
ReadKey: Char   Читает символ с клавиатуры без эхоповтора на экране. Приостанавливает исполнение программы до нажатия на любую клавишу, кроме Alt, Ctrl и т.п.

 

8.1. Модуль G R A P H


Модуль Graph содержит константы, процедуры  и функции для управления графическим режимом работы монитора.
 
Константы цвета
Black = 0; {Черный} 
Blue = 1;   {Синий} 
Green = 2; {Зеленый} 
Cyan = 3; {Голубой} 
Red = 4; {Красный} 
Magenta = 5;  {Фиолетовый} 
Brown = 6;   {Коричневый} 
LightGray = 7; {Светлосерый} 
DarkGray = 8;   {Темносерый} 
LightBlue = 9; {Яркосиний} 
LightGreen = 10;  {Яркозеленый} 
LightCyan = 11;   {Яркоголубой} 
LightRed = 12; {Розовый} 
LightMagenta = 13; {Малиновый} 
Yellow = 14;   {Желтый} 
White = 15; {Белый}
 
Константы типов и толщины линий
SolidLn = 0;   {Сплошная} 
DottedLn = 1; {Точечная} 
CenterLn = 2; {Штрихпунктирная} 
DashedLn = 3;  {Пунктирная} 
NormWidth=1; {Нормальная толщина} 
ThickWidth = 3; {Тройная толщина} 
 
Константы шаблона штриховки
EmptyFill = 0; 
SolidFill = 1; 
LineFill = 2; 
LtSlashFill = 3; 
SlashFill = 4; 
BkSlashFill = 5; 
LtBkSlashFill = 6; 
HatchFill = 7; 
XHatchFill = 8; 
InterleaveFill = 9; 
WideDotFill = 10; 
CloseDotFill = 11; 
UserFill = 12. 
{Заполнение цветом фона} 
{Сплошная штриховка} 
{Горизонтальная штриховка} 
{/// штриховка} 
{/// штриховка толстыми линиями} 
{\\\ штриховка толстыми линиями} 
{\\\ штриховка} 
{Заполнение прямой клеткой} 
{Заполнение косой клеткой} 
{Заполнение частой сеткой} 
{Заполнение редкими точками} 
{Заполнение частыми точками} 
{Тип задается пользователем} 
 
Процедуры

Arc(X, Y: Integer; U1, U2, R: Word)   Строит дугу окружности текущим цветом с текущими параметрами линии. X, Y — координаты центра дуги, U1 — угол до начальной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной слева направо, U2 — угол до конечной точки дуги, отсчитываемый так же, как U1, R — радиус дуги.
Bar(X1, Y1, X2, Y2: Integer)   Строит прямоугольник, закрашенный текущим цветом с использованием текущего стиля (орнамента, штриховки). X1, Y1, X2, Y2 — координаты левого верхнего и правого нижнего углов прямоугольника.
Bar3D(X1, Y1, X2, Y2: Integer; Glubina: Word; Top: Boolean)   Строит параллелепипед, используя текущий стиль и цвет. X1, Y1, X2, Y2 — координаты левого верхнего и правого нижнего углов передней грани; Glubina — ширина боковой грани (отсчитывается по горизонтали), Top — признак включения верхней грани (если True — верхняя грань вычерчивается, False — не вычерчивается).
Circle(X, Y: Integer; R: Word)   Рисует текущим цветом окружность радиуса R c центром в точке (X,Y).
ClearDevice   Очищает графический экран, закрашивает его в цвет фона.
ClearViewPort   Очищает выделенное графическое окно, закрашивает его в цвет фона.
CloseGraph   Закрывает графический режим, т.е. освобождает память, распределенную под драйверы графики и файлы шрифтов, и восстанавливает текстовый режим работы экрана.
Ellipse(X, Y: Integer; U1, U2, XR, YR: Word)   Рисует дугу эллипса текущим цветом; X, Y — координаты центра эллипса; U1, U2 — углы до начальной и конечной точек дуги эллипса (см. процедуру Arc); XR, YR — горизонтальная и вертикальная полуоси эллипса.
FillEllipse(X, Y: Integer; XR, YR: Word)   Рисует заштрихованный эллипс, используя X,Y как центр и XR,YR как горизонтальную и вертикальную полуоси эллипса.
FillPoly(N: Word; Var PolyPoints)   Рисует и штрихует многоугольник, содержащий N вершин с координатами в PolyPoints.
InitGraph(Var Driver, Mode: Integer; Path: String)   Организует переход в графический режим. Переменные Driver и Mode содержат тип графического драйвера и его режим работы. Третий параметр определяет маршрут поиска графического драйвера. Если строка пустая (т.е. равна ''), считается, что драйвер находится в текущем каталоге.
Line(X1, Y1, X2, Y2: Integer)   Рисует линию от точки X1, Y1 до точки X2,Y2.
LineTo(X, Y: Integer)   Рисует линию от текущего указателя к точке X,Y.
MoveTo(X, Y: Integer)   Смещает текущий указатель к точке X,Y.
OutTextXY(X, Y: Integer; TextString: String)   Выводит текст в заданное место экрана.
PieSlice(X, Y: Integer; U1, U2, Radius: Word)   Строит сектор круга, закрашенный текущей штриховкой и цветом заполнения. X, Y — координаты центра сектора круга; U1 и U2 — начальный и конечный углы сектора, отсчитываемые против часовой стрелки от горизонтальной оси, направленной вправо; Radius — радиус сектора.
PutPixel(X, Y: Integer; Color: Word)   Выводит точку цветом Color с координатами X, Y.
Rectangle(X1, Y1, X2, Y2)   Рисует контур прямоугольника, используя текущий цвет и тип линии. X1, Y1 — координаты левого верхнего угла прямоугольника, X2, Y2 — координаты правого нижнего угла прямоугольника.
Sector(X, Y: Integer; U1, U2, XR, YR: Word)   Рисует и штрихует сектор эллипса радиусами XR, YR с центром в X, Y от начального угла U1 к конечному углу U2.
SetBkColor(Соlor: Word)   Устанавливает цвет фона.
SetColor(Соlor: Word)   Устанавливает основной цвет, которым будет осуществляться рисование.
SetFillStyle(Pattern, Color: Word)   Устанавливает образец штриховки и цвет.
SetLineStyle(LineStile, Pattern, Thickness: Word)   Устанавливает толщину и стиль линии.
SetTextStyle(Font, Direction, CharSize: Word)   Устанавливает текущий   шрифт, направление (горизонтальное или вертикальное) и размер текста.
SetViewPort(X1, Y1, X2, Y2: Integer; ClipOn: Boolean)   Устанавливает прямоугольное окно на графическом экране. Параметр ClipOn определяет "отсечку" элементов изображения, не умещающихся в окне.
 
Функции

GetMaxX и GetMaxY   Возвращает значения максимальных координат экрана в текущем режиме работы, соответственно, по горизонтали и вертикали.
GraphResult   Возвращает значение GrOk, соответствующее коду 0, если все графические операции программы выполнились без ошибок, или возвращает числовой код ошибки (от —1 до —14).
 

 

8.3. Примеры графических программ


Эти примеры иллюстрируют основные моменты, возникающие при написании графических программ:
установку и закрытие графического  режима;
задание графических окон;
вывод точек, линий, текста;
использование различных шрифтов;
установку цвета, палитры, типа штриховки;
построение графических фигур (прямоугольников, многоугольников, дуг, окружностей, эллипсов, секторов);
простейшие приемы анимации и звукового оформления.
Даются окончательные подробно откомментированные тексты программ, которые могут служить основой для программ читателя. Для их работы необходимо наличие библиотечного файла GRAPH.TPU, драйвера видеорежима EGAVGA.BGI (или другого, в зависимости от типа монитора) и файлов шрифтов (*.chr).
Из-за недостатка места некоторые программы не содержат действий по выдаче сообщений о возможных ошибках графики, хотя они очень важны.
 

 

Содержание:
Пример 8.1.   Эта программа демонстрирует работу процедур управления текстовым выводом на экран дисплея.
Пример 8.2.   Эта программа демонстрирует возможности изображения линий в графическом режиме.
Пример 8.3.   Эта программа демонстрирует возможности изображения символов в графическом режиме...
Пример 8.4.   Эта программа рисует закрашенный прямоугольник, меняя случайным образом цвет, тип штриховки и высоту тона звукового сопровождения.
Пример 8.5.   Эта программа рисует на экране звезду и закрашивает её, используя 12 типов штриховки.
Пример 8.6.   Программа демонстрирует получение эффекта движения изображения прицела под управлением клавишей-стрелок клавиатуры с выводом координат центра прицела.
Пример 8.7.   Программа рисует человечка, делающего утреннюю зарядку.
Пример 8.8.   Эта программа демонстрирует возможности изображения объёмных предметов и столбиковых диаграмм.
Пример 8.9.   Эта программа демонстрирует работу с пикселами, случайными эллипсами и секторами.
Пример 8.10.   Программа изображает планету, вращающуюся вокруг Солнца на фоне мерцающих звезд и расходящейся галактики.
Пример 8.11.   Программа рисует прямоугольную систему координат, отображает в ней заданное множество точек и строит все возможные пары треугольников с вершинами в этом множестве такие, чтобы один треугольник лежал строго внутри другого.
Предыдущая глава.
 

На первую страницу

Rambler's Top100 Rambler's Top100
PROext: Top 1000

(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz