Добавим вызов процедуры регистрации для данного задания; в результате секция инициализации примет следующий вид:
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.
Можно приступать к решению собственноручно разработанной задачи :)
Типы модуля 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, в которой реализовано данное задание. Данную процедуру следует вызывать для
Опишем последовательность создания группы заданий для исполнителя Чертежник. Создадим модуль 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.
Будет выведено следующее задание для Чертежника: