logo
TurboProlog / Документация / TOM_2

Initgraph/5 Графика

Назначение Инициализирует графическую систему

Обращение initgraph(ГрафДрайвер,ГрафРежим,

НовДрайвер,НовРежим,Путькдрайверу)

Домены (integer,integer,integer,integer,string)

Шаблоны описания (вх,вх,вых,вых,вх)

аргументов

Описание initgraph инициализирует графическую систему для

загрузки графического драйвера с диска (или

определяет уже загруженный драйвер) и переводит

систему в графический режим.

initgraph связывает переменные НовДрайвер и НовРежим

с фактически загруженным графическим драйвером и

графическим режимом. Вы можете указать использование

определенного графического драйвера и режима или

автоматически определить и загрузить графический

драйвер во время выполнения программы.

Если вы вызвали initgraph для автоматического

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

detectgraph для выбора графического драйвера и

режима. initgraph также устанавливает все значения

графики по умолчанию (текущую позицию, палитру, цвет,

окно и т.д.).

Обычно, initgraph в первую очередь распределяет

доступную память для графического драйвера, а потом

загружает соответствующий .BGI файл с диска. В

качестве альтернативы такой динамической схемы можно

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

файлом вашей программы.

Переменная ПутькДрайверу описывает каталог, в котором

initgraph ищет графический драйвер (.BGI файл) для

загрузки. Если необходимый драйвер не найден, то

повторяется поиск в текущем каталоге.

Соответственно, если ПутькДрайверу пустой (""), файлы

драйверов (*.BGI) должны быть в текущем каталоге.

Графдрайвер есть целое число, определяющее

графический драйвер.

Вы можете использовать символьные константы,

описанные в GRAPDECL.PRO, вместо чисел:

-----------------------------------------------------

Константа Значение

-----------------------------------------------------

DETECT 0 (автоматическое определение)

CGA 1

MCGA 2

EGA 3

EGA64 4

EGAMONO 5

IBM8514 6

HERCMONO 7

ATT400 8

VGA 9

PC3270 10

-----------------------------------------------------

ГрафРежим есть целое число, определяющее начальный

графический режим, если только в ГрафДрайвере не

указан detect (в этом случае выбирается наибольшая

разрешающая способность выбранного драйвера).

Вы можете использовать символьные константы,

описанные в GRAPDECL.PRO, вместо чисел для описания

графического режима:

-----------------------------------------------------------------

Графический Графический Колонка

драйвер режим Знач. x строка Палитра Страницы

-----------------------------------------------------------------

CGA CGAC0 0 320x200 С0 1

CGAC1 1 320x200 С1 1

CGAC2 2 320x200 С2 1

CGAC3 3 320x200 C3 1

CGAHI 4 640x200 2 цвета 1

MCGA MCGAC0 0 320x200 С0 1

MCGAC1 1 320x200 С1 1

MCGAC2 2 320x200 С2 1

MCGAC3 3 320x200 С3 1

MCGAMED 4 640x200 2 цвета 1

MCGAHI 5 640x480 2 цвета 1

EGA EGALO 0 640x200 16 цветов 4

EGAHI 1 640x350 16 цветов 2

EGA64 EGA64LO 0 640x200 16 цветов 1

EGA64HI1 640x350 4 цвета 1

EGAMONO EGAMONOHI 3 640x350 2 цвета 1*

EGAMONOHI 3 640x350 2 цвета 2**

IBM8514IBM8415LO0 640x480 256 цветов 1

IBM8415НI0 1024x768 256 цветов 1

HERC HERCMONOHI 0 720x348 2 цвета 2

ATT400 ATT400C0 0 320x200 C0 1

ATT400C1 1 320x200 C1 1

ATT400C2 2 320x200 C2 1

ATT400C3 3 320x200 C3 1

ATT400MED 4 640x200 2 цвета 1

ATT400HI 5 640x400 2 цвета 1

VGA VGALO 0 640x200 16 цветов 2

VGAMED 1 640x350 16 цветов 2

VGAHI 2 640x480 16 цветов 1

VGAXLO

PC3270 PC3270HI 0 720x350 2 цвета 1

* 64K на EGAMONO карте

** 256K на EGAMONO карте

-----------------------------------------------------------------

Палитры С0, С1, С2 и С3 ссылаются на четыре заранее

определенные четырехцветные палитры для режима CGA

или с ним совместимого. Вы можете выбрать любой цвет

фона (вход #0) в каждой из этих палитр, но другие

цвета будут постоянными.

Эти палитры, более подробно описанные в Руководстве

Пользователя Турбо Пролога, представлены в следующей

таблице:

-----------------------------------------------------

Номер ц в е т а в п а л и т р е

палитры 1 2 3

-----------------------------------------------------

0 ярко-зеленый розовый желтый

1 ярко-голубой малиновый белый

2 зеленый красный коричневый

3 голубой фиолетовый светло-серый

-----------------------------------------------------

initgraph связывает переменные НовДрайвер и НовРежим

с фактическими текущим графическим драйвером и

текущим графическим режимом.

Ошибки Возможны ошибки со следующими кодами:

6001 Невозможно определить графическую карту

6002 Невозможно найти файл драйвера

6003 Неправильный драйвер

6004 Не хватает памяти для загрузки драйвера

Смотри closegraph,detectgraph,getgraphmode,restorecrtmode

Пример

include "GRAPDECL.PRO"

predicates

Demo

Demo2

Convertmode(Integer,Integer)

Error(Integer)

clauses

demo:-Trap(demo2,E,error(E)).

demo2:- detectgraph(GraphDriver,GraphMode),

writef(

"Определен графический драйвер % режим % \n",

GraphDriver,GraphMode),

readchar(_),

convertmode(GraphMode,NewMode),

initgraph(GraphDriver,NewMode,_,_, ""),

getmaxx(X),

X2=X div 2,

getmaxy(Y),

bar(0,0,X2,Y),

readchar(_),

closegraph.

convertmode(egaHi,egaLo):-!.

/* Переключает, если режим EGA определен */

convertmode(Mode,Mode).

error(E):-

write("\nОшибка во время выполнения:",E),

errormsg("prolog.err",E,Msg,ExtraHlp),

write("\n",Msg,"\n",ExtraHlp),

flush(keyboard),

readchar(_),

exit(1).

goal

Demo.

inkey/1

Назначение Читает символ из текущего устройства ввода, если оно

доступно

Обращение inkey(Знак)

Домены (char)

Шаблоны описания (вых)

аргументов

Описание inkey читает единственный символ из текущего

устройства ввода, если оно доступно. Если символ не

имеется в наличии, inkey несогласуется. На практике,

когда символы являются связанными (например, с

клавиатурой) это значит, что для того, чтобы inkey

согласовался, пользователь сначала должен их набрать.

Неудачное Если клавиша не нажималась.

завершение

Ошибки Нет ошибок.

Пример predicates

wait(char)

test(string)

clauses

wait(X) :- inkey(Y), X=Y, !.

wait(X) :- write(X), wait(X).

test(W) :- frontchar(W, Ch, R),!,wait(Ch),write(Ch),

test(R).

test(_).

goal

makewindow(2, 7, 7, "Нажать сейчас клавишу",

0, 5, 8, 70),

makewindow(1, 7, 7, "Понятые буквы",

8, 10, 10, 60),

Word = "Петя Петров рисует картину",

write("пожалуйста введите :\n\t", Word, "\n\t"),

shiftwindow(2),

time(0, 0, 0, 0), test(Word), time(_, _, S, H),

shiftwindow(1),

write("\nВы нашли за ", S,

" секунд и ", H, " милисекунд").

isname/1

Назначение Проверяет, является ли строка идентификатором

Обращение isname(ПерСтроки)

Домены (string)

Шаблоны описания (bx)

аргументов

Описание isname согласуется, если ПерСтроки является

<идентификатором>, соответствующим синтаксису Турбо

Пролога.

Идентификатором является любая последовательность

букв (латинских), цифр и символов подчеркивания,

начинающаяся с буквы или символа подчеркивания.

Неудачное Не согласуется, если ПерСтроки не может быть

завершение классифицирована как идентификатор согласно

правилам для переменных Турбо Пролога.

Ошибки Нет ошибок.

Пример Goal: isname("Дан")

Yes

Goal: isname("2Лео")

No

Goal: isname("_Джон")

No

Goal: isname("одна_строка")

Yes

Goal: isname("_")

Yes

Goal: isname("абсд1ф2")

Yes