Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пролог.doc
Скачиваний:
15
Добавлен:
10.11.2018
Размер:
1.44 Mб
Скачать

7.11.1 Создание меню.

Необходимость в меню возникает при выборе одной задачи из нескольких, либо при определении порядка выполнения задач. После выбора может выполняться задача или вызываться дочернее меню.

Предикат repeat в программе используется для возврата в главное меню по окончании выполнения подмодуля, за исключением случая 0. Предикат readint (X) считывает целое и присваивает его X. Если Х>5 правило X<5 выполняется неуспешно и произойдет откат, иначе выполняется попытка выполнить правило process(X). Если Х=0 , то отсечение ! препятствует откату к правилу repeat и программа заканчивается.

predicates

repeat

process(integer)

show_menu

run_file_utility

goal

run_file_utility.

clauses

run_file_utility:-

show_menu,nl,

write(“Press space”),

read_char(_),exit.

repeat.

repeat:-repeat.

show_menu:-repeat, makewindow(1, 7, 7, ”Main Menu”, 4, 10, 16, 36), nl,

write(“Menu Utility”), nl, nl,

write(“0 Exit”), nl,

write(“1 Delete”), nl,

write(“2 Rename”), nl,

write(“3 Create”), nl,

write(“4 Exit”), nl, nl,

write(“Please enter choice(0-4)”),

readint(X), X<5,process(X), X=0,!.

process(0):-nl, write(“Bye”), nl.

process(1):-makewindow(2, 7, 7, ”File Deletion”, 12, 36, 10, 36),

write(“Delete”), nl, write(“Space”), readchar(_), removewindow.

Аналогично пишутся остальные окна.

7.11.2. Создание графического режима.

Для создания графики имеется пять режимов. Наиболее подходит пятый режим

N=1-5 – EGA, экран 640*350, 13 цветов, 80 столбцов

4 - 640*200, 16 цветов

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

Цвет/палитра

1

2

3

0

зеленый

красный

желтый

1

голубой

фиолетовый

белый

Соотношение цветов в графическом режиме определяется сложным образом.

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

  1. dot (строка, столбец, цвет палитры) – рисует точку и употребляется редко

  2. line (строка1, столбец1, строка2, столбец2, цвет) – рисует линию между соответствующими точками

Координаты экрана изменяются в интервале: 0 – 31999

для построения окружности используется формула окружности

строка = центральная строка – R*cos(A)

столбец = центральный столбец + R*sin(A)

При шаге A на 0,02 радиус окружность будет содержать 314 точек

row=центр.стр-1.40*R*cos(A)

predicates

draw_ellipse(real)

real_int(real,integer)

make_windows

draw_figures

goal

draw_figures.

clauses

draw_figures:-

make_window, draw_ellipse(0.02),

write(“press space”),

readchar(_), exit.

make_window:-graphics(2, 0, 7),

makewindow(1, 7, 7, ”Figures”, 1, 10, 23, 60).

draw_ellipse(A):-A>=6.28, !.

draw_ellipse(A):-

center_row=20000,Center_col=5000,

R=3600, Row_r=Cemter_row-R*cos(A),

Column_r=Cemter_Col+R*sin(A),

real_int(Row_r,Row), real_int(Column_r,Column),

dot(Row,Column,1), A1=A+0.02, draw_ellipse(A1).

real_int(R,I):-R=I.