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

begin

RegisterGroup('myrob','Мои задания для Робота','RobTasks',2);

RegisterTask('myrob1',FirstRob);

RegisterTask('myrob2',SecondRob);

end.

Изменим основную программу:

uses Robot, RobTasks;

begin

Task('myrob2');

end.

При запуске этой программы в окне исполнителя Робот будет выведено новое задание:

При первом запуске программы с подключенным модулем DMTasks созданная нами группа была автоматически зарегистрирована в мастере по созданию программ-заготовок PT4Load. Если теперь нажать кнопку и в появившемся окне PT4Load ввести префикс RB в поле Задание", то окно примет следующий вид:

Мы видим, что группа заданий myrob появилась в списке доступных групп для исполнителя Робот. Наберем имя задания myrob1:

После нажатия Enter в рабочем каталоге будет создан новый файл RBmyrob1.pas со следующим содержимым:

uses Robot, RobTasks;

begin

Task('myrob1');

end.

Можно приступать к решению собственноручно разработанной задачи :)

<p>Модуль DMTaskMaker</p>

Типы модуля DMTaskMaker

type TaskProcType = procedure;

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

Процедуры модуля DMTaskMaker

procedure Field(szx,szy: integer);

Задает поле Чертежника размера szx на szy клеток.

procedure DoToPoint(x,y: integer);

Перемещает перо Чертежника-постановщика заданий в точку с координатами (x, y).

procedure DoOnVector(dx,dy: integer);

Перемещает перо Чертежника-постановщика заданий в точку с координатами (x, y).

procedure DoPenUp;

Поднимает перо Чертежника-постановщика заданий.

procedure DoPenDown;

Опускает перо Чертежника-постановщика заданий.

procedure TaskText(s: string);

Задает имя и формулировку задания в строке s.

procedure RegisterGroup(name,description,unitname: string; count: integer);

Обеспечивает автоматическую регистрацию новой группы заданий в программном модуле PT4Load. В результате имя данной группы будет отображаться в окне модуля PT4Load в списке групп, связанных с исполнителем Чертежник, что позволит создать программу-заготовку для выполнения любого задания этой группы. В качестве параметров процедуры указывается имя группы name, краткое описание группы description, имя модуля unitname, в котором описана группа, и количество заданий count. Имя группы заданий должно содержать не более 7 символов (цифр и латинских букв) и не должно оканчиваться цифрой, количество заданий не должно превышать 999. Процедура RegisterGroup должна вызываться в секции инициализации модуля, содержащего реализацию новой группы заданий для Чертежника.

RegisterTask(name: string; p: TaskProcType);

Связывает имя задания name с процедурой p, в которой реализовано данное задание. Данную процедуру следует вызывать для каждого задания. Подобно описанной выше процедуре RegisterGroup, процедура RegisterTask должна вызываться в секции инициализации модуля, содержащего реализацию новой группы заданий для Чертежника. Порядок вызова этих процедур может быть произвольным.

<p>Создание заданий для исполнителя Чертежник</p>

Опишем последовательность создания группы заданий для исполнителя Чертежник. Создадим модуль DMTasks.pas со следующим текстом:

unit DMTasks;

interface

uses DMTaskMaker;

implementation

procedure FirstDM;

var i,a: integer;

begin

TaskText('Задание mydm1. Начертите, используя цикл');

Field(14,8);

DoToPoint(7,7);

a:=6;

for i:=1 to 6 do

begin

DoPenDown;

DoOnVector(a,-a);

DoOnVector(-a,a);

DoOnVector(-a,-a);

DoOnVector(a,a);

Dec(a);

DoPenUp;

DoOnVector(0,-1);

end;

end;

begin

RegisterGroup('mydm','Мои задания для Чертежника','DMTasks',2);

RegisterTask('mydm1',FirstDM);

end.

Наберем и запустим основную программу (сохранять ее в каком-либо файле не требуется):

uses Drawman, DMTasks;

begin

Task('mydm1');

end.

Будет выведено следующее задание для Чертежника:

Перейти на страницу:

Похожие книги