Модуль GRAPH в TURBO PASCAL

Знакомство с библиотекой GRAPH и набором графических драйверов, позволяющих работать с разными типами видеоадаптеров. Описание алгоритма получения изображений: вывод точки, линии текста, построение прямоугольников, дуг и окружностей, применение заливки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.04.2017
Размер файла 61,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

КУРСОВАЯ РАБОТА

Модуль GRAPH в TURBO PASCAL

Содержание

Введение

1. Обзор

2.. Инициализация графического режима

3. Построение изображений

3.1 Система координат устройства

3.2 Управление текущим указателем

3.3 Вывод точки

3.4 Установка цвета пера и цвета фона

3.5 Вывод линии

3.6 Управление стилем линии

3.7 Построение прямоугольников

3.8 Построение дуг и окружностей

3.9 Заливка замкнутых областей

4. Вывод текста в графическом режиме

4.1 Вывод текста

4.2 Вывод числовых значений

5. Практические задачи

Заключение

Введение

graph изображение линия графический

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

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

Большой популярностью эта область служит для игровой индустрии, где с каждым годом используются все более изощренная и сложная графика, а так же для моделирующих программ таких как: ArchiCAD, 3DS MAX и другие.

Что касается модуля Graph, то она решает не мало задач, например: построение графиков, диаграмм и таблиц, для подробного анализа явления или свойств объекта моделирования; создание изображения и отображение растрового и векторного шрифта текст.

Любое изображение на экране монитора формируется из отдельных элементов - пикселов (от англ. Pixel - Picture Element - элемент изображения). Экран монитора можно рассматривать как матрицу пикселов. Для получения того или иного изображения на экране монитора как в графическом, так и в текстовом режимах необходимо заставить светиться строго определенную группу пикселов. В текстовом режиме на экран могут выводиться только определенные символы, образы которых хранятся в постоянной или оперативной памяти компьютера, а управление отдельными пикселами невозможно. В графическом режиме появляется возможность управления отдельными пикселами, что позволяет формировать любые изображения.

С технической точки зрения управлением монитора занимается специальное устройство компьютера - видеоадаптер. Именно согласно его сигналам зажигаются и гаснут отдельные точки на экране монитора. Конструктивно видеоадаптер - это весьма сложное электронное устройство, управляемое собственным микропроцессором. Качество изображения, получаемое на экране монитора во многом зависит не только от самого монитора, но и от типа видеоадаптера. В самом общем виде видеоадаптер состоит из контроллера электронно-лучевой трубки (CRT-контроллера) и видеопамяти (видеобуфера). Для получения изображения на экране монитора необходимо поместить в видеопамять определенную информацию. Графическое программирование на таком уровне представляется весьма непростой и трудоемкой задачей, требующей знания особенностей того или иного видеоадаптера.

Чтобы сделать процесс создания графических изображений более простым и эффективным фирма Borland International разработала специальную библиотеку GRAPH, а также набор графических драйверов, позволяющих работать с различными типами видеоадаптеров. Графический драйвер - это вспомогательная программа-посредник, обеспечивающая взаимодействие пользовательских программ с конкретным графическим устройством. Графические драйверы хранятся в файлах с расширением .BGI (Borland Graphic Interface). Обычно эти файлы расположены в каталоге \BP\BGI (или \TP\BGI).

Графика вокруг нас, человек все больше взаимодействует с компьютером с помощью графики.

Из этого можно сделать вывод, что данное направление весьма актуально в наше время, и даже видны дальнейшие перспективы его развития.

1. Обзор

В Турбо Паскале имеется восемь стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций. Этими модулями являются SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY, TURBOS и GRAPH3. Модули GRAPH, TURBOS и GRAPHS выделены в отдельные TPU-файлы, а остальные входят в состав библиотечного файла TURBO.TPL. Лишь один модуль SYSTEM подключается к любой программе автоматически, все остальные становятся доступны только после указания их имен в списке, следующем за словом USES.

Ниже приводится краткая характеристика основных стандартных модулей.

Модуль SYSTEM. В него входят все процедуры и функции стандартного Паскаля, а также встроенные процедуры и функции, которые не вошли в другие стандартные модули (например, INC, DEC, GETDIR и т.п.). Как уже отмечалось, модуль SYSTEM подключается к любой программе независимо от того, объявлен ли он в предложении USES или нет, поэтому его глобальные константы, переменные и подпрограммы считаются встроенными в Турбо Паскаль.

Модуль PRINTER. Делает доступным вывод текстов на матричный принтер. В нем определяется файловая переменная LST типа TEXT, которая связывается с логическим устройством PRN. После подключения модуля может быть выполнена, например, такая программа:

Uses Printer;

begin

writeln (LST, 'Турбо Паскаль')

end.

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

Модуль DOS. В модуле собраны процедуры и функции, открывающие доступ программам к средствам дисковой операционной системы MS- DOS. Позволяет обмениваться информацией с операционной системой (системное время, прерывания, состояния параметров окружения, процедуры обработки процессов, работа с дисковым пространством).

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

Модуль Graph основан на графической библиотеке GDI+, но запоминает текущие перо, кисть и шрифт, что позволяет не передавать их в качестве параметров при вызове графических примитивов. К свойствам пера, кисти и шрифта можно получать доступ как в процедурном, так и в объектном стиле. Например, для доступа к цвету текущего пера используется процедура SetPenColor(c) и функция PenColor, а также свойство Pen.Color.

В модуле GraphABC можно управлять самим графическим окном и компонентом GraphABCControl, на котором осуществляется рисование. По умолчанию компонент GraphABCControl занимает всю клиентскую часть графического окна, однако, на графическое окно можно добавить элементы управления, уменьшив область, занимаемую графическим компонентом (например, так сделано в модулях Robot и Drawman). На этом модуле мы и остановимся, и продолжим более детальное изучение.

В этом определен ряд констант, типов, процедур, функций и классов для рисования в графическом окне.[2]

Модуль не представляет собой исполняемой программы, а только содержит набор средств для использования в исполняемой программе: типы данных, переменные, процедуры и функции. Исходный текст модуля имеет расширение .pas. Модуль компилируется отдельно от основной программы, откомпилированный модуль имеет расширение .tpu (Turbo Pascal Unit). Готовый откомпилированный модуль может быть использован в основной программе с помощью предложения uses, которое записывается сразуже после имени программы.[3]

Модуль Graph Турбо Паскаля содержит около пятидесяти различных процедур и функций, предназначенных для работы с экраном. В этом же модуле описаны некоторые встроенные константы и переменные, которые могут быть использованы в графических программах.[1]

Модуль обеспечивает работу с экраном в графическом режиме.

Экран в графическом режиме представляется в виде совокупности точек - пикселов. Цвет каждого пиксела можно задавать отдельно. Начало координат находится в левом верхнем углу экрана и имеет координаты (0, 0). Количество точек по горизонтали и вертикали (разрешение экрана) и количество доступных цветов зависят от графического режима. Графический режим устанавливается с помощью служебной программы - графического драйвера.

В состав оболочки входит несколько драйверов, каждый из них может работать в нескольких режимах. Режим устанавливается при инициализации графики либо автоматически, либо программистом.[4]

Модуль Graph обеспечивает:

вывод линий и геометрических фигур заданным цветом и стилем;

закрашивание областей заданным цветом и шаблоном;

вывод текста различным шрифтом, заданного размера и направления;

определение окон и отсечение по их границе;

использование графических спрайтов и работу с графическими страницами. [4]

Основную часть модуля составляют процедуры вывода базовых графических элементов, таких как точки, отрезки прямых линий, дуги и целые окружности и т.д. Такие элементы называются графическими примитивами. Другая группа процедур предназначена для управления графическим режимом.[1]

2.Инициализация графического режима

Для формирования графических изображений в среде Borland (Turbo) Pascal имеется стандартный библиотечный модуль Graph. В нем содержится множество графических процедур и функций, десятки стандартных констант и типов данных.

Любая программа, использующая графику должна прежде всего подключить модуль Graph. Это выполняется директивой USES:

USES Graph;

С этого момента все графические средства доступны пользователю. [5]

Прежде чем работать с графикой необходимо установить определенный графический видеорежим. Выбор видеорежима зависит от имеющегося графического адаптера. Большинство современных компьютеров (IBM-совместимых) имеют в своем составе видеоадаптер стандарта VGA (Video Graphic Array) или SuperVGA. Для работы с таким адаптером используется графический драйвер EGAVGA.BGI. При этом имеется возможность работы в трех различных видеорежимах:

Режим

Разрешение

VGALo = 0

640х200

VGAMed = 1

640х350

VGAHi = 2

640х480

Разрешение определяется максимальным числом пикселов в строке и максимальным количеством строк пикселов.

Во всех трех видеорежимах возможно одновременное отображение до 16 различных цветов.

Для переключения видеоадаптера в графический режим и установки определенного видеорежима необходимо вызвать специальную процедуры инициализации графики - InitGraph:

InitGraph( var GraphDriver, GraphMode : Integer; DriverPath : String );

Процедура InitGraph имеет 3 параметра. Целочисленные переменные GraphDriver и GraphMode определяют соответственно тип графического видеоадаптера и видеорежим. Третий параметр DriverPath указывает путь в каталог, содержащий файлы с графическими драйверами. [5]

В модуле Graph для задания типа видеоадаптера определен ряд констант:

Detect = 0 - автоопределение;

CGA = 1 - адаптер CGA;

EGA = 3 - адаптер EGA;

VGA = 9 - адаптер VGA;

и др.

Если для параметра GraphDriver используется значение Detect, а значение параметра GraphMode явно не указано, то тип графического адаптера будет определен автоматически и после инициализации соответствующего драйвера будет установлен режим с максимальным разрешением.

Подытожив сказанное выше, запишем пример инициализации графического режима:

USES Graph;

VAR

GrDr, GrMd : integer;

BEGIN

GrDr := detect;

InitGraph( GrDr, GrMd, `c:\bp\bgi' );

{ теперь можно вызывать графические процедуры }

. . .

. . .

. . .

CloseGraph;

END.

Для завершения работы в графическом режиме необходимо всегда производить вызов процедуры CloseGraph. Она очищает экран, переводит адаптер в текстовый режим и, если возможно, выгружает из памяти графический BGI-драйвер. [5]

3. Построение изображений

3.1 Система координат устройства

В растровой компьютерной графике экран представляет собой прямоугольный массив пикселов. Любое изображение строится как композиция из светящихся или погашенных пикселов. Каждый пиксел адресуется двумя целыми числами - номером по горизонтали nx и номером по вертикали ny:

0 <= nx <= Xmax

0 <= ny <= Ymax

Значения Xmax и Ymax зависят от текущего графического видеорежима. В случае адаптера VGA и режима VGAHi Xmax = 639, а Ymax = 479. В модуле Graph определены две функции GetMaxX и GetMaxY, возвращающие текущие значения параметров Xmax и Ymax, соответственно. [5]

3.2 Управление “текущим указателем”

“Текущий указатель” (CP - Current Pointer) или, как его еще называют, графический курсор выполняет те же функции, что и курсор в текстовом режиме, однако является при этом невидимым. Положение графического курсора указывает на начальные координаты изображения графического примитива, выводимого “от текущей позиции”. Текущий указатель перемещается специальными процедурами. В частности, процедура

MoveTo( X, Y );

перемещает его в точку экрана, с координатами (X, Y). Другая процедура -

MoveRel( dX, dY );

перемещает текущий указатель на dX пикселов по горизонтали и на dY пикселов по вертикали относительно последнего положения текущего указателя. [5]

3.3 Вывод точки

Какие бы изображения не выводились на экран, все они построены из точек. Имея средство построения точки определенного цвета в нужном месте экрана теоретически можно создать изображение любой сложности.

Вывод точки осуществляется процедурой:

PutPixel( X, Y, Color ),

где X и Y - экранные координаты точки, а Color - ее цвет. Возможные значения параметра Color приведены ниже в таблице.

Таблица 1. Кодировка цвета

Цвет

Константа

Цвет

Константа

Черный

Black = 0

Темно-серый

DarkGray = 8

Синий

Blue = 1

Ярко-синий

LightBlue = 9

Зеленый

Green = 2

Ярко-зеленый

LightGreen = 10

Голубой

Cyan = 3

Ярко-голубой

LightCyan = 11

Красный

Red = 4

Ярко-красный

LightRead = 12

Сиреневый

Magenta = 5

Светло-сиреневый

LightMagenta = 13

Коричневый

Brown = 6

Желтый

Yellow = 14

Светло-серый

LightGray = 7

Белый

White = 15

Примеры:

Вывод красной точки в центр экрана.

x := GetMaxX div 2;

y := GetMaxY div 2;

PutPixel( x, y, Red );

Вывод вертикальной линии зеленого цвета в середине экрана.

x := GetMaxX div 2;

FOR y:=0 TO GetMaxY DO PutPixel( x, y, Green ); [5]

3.4 Установка цвета пера и цвета фона

При выводе на экран точки ее цвет указывается непосредственно в процедуре PutPixel.

Во всех остальных случаях, при построении графических примитивов (линий, прямоугольников, окружностей и т.п.), а также при выводе текста, цвет их контуров (цвет пера) задается специальной поцедурой:

SetColor( Color ),

где Color - цвет, значения которого берутся из таблицы 1.

Для установка цвета фона графического экрана имеется процедура:

SetBkColor( Color ),

где Color - цвет, значения которого берутся из таблицы 1. При выполнении процедуры SetBkColor экран сразу же окрашивается в заданный цвет. [5]

3.5 Вывод линии

В последнем примере с помощью процедуры PutPixel и оператора FOR из отдельных точек была построена линия. Для построения отрезков прямых имеется специальная процедура Line:

Line( X1, Y1, X2, Y2 ),

где X1, Y1 - координаты начала, а X2, Y2 - координаты конца отрезка.

Примеры.

Вывод вертикальной линии зеленого цвета в середине экрана.

SetColor( Green );

x := GetMaxX div 2;

Line( x, 0, x, GetMaxY );

Вывод диагональной линии ярко-красного цвета.

SetColor( LightRed );

Line( 0, 0, 639, 479 );

Для вычерчивания линий существует еще две процедуры: LineTo и LineRel.

Процедура LineTo( X, Y ) строит отрезок прямой из точки текущего положения указателя в точку с координатами X, Y. Процедура LineRel( dX, dY ) проводит линию от точки текущего положения указателя в точку со смещением dX, dY. [5]

3.6 Установка стиля линии

Turbo Pascal позволяет вычерчивать линии самого различного стиля: тонкие, широкие, пунктирные, штриховые и т.д. Установка стиля производится процедурой

SetLineStyle( Style, Pattern, Thickness ),

где Style - параметр, определяющий стиль линии. Возможные значения этого параметра приведены в таблице 2; Pattern - образец; Thickness - толщина линии. Если применяется один из стандартных стилей, значение параметра Patternдолжно быть равно 0.

Таблица 2. Стили линии

Описание стиля

Константа

Сплошная линия

SolidLn = 0

Точечная линия

DottedLn = 1

Штрих-пунктирная линия

CenterLn = 2

Пунктирная линия

DashedLn = 3

Стиль, определяемый

пользователем

UserBitLn = 4

Параметр Thickness может принимать всего два значения:

NormWidth = 1 - линия толщиной в один пиксел

ThickWidth = 3 - линия толщиной в три пиксела

Далее будут приведены процедуры с помощью которых можно строить различные геометрические фигуры (окружности, прямоугольники, дуги и т.д.). При этом стиль линии, которой вычерчивается контур той или иной фигуры также устанавливается процедурой SetLineStyle. [5]

3.7 Построение прямоугольников

Для построения прямоугольных фигур имеется несколько процедур. Первая из них - процедура вычерчивания одномерного прямоугольника:

Rectangle( X1, Y1, X2, Y2 ),

где X1, Y1 - координаты верхнего левого угла, X2, Y2 - координаты правого нижнего угла прямоугольника. Ниже в качестве примера приведен фрагмент, который выводит на экран 100 разноцветных прямоугольников произвольной высоты:

FOR i:=1 TO 100 DO BEGIN

SetColor( Random(15) ); { “случайный” цвет }

Rectangle( 200, Random(300), 250, 300 ); { i-й прямоугольник }

Delay(100); { задержка 100 мс }

ClearDevice { очистка экрана }

END;

Для построения закрашенных прямоугольников используется процедура:

Bar( X1, Y1, X2, Y2 ),

где параметры X1, Y2, X2 и Y2 имеют то же смысл, что и в процедуре Rectangle.

Цвет и стиль закраски устанавливается процедурой

SetFillStyle( Pattern, Color ),

где параметр Pattern определяет стиль (шаблон) заливки, а параметр Color - ее цвет. Возможные значения параметра Pattern приведены в таблице 3. [5]

Таблица 3. Стили заливки

Описание стиля

Константа

Описание стиля

Константа

Заполнение цветом фона (SetBkColor)

EmtyFill = 0

Вертикально-

горизонтальная

штриховка

HatchFill = 7

Заполнение текущим цветом(SetColor)

SolidFill = 1

Разреженная

штриховка

крест-накрест

XhatchFill = 8

Заполнение символами - -

LineFill = 2

Частая штриховка

крест-накрест

InterLeaveFill = 9

Заполнение символами // нормальной толщины

LtslashFill = 3

Заполнение

разреженными

точками

WideDotFill = 10

Заполнение символами // удвоенной толщины

SlashFill = 4

Заполнение частыми точками

CloseDotFill = 11

Заполнение символами \\ нормальной толщины

BkSlashFill = 5

Пользовательский

стиль

UserFill = 12

Заполнение символами \\ удвоенной толщины

LtBkSlashFill = 6

Для построения “объемных” закрашенных прямоугольников используется процедура:

Bar3D( X1, Y1, X2, Y2, Depth, Top ).

Тип и цвет заливки устанавливается процедурой SetFillStyle. Параметр Depth определяет глубину трехмерного контура. Чаще всего его значение равно четверти ширины прямоугольника:

Depth := (X2-X1) div 4;

Параметр Top определяет, строить над прямоугольником вершину (True) или нет (False). Например:

SetFillStyle( XhatchFill, Red );

Bar3D( 10, 10, 50, 100, 10, True ); [5]

3.8 Построение дуг и окружностей

Процедура вычерчивания окружностей текущим цветом имеет вид:

Circle( X, Y, Radius ),

где X, Y - координаты центра окружности, а Radius - ее радиус. Например, следующий фрагмент выводит ярко-зеленую окружность c радиусом 50 пикселов и центром в точке 450, 100:

SetColor( LightGreen );

Circle( 450, 100, 50 );

Для вычерчивания дуг используется процедура

Arc( X, Y, StartAngle, EndAngle, Radius ),

где X, Y - координаты центра дуги, StartAngle и EndAngle - начальный и конечный угол (в градусах), Radius - радиус. Очевидно, что если StartAngle = 0, а EndAngle = 359, то вычерчивается полная окружность. [5]

3.9 Заполнение замкнутых областей

Для заполнения внутренней или внешней области фигуры определенным образцом закраски используется процедура

FloodFill( X, Y, Border ),

где X, Y - координаты точки внутри или вне фигуры, Border - цвет контура фигуры. Если точка (X, Y) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть. [5]

Пример: Красная окружность заполненная зеленой штриховкой

SetColor( Red ); Circle( 450, 100, 50 );

SetFillStyle( SlashFill, Green );

FloodFill( 450, 100, Red );

4. Вывод текста в графическом режиме

4.1 Вывод текста

В графическом режиме стандартные процедуры вывода Write и Writeln не работают. Для вывода текстовой информации на графический экран используют две процедуры OutText и OutTextXY. Процедура

OutText( TextString )

выводит на экран строку текста начиная с текущего положения графического курсора. Например:

OutText( `Добро пожаловать!' );

Явный недостаток этой процедуры - нельзя указать произвольную точку начала вывода. Его можно устранить с помощью процедуры MoveTo, которая перемещает указатель в нужную позицию, но лучше воспользоваться процедурой

OutTextXY( X, Y, TextString ),

где X, Y - координаты точки начала вывода текста, TextString - константа или переменная строкового типа string. Например, чтобы вывести сообщение “Для продолжения нажмите любую клавишу ...”, начиная с точки 20, 400 надо записать: [5]

OutTextXY( 20, 400, `Для продолжения нажмите любую клавишу ...' );

4.2 Вывод числовых значений

Для начинающих проблемой является вывод числовых данных на графический экран, ибо в модуле Graph нет предназначенных для этого процедур. Выход прост: преобразовать числовое значение в строковое с помощью процедуры Str.[5]

Примеры:

X := 12.5;

Str(X:4:1, S) { преобразование числа x в строку S }

OutTextXY( 10, 10, S ); { вывод строки S }

max := 345.55;

Str(max:6:2, S) { преобразование числа max в строку S }

OutTextXY( 10, 50, `Максимальное значение = ' + S ); { вывод суммы двух строк }

Практические задачи.

Рассмотрим листинги программ, при которых решается задачи построения графиков функции. Например построить график функции полинома y=a+bx+c

где a, b, c вводимые параметры . см. листинг 1.

program graphik;

uses graphabc;

const

n=20;

x=300;

y=70;

var

a,b,c: integer;

function func (x:integer): integer;

begin

func:=a*sqr(x)+ b*x + c

end;

procedure plotGraph;

var

i:integer;

begin

setPenColor(clBlue);

for I:=-n to n-1 do

begin

LINE(I+N+X, FUNC(I-1) + y, I+N+X, FUNC(I) + Y);

end;

end;

begin

writeln ('введите a, b, c');

readln(a,b,c);

plotGraph();

end.

Листинг 1.

Следующая задача заключается в построении графика синусоиды y=sin ax при вводимом параметре a. См. листинг 2.

program graphik2;

uses graphabc;

const

n=20;

x=300;

y=70;

var

a: integer;

function func (x:integer): integer;

begin

func:=round(sin(a*x));

end;

procedure plotGraph;

var

i:integer;

begin

setPenColor(clBlue);

for I:=-n to n-1 do

begin

LINE(I+N+X, FUNC(I-1) + y, I+N+X, FUNC(I) + Y);

end;

end;

begin

writeln ('введите a');

readln(a);

plotGraph();

end.

Так же с помощью модуля Graph можно создавать игровые приложения. Например игра в змейку. Мы приведем часть программы из-за большого лексического объема.

program Graphic;

uses GraphABC, crt, Events;

type

SnakeElement = record

x: integer;//x-координата элемента

y: integer;//y-координата элемента

end;

TApple = record

x: integer;//x-координата яблока

y: integer;//y-координата яблока

Листинг 3

end;

const

CEIL_SIZE = 40;//размер одной клетки в пикселях

COLS = 20;//количество столбцов

ROWS = 10;//количество строк

START_SNAKE_LENGTH = 5;//начальная длина змейки

MAX_SNAKE_LENGTH = 15;//максимальная длина змейки

BODY_COLOR = clGreen;//цвет тела

HEAD_COLOR = clBrown;//цвет головы

APPLE_COLOR = clRed;//цвет яблока

START_SNAKE_SPEED = 1;//начальная скорость змейки

MAX_SNAKE_SPEED = 5;//максимальная скорость змейки

//статус игры

STATUS_PLAY = 0;

STATUS_PAUSE = 1;

//направление движения

LEFT = 1;

RIGHT = 2;

UP = 3;

DOWN = 4;

var

{

snake_length - текущая длина змейки

snake_speed - текущая длина змейки

status - текущий статус игры (пауза/игра)

direction - текущее направление движения змейки

speed_delay - задержка между отрисовками змейки

}

snake_length, snake_speed, status, direction, speed_delay: integer;

{

snake_body - массив элементов типа SnakeElement

}

snake_body: array[0..MAX_SNAKE_LENGTH] of SnakeElement;

{

apple - "яблоко"

}

apple: TApple;

//процедура генерации координат яблока

procedure GenerateApple;

var

i: integer;

cross: boolean;

begin

while (true) do

begin

cross:=false;

for i:=0 to snake_length - 1 do

begin

apple.x := random(COLS);

apple.y := random(ROWS);

Продолжение листинга 3.

if ((snake_body[i].x = apple.x) and (snake_body[i].y = apple.y)) then cross:=true;

end;

if not cross then break;

end;

end;

Конец листинга 3.

Заключение

Из вышесказанного мы разобрали такие основные графические процедуры и функции как:

Линия.

Пример программы с использованием процедуры «линия».

См. листинг 4.

Program liniay;

uses Graph;

Var gd,gm:integer;

begin

gd:=detect;

Initgraph(gd,gm,'c:\bp\bgi');

line(100,50,500,250);

Readln;

end.

Листинг 4.

Прямоугольник.

Пример программы с использованием процедуры «прямоугольник».

См. листинг 5.

Program pryamougolnik;

uses Graph;

Var gd,gm:integer;

begin

gd:=detect;

Initgraph(gd,gm,'c:\bp\bgi');

Rectangle(50,50,200,200);

Readln;

end.

Листинг 5.

Окружность

Пример программы с использованием процедуры «окружность».

См. листинг 6.

Program circle;

uses Graph;

Var gd,gm:integer;

begin

gd:=detect;

Initgraph(gd,gm,'c:\bp\bgi');

Circle(500,200,100);

FloodFill(500,200,4);

Readln;

end.

Листинг 6.

Дуга.

Пример программы с использованием процедуры «дуга». См. листинг 7.

Program duga;

uses Graph;

Var gd,gm:integer;

begin

gd:=detect;

Initgraph(gd,gm,'c:\bp\bgi');

Arc(300,250,150,45,135);

Readln;

end.

Листинг 7.

Установка цвета пера и цвета фона. Примеры установки см. листинг 8 и 9.

Program liniay;

uses Graph;

Var gd,gm:integer;

begin

gd:=detect;

Initgraph(gd,gm,'c:\bp\bgi');

setcolor(№ цвета);

line(30,30,400,350);

Readln;

end.

Листинг 8.

program fon;

uses Graph;

Var gd,gm:integer;

begin

gd:=detect;

Initgraph(gd,gm,'c:\bp\bgi');

SetBkColor(15);

Readln;

end.

Листинг 9.

Решены задачи и приведены компьютерные графические программы:

Графики функций. См. листинг 10 и 11.

program graphik;

uses graphabc;

const

n=20;

x=300;

y=70;

var

a,b,c: integer;

function func (x:integer): integer;

begin

func:=a*sqr(x)+ b*x + c

end;

procedure plotGraph;

var

i:integer;

begin

setPenColor(clBlue);

for I:=-n to n-1 do

begin

LINE(I+N+X, FUNC(I-1) + y, I+N+X, FUNC(I) + Y);

end;

end;

begin

writeln ('введите a, b, c');

readln(a,b,c);

plotGraph();

end.

Листинг 10.

program graphik2;

uses graphabc;

const

n=20;

x=300;

y=70;

var

a: integer;

function func (x:integer): integer;

begin

func:=round(sin(a*x));

end;

procedure plotGraph;

var

i:integer;

begin

setPenColor(clBlue);

for I:=-n to n-1 do

begin

LINE(I+N+X, FUNC(I-1) + y, I+N+X, FUNC(I) + Y);

end;

end;

begin

writeln ('введите a');

readln(a);

plotGraph();end.

Листинг 11.

Игра в змейку. См. листинг 3.

Рис. 1 и 2 демонстрируют игровой процесс.

Рис. 1

Рис. 2

Список литературы

Немнюгин С. А. Turbo Pascal. Программирование на языке высокого уровня: учебник для вузов. 2-е изд. -- СПб.: Питер, 2006. -- 544 с.: ил.

PascalABC.net. Обзор. -- Режим доступа: http://pascalabc.net/downloads/pabcnethelp/PABCUnits/GraphABC

Модули Паскаля(Pascal). Модуль Graph в Паскале. -- Режим доступа: http://life-prog.ru/view_zam.php?cat=1&id=34&page=2

ИНТУИТ. Национальный открытый университет.Модульное программирование. -- Режим доступа: http://www.intuit.ru/studies/courses/628/484/lecture/10990?page=4

Графический режим. Построение графических изображений. -- Режим доступа: http://physics.herzen.spb.ru/library/03/01/pp/TPHelp/graph.htm

Размещено на Allbest.ru

...

Подобные документы

  • Файлы BGI и содержимое модуля Graph, инициализация и закрытие графических режимов, их классификация, анализ и управление. Рисование графических примитивов и фигур, управление цветами и шаблонами, вывод текста, выбор шрифта и стиля, сжатия изображения.

    реферат [65,3 K], добавлен 31.05.2010

  • Понятие и история развития языка Turbo Pascal, оценка его графических возможностей и особенностей. Инициализация графического режима. Управление экраном и окнами, цветом и фоном, принципы работы с текстом. Построение графиков функций и изображений.

    курсовая работа [159,9 K], добавлен 17.12.2014

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

    контрольная работа [46,2 K], добавлен 22.07.2011

  • Разработка эскизного и технического проектов программы "Helpopr" (ввод, хранение и вывод данных на дисплей по запросу пользователя). Язык программирования Turbo Pascal. Описание алгоритма программы. Требования к компьютеру и программному обеспечению.

    курсовая работа [198,1 K], добавлен 03.02.2010

  • Алгоритмічна мова програмування універсального призначення Turbo Pascal. Розробка і створення програми для гри "Шибениця". Алгоритм функціонування программи, блок-схема алгоритму. Використання додаткових модулів Graph та Crt у процессі створення програми.

    курсовая работа [2,0 M], добавлен 23.06.2010

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • Структура и основные элементы языка Turbo Pascal. Алгоритм составления простейших программ на Turbo Pascal. Применение условного оператора и сильноветвящихся алгоритмов. Циклы с предусловием и постусловием, сочетание циклических и условных операторов.

    реферат [64,0 K], добавлен 20.03.2016

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

  • Проектирование программ в среде Рascal с интерфейсом типа "Меню". Разработка и отладка программы сортировки массива данных. Освоение методов проектирования Pascal-программ с использованием графических процедур и функций из стандартного модуля Graph.

    контрольная работа [581,1 K], добавлен 16.01.2015

  • Использование графических возможностей Турбо Паскаля, подключение графического модуля Graph. Графические функции и процедуры. Общая структура графической программы. Построение фигур, определение цветов и стилей, работа с текстом, сообщения об ошибках.

    реферат [109,3 K], добавлен 28.04.2010

  • Решения задачи графическим и программным способами. Описание алгоритма решения графическим способом, укрупненная схема алгоритма. Ввод элементов двумерного массива, вывод преобразованного массива, разработка программы на языке pascal, листинг программы.

    курсовая работа [115,5 K], добавлен 22.05.2010

  • Программирование и структура программы на языке Turbo Pascal и MS Visual C++6.0. Вычисление площади круга. Реализация программы в системе Turbo Pascal и MS VISUAL C++6.0 для Windows. Структура окна ТРW. Сохранение текста программы в файле на диске.

    лабораторная работа [3,7 M], добавлен 22.03.2012

  • Мультимодульная программа расчёта и построения графиков переходного процесса в электрической цепи, ее процедуры и функции. Распечатка текста и графики процесса, построенные с использованием стандартных модулей Турбо Паскаля CRT и GRAPH и Microsoft Excel.

    курсовая работа [880,7 K], добавлен 07.12.2011

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

    курсовая работа [565,6 K], добавлен 18.08.2008

  • Три типи файлів, які містять програми на Turbo Pascal. Призначення модулів та їх структура: заголовок, інтерфейсна частина та кінець. Стандартні модулі, їх особливості. Компіляція програм, які використовують модулі. Підключення модулів до програм.

    контрольная работа [19,6 K], добавлен 18.05.2009

  • Описание математических методов представления и обработки графических изображений. Описание разработанного программного дополнения. Описание функций и их атрибутов. Представление и обработка графических изображений. Результаты тестирования программы.

    курсовая работа [1,7 M], добавлен 27.01.2015

  • Разработка программы, реализующей игру "Змейка" в среде Turbo Pascal. Возможность создания игры в модуле библиотеки crt, что позволяет использовать программу на компьютерах без графических библиотек и компьютерах, имеющих малый объём оперативной памяти.

    курсовая работа [190,5 K], добавлен 02.02.2013

  • Визначення основних математичних понять по роботі із 3D-графікою і операцій над векторами і матрицями. Алгоритм видалення невидимих ребер та граней при побудові непрозорих об'єктів за допомогою модуля Graph 3D. Методи програмування анімації і спрайтів.

    курсовая работа [345,0 K], добавлен 16.09.2010

  • Використання мови програмування Turbo Pascal, алгоритмів та графічних примітивів модуля Graph. Розробка та реалізація програми для сортування вагонів з довільного порядку в порядок через один. Присвоєння початкових значень та сортувальний алгоритм.

    курсовая работа [1,2 M], добавлен 23.06.2010

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

    контрольная работа [150,4 K], добавлен 03.05.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.