Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
65
Добавлен:
18.05.2015
Размер:
452.43 Кб
Скачать

21

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 200 и длительность 750, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 11

1.Открыть окно с координатами х1=9, y1=7, x2=73, y2=22.

2.Окрасить его в коричневый цвет.

3.Установить цвет символов - белый.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=4, y1=3, x2=37, y2=21.

8.Повторить пункты 2-5, изменив цвет фона на красный и символов на желтый.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 500 и длительность 550, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 12

1.Открыть окно с координатами х1=10, y1=3, x2=75, y2=22.

2.Окрасить его в сиреневый цвет.

3.Установить цвет символов - белый.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=5, y1=5, x2=38, y2=19.

8.Повторить пункты 2-5, изменив цвет фона на синий и символов на желтый.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 700 и длительность 450, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

21

22

Ва р и а н т 13

1.Открыть окно с координатами х1=11, y1=4, x2=71, y2=22.

2.Окрасить его в зеленый цвет.

3.Установить цвет символов - черный.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=6, y1=1, x2=34, y2=12.

8.Повторить п.п. 2-5, заменив цвет фона на голубой и символов на красный.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 1100 и длительность 350, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 14

1.Открыть окно с координатами х1=11, y1=5, x2=66, y2=23.

2.Окрасить его в серый цвет.

3.Установить цвет символов - сиреневый.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=4, y1=3, x2=33, y2=14.

8.Повторить пункты 2-5, заменив цвет фона на черный и символов на белый.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА КООРДИНАТ И ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 300 и длительность 250, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 15

1.Открыть окно с координатами х1=7, y1=3, x2=74, y2=21.

2.Окрасить его в ceрый цвет.

3.Установить цвет символов - красный.

4.Вывести на экран фамилии и имена членов бригады, расположив

22

23

информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=5, y1=3, x2=35, y2=19.

8.Повторить пункты 2-5, изменив цвет фона на голубой и символов на желтый.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА И КООРДИНАТ".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 400 и длительность 450, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 16

1.Открыть окно с координатами х1=14, y1=3, x2=74, y2=22.

2.Окрасить его в синий цвет.

3.Установить цвет символов - желтый.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=2, y1=2, x2=38, y2=19.

8.Повторить пункты 2-5, изменив цвет фона на серый и символов на яркокрасный.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА КООРДИНАТ И ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 800 и длительность 450, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 17

1.Открыть окно с координатами х1=7, y1=2, x2=74, y2=23.

2.Окрасить его в черный цвет.

3.Установить цвет символов - белый.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=4, y1=4, x2=34, y2=19.

8.Повторить пункты 2-5, изменив цвет фона на серый и символов на синий.

9.Восстановить текстовый режим TextMode(co80).

23

24

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 300 и длительность 450, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 18

1.Открыть окно с координатами х1=2, y1=5, x2=78, y2=20.

2.Окрасить его в зеленый цвет.

3.Установить цвет символов - красный.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=6, y1=4, x2=38, y2=18.

8.Повторить пункты 2-5, изменив цвет фона на голубой и символов на синий.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 150 и длительность 350, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

Ва р и а н т 19

1.Открыть окно с координатами х1=3, y1=3, x2=78, y2=20.

2.Окрасить его в серый цвет.

3.Установить цвет символов - черный.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=4, y1=4, x2=36, y2=22.

8.Повторить пункты 2-5, изменив цвет фона на зеленый и символов на черный.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: " П Р О В Е Р К А З В У К А".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 350 и длительность 250, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

24

25

Ва р и а н т 20

1.Открыть окно с координатами х1=6, y1=4, x2=75, y2=22.

2.Окрасить его в синий цвет.

3.Установить цвет символов - желтый.

4.Вывести на экран фамилии и имена членов бригады, расположив информацию в центре окна.

5.Очистить текущее окно.

6.Установить режим TextMode(co40).

7.Открыть окно с координатами х1=5, y1=2, x2=38, y2=19.

8.Повторить пункты 2-5, изменив цвет фона на серый и символов - желтый.

9.Восстановить текстовый режим TextMode(co80).

10.Переместить курсор в центр окна.

11.Вывести сообщение: "ПРОВЕРКА ЗВУКА".

12.Определить и вывести на экран координаты курсора.

13.Установить частоту звука 200 и длительность 450, а затем отключить звук

14.Восстановить цвета и режимы.

Вставлять функцию Readkey во всех необходимых для контроля местах.

2.2 Модуль GRAPH

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

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

Настройка графических средств на работу с конкретным адаптером достигается за счет подключения нужного графического драйвера. Драйвер - это специальная программа, осуществляющая управление каким - либо техническим средством компьютера. Графические драйверы разработаны фирмой Borland практически для всех типов адаптеров. Обычно они располагаются на диске в подкаталоге BGI (который, в свою очередь, входит в каталог с системой Тurbo Pascal - ТР или Borland Pascal - BP) в виде файлов с расширением bgi (Borland Graphics Interface - графический интерфейс фирмы Borland).

Для адаптеров EGA, VGA, SVGA будем использовать графический драйвер egavga.bgi. Подробнее о типах адаптеров и соответствующих им драйверах можно ознакомиться в [1].

25

26

2.2.1 Инициализация и закрытие графического режима

Инициализация графического режима адаптера производится с помощью процедуры

InitGraph(Драйвер, Режим, Путь к драйверу);

Драйвер - переменная типа Integer, определяет тип графического драйвера; Режим - переменная того же типа, задающая режим работы графического адаптера; Путь к драйверу - выражение типа String, содержащее путь к файлу драйверу.

Для задания двух первых параметров в модуле Graph определены специальные константы, но проще всего использовать для указания типа драйвера константу с именем Detect, что позволяет не указывать режим.

Путь к драйверу представляет собой последовательность, состоящую из имени диска и списка имен каталогов и подкаталогов, разделенных символом "\" и заключенную в апострофы, в которых находится файл драйвера. Например, для нашего ВЦ этот путь имеет вид: 'P:\BP\7.0\BGI'.

Если скопировать файл egavga.bgi в текущий каталог (из которого вы вошли в среду Турбо Паскаль), то путь к файлу состоит из двух апострофов ('').

Анализ правильности открытия графического режима, производится с помощью функции GraphResult. Она возвращает значение типа Integer. Если ошибок нет, то результат равен 0, в противном случае результатом будет отрицательное число, значение которого определяет тип ошибки. Приведем некоторые из них:

-1 - не инициирован графический режим; -2 - не определен тип драйвера;

-3 - не найден графический драйвер и т. д. (см []).

Для определения типа ошибки можно использовать функцию GraphErrorMsg, которая выводит сообщение, соответствующее типу ошибки.

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

Procedure Init_Graph_Mode; Var

Gr_Driver, Gr_Mode, Error_Code: Integer;

Begin

Gr_driver:= Detect; {Автоопределение драйвера и режима} InitGraph(Gr_Driver, Gr_mode, ''); {Инициализация графического

режима - файл с дравером должен располагаться в текущем каталоге} Error_Code:= GraphResult;

If Error_Code <> 0 then Begin

Writeln(' Сообщение об ошибке:',GraphErrorMsg(Error_Code)); Halt; { Выход из программы}

End

{Ошибок не обнаружено}

End; { Конец процедуры инициализации графического режима}

26

27

Закрытие текстового режима осуществляется с помощью вызова процедуры CloseGraph. Если в программе есть вызов процедуры InitGraph, то должен присутствовать соответствующий вызов процедуры CloseGraph. Эта процедура очищает экран и переводит дисплей в текстовый режим.

Водной программе можно несколько раз выполнять инициализацию графического режима и его закрытие.

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

ClearDevice.

Впроцессе работы в графическом режиме можно перейти в текстовый режим и затем снова возвратиться в графический режим.

Процедура RestoreCRTMode служит для перехода в текстовый режим (без явного закрытия графического режима). Для возврата назад в графический можно режим использовать функцию GetGraphMode, которая возвращает значение типа Integer соответствующее коду режима работы графического драйвера и процедуру SetGraphMode, которая устанавливает новый графический режим.

Для возврата в графический режим после вызова процедуры RestoreCRTMode необходимо произвести вызов процедуры: SetGraphMode(GetGraphMode);

Следующая простая программа иллюстрирует переход в текстовый режим и возврат в графический.

Uses crt,graph; begin

Init_Graph_Mode; {Используем процедуру описанную ранее} outtextxy(270,200,'This is graph mode');

readkey;

RestoreCRTMode;

gotoxy(30,12); writeln('This is text mode'); readkey;

SetGraphMode(GetGraphMode); outtextxy(270,200,'Return in graph mode '); readkey;

end.

2.2.2 Графический курсор, координаты экрана в графическом режиме

Графический курсор или иначе "текущий указатель", в отличие от текстового курсора, невидим на экране. Для определения текущего положения графического курсора используются две функции, возвращающие результат типа integer: GetX - координата курсора по горизонтали, GetY - координата курсора по вертикали.

Любая координата на графическом экране задается относительно левого верхнего угла. В свою очередь этот угол имеет координаты (0.0) - это минимальные координаты экрана. Максимальные координаты графического

27

28

экрана определяются с помощью двух функций: GetMaxX - по горизонтали и GetMaxY - по вертикали. Обе функции выдают результат типа Integer.

Все координаты в графическом режиме задаются в пикселях и имеют тип

Integer.

Для перемещения графического курсора используются две процедуры: MoveTo(X,Y) - перемещение в точку с координатами X и Y; MoveRel(dx,dy) - перемещение курсора на dx - пикселей по горизонтали

dy - пикселей по вертикали.

Кроме того, курсор перемещается также во время выполнения некоторых процедур, например при рисовании линий, выводе текстовой информации.

2.2.3 Управление цветом пера и фона

Различные адаптеры поддерживают разное количество цветов, выводимых одновременно на экран в графическом режиме. Но для всех драйверов фирмы Borland (т.е. BGI - драйверов) число цветов ограничено диапазоном от 0 до 15. Нумерация и имена констант, задающих цвета, такие же как в текстовом режиме.

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

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

Цвет пера устанавливается процедурой SetColor(Color), Color - переменная типа Word, выбираемая из диапазона от 0 до GetMaxColor (для адаптера VGA от 0 до 15).

Цвет фона устанавливается процедурой SetBkColor(Color), Color - переменная типа Word, выбираемая из диапазона от 0 до GetMaxColor.

При инициализации графики по умолчанию цвет фона равен 0 (черный - Black), а цвет пера равен значению GetMaxColor ( для VGA равен 15 - White -

белый).

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

Для определения текущих значений цвета фона и пера используются функции GetBkColor и GetColor, выдающие результат типа Word.

Следующая программа демонстрирует назначение цветов фона и пера. Uses graph;

Var xmax,ymax:word; sc,scc,sx,sy:string; c,cc:word;

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

Procedure Ris; begin

xmax:=getmaxx; ymax:=getmaxy; { Определение размеров экрана}

28

29

str(xmax,sx);str(ymax,sy); { Перевод числовых значений в строковые для

 

вывода на экран в графическом режиме}

 

outtextxy(5,5,'Размеры экрана = '+ sx + ' * ' + sy); { вывод сообщения}

 

readkey;

 

 

rectangle(100,150,350,200); { Рисование прямоугольника}

 

c:=GetBkcolor;

{ Опрос цвета фона}

 

cc:=GetColor;

{ Опрос цвета пера}

 

str(c,sc); str(cc,scc);

 

outtextxy(200,100,'Цвет фона = '+sc+' Цвет символов = '+scc);

 

readkey;

 

 

setbkcolor(7);

{ Установка нового цвета фона}

 

setcolor(4);

{Установка нового цвета пера}

 

rectangle(400,150,550,200);

 

c:=GetBkcolor;

 

cc:=GetColor;

 

 

str(c,sc); str(cc,scc);

 

outtextxy(200,230,'Цвет фона = '+sc+' Цвет символов = '+scc);

 

readkey;

 

 

setbkcolor(0);

 

 

setcolor(14);

 

 

rectangle(100,250,550,300);

 

c:=GetBkcolor;

 

 

cc:=GetColor;

 

 

str(c,sc); str(cc,scc);

 

outtextxy(200,350,'Цвет фона = '+sc+' Цвет символов = '+scc);

 

readkey;

 

 

end;

 

 

begin {main program}

 

Init_Graph_Mode; {Используем процедуру инициализации из предыдущего

 

Ris;

примера}

 

 

 

Closegraph;

 

 

end.

2.2.4 Рисование точек и линий

 

 

 

Для рисования точек используется процедура PutPixel(x, y, C);

здесь

x, y - координаты точки экрана, а С - её цвет. С - переменная типа Word. Функция GetPixel(x, y) - выдает номер цвета элемента графического

изображения в точке с координатами х и y.

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

Line(x1,y1,x2,y2);

x1, y1, x2, y2 - координаты начала и конца отрезка, переменные типа integer.

2)Рисование линии от текущего указателя до точки с заданными координатами x и y: LineTo(x,y);

29

30

3)Рисование линии от текущей позиции длиной, определяемой заданием смещений по горизонтали и вертикали dx и dy: LineRel(dx,dy);

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

Для вычерчиваемых линий можно задать стиль (толщину и тип линии). Для задания стиля в модуле Graph определены тип и константы:

Type

LineSettingsType = Record

LineStyle : Word; {Тип линии} Pattern : Word; {Шаблон типа} Thickness : Word; {Толщина линии}

End;

Const

{Для значений поля LineStyle } Solidln = 0 { Сплошная линия} Dottedln = 1;{ Точечная линия}

Centerln - 2; { Штрих-пунктирная линия} Dashedln = 3; {Пунктирная линия}

UserBitln = 4 {Тип линий, определяемый пользователем - задается параметром Pattern - шаблон}

{Для значений поля Thickness}

NormWidth = 1; {Линия толщиной в 1 пиксель} ThickWidth = 3; {Линия толщиной в 3 пикселя}

По умолчанию используется сплошная линия толщиной в 1 пиксель. Для установки нового стиля линий используется процедура:

SetLineStyle(Тип линии, Шаблон, Толщина),

где Тип линии выбирается из вышеописанных констант от 0 до 4 (или от Solidln до UserBitln); Шаблон берется равным 0, если параметр Тип линии любой, кроме 4 (UserBitln); Толщина - константа, равная 1 или 3.

Например, для рисования толстой сплошной линии необходимо задать: SetLineStyle(0,0,3) или SetLineStyle(Solidln,0,ThickWidth).

Пользователь может задать свой тип линии, отличный от типов заданных в модуле Graph. Для этого необходимо разработать свой шаблон и задать тип линии

4 (или UserBitln).

Линия представляет собой совокупность отрезков, каждый из которых имеет длину 16 пикселей. Если длина линии не делится на 16 нацело, то последний отрезок обрезается. Можно задать свой шаблон как комбинацию из шестнадцати светящихся или погашенных пикселей. Его представляют как последовательность, состоящую из 0 и 1: 1 - светиться, 0 - погашено.

Например, зададим свою пунктирную линию:

1111000011110000 - всего 16 бит или разрядов. Это двоичное представление, но в Турбо Паскале его необходимо перевести в шестнадцатеричную форму (это будет шестнадцатеричное число $F0F0), а затем подставить его вместо параметра,

30