Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_AYaII_buklet_maket (1).doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
857.6 Кб
Скачать

6.4. Пример решения задачи

    1. Тема работы: работа с графикой в среде Turbo Prolog

    2. Цель работы: ознакомление с использованием основных графических предикатов в среде Turbo Prolog 2.0 и приобретение практических навыков создания графических объектов с использованием BGI-графики

    3. Индивидуальное задание:

Инициализировать графический режим с параметрами по умолчанию. Вывести значения параметров различными стилями шрифтов. Вывести окружность и закрасить ее с использованием собственного шаблона заполнения. Вывести линии с использованием стандартного и собственного шаблонов стиля. Вывести шестиугольник. Сформировать и вывести изображения «пляшущего» человечка. Организовать звуковое сопровождение для «пляшущего» человечка.

    1. Разработка метода решения задачи.

Задача разбивается на три подзадачи:

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

2) Вывод и закрашивание окружности, линий и шестиугольника.

3) Формирование и вывод изображения «пляшущего» человечка со звуковым сопровождением.

Для решения первой подзадачи разработан беспараметрический предикат gr, подцелями которого являются вызовы стандартных предикатов. Значение параметра Driver выводится вертикально рукописным шрифтом, значение параметра Mode выводится горизонтально готическим шрифтом. Перед выводом значений выполняется их преобразование к строковому типу данных

Вторую подзадачу решает предикат gr1, в котором формируется шаблон заполнения замкнутых геометрических фигур (рис. 6.1, а) и шаблон стиля линии (рис. 6.1, б). Код задается в 16-ричном виде и формирует фрагмент экрана размером 8х8 пикселей. Кроме этого в предикате gr1 формируются изображения окружности, линий и шестиугольника.

16-ричный

код

1F

03

16-ричный код: 44

05

б)

09

11

20

40

00

а)

Рисунок 6.1 – Формирование шаблона заполнения и шаблона стиля линии

Для решения третьей подзадачи формируются изображения двух кадров пляшущего человечка на двух видеостраницах (предикаты ris1 и ris2) и выполняется циклическое переключение видеостраниц до нажатия любой клавиши клавиатуры (предикат gr2).

    1. Описание предикатов, разработанных для реализации метода решения задачи на языке Turbo Prolog.

      Предикат

      Назначение

      gr

      Переход в графический режим и вывод текста

      gr1

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

      gr2

      Циклическое переключение видеостраниц

      ris1

      Формирование кадра изображения на видеостранице 0

      ris2

      Формирование кадра изображения на видеостранице 1

      р

      Установка графического режима, стиля линии и цвета фона

    2. Стандартные предикаты, используемые для решения задачи:

Стандартные предикаты BGI-графики и значения параметров взяты из прил. 6А.

    1. Текст программы.

predicates

gr gr1 gr2 ris1 ris2 p

clauses

gr:-

detectgraph(Gd,Gm), % Получение текущих значений графического

% драйвера и режима

initgraph(Gd,Gm,_,_,""), % Инициализация графического режима

setcolor(5), % Устанавливается текущий цвет - лиловый

moveto(180,50), % Перемещение указателя по заданным

% координатам

outtext("Работает графический режим!"), % Вывод текста

readchar(_), % Задержка до нажатия клавиши

setbkcolor(7), % Задание цвета фона

moveto(20,100), % Перемещение указателя

settextstyle(5,1,5), % Установка параметров шрифта – рукописный

% стиль, вертикальная ориентация, размер 5

str_int(D,Gd), % Преобразование целого числа (типа драйвера)

% в строку

concat("Driver=",D,Dr), % Соединение текста и строки

outtext(Dr), % Вывод текста

moveto(100,200), % Перемещение указателя

settextstyle(4,0,25), % Установка параметров шрифта – готический % стиль, горизонтальная ориентация, размер 25

setcolor(4),

outtext(" Mode="),

str_int(M,Gm),

outtext(M),

readchar(_),gr1.

gr1:-

cleardevice, % Очистка экрана

setbkcolor(9), % Установка цвета фона

setlinestyle(4,$44,3), % Задание шаблона линии

line(300,100,400,100), % Рисование линии

setfillpattern([$1F,$03,$05,$09,$11,$20,$40,$00],5), % Задание шаблона

% заполнения

setlinestyle(0,1,3), % Задание шаблона линии – сплошная линия

setcolor(6),

circle(90,40,40), % Вывод окружности

floodfill(90,40,6), % Закрашивание окружности

line(200,100,200,50),

readchar(_),

%Продолжение программы

cleardevice,

circle(100,40,40),

floodfill(90,40,6),

setcolor(1),

line(200,100,200,150),

setcolor(6),

line(200,100,200,150),

readchar(_),

cleardevice,

circle(110,40,40),

floodfill(90,40,6),

readchar(_),

cleardevice,

circle(120,40,40),

floodfill(90,40,6), % Задание вершин координат замкнутого контура –

% шестиугольника и вывод его на экран

drawpoly([100,100, 150,130, 150,170 ,100,200, 50,170,50,130,100,100]),

readchar(_),closegraph.

gr2:-inkey(_).

gr2:-

setvisualpage(0), %Установка видимой видеостраницы

sound(50,50), % Задание частоты и длительности звука

setvisualpage(1),

sound(50,100),!,

gr2.

ris1:-

setactivepage(0), % Установка активной видеостраницы

clearviewport, % Очистка видеопорта

setbkcolor(11),

setcolor(1),

circle(320,140,50),

circle(305,125,10), circle(335,125,10),

circle(320,150,7),arc(320,140,240,300,35),

setfillstyle(1,3),

floodfill(305,125,1),floodfill(335,125,1),

rectangle(290,190,350,300),

line(290,210,240,210),line(350,210,400,210),

line(300,300,290,330),line(340,300,350,330),

line(290,330,310,360),line(350,330,330,360),

readchar(_).

ris2:-

setactivepage(1),

clearviewport,

setbkcolor(11),

setcolor(1),

circle(320,140,50),

circle(305,125,10), circle(335,125,10),

circle(320,150,7),arc(320,140,240,300,35),

setfillstyle(1,4),floodfill(320,140,1),

setfillstyle(1,0),

%Продолжение программы

floodfill(305,125,1),floodfill(335,125,1),

rectangle(290,190,350,300), % Вывод прямоугольника

line(290,210,240,170),line(350,210,400,170),

line(300,300,300,360),line(340,300,340,360).

p:-

initgraph(4,1,_,_,""), % Установка драйвера EGA64 м графического

% режима EGAHi - 640x350, 16 цветов, 2 страницы

setbkcolor(9),

setlinestyle(0,0,3),

ris1,ris2, gr2.

goal

gr, p,

write("The end").

    1. Выводы

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]