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

После нажатия Enter в рабочем каталоге будет создан новый файл RBmyrob1.pas со следующим содержимым:
usesRobot, RobTasks;
begin
Task('myrob1');
end.
Можно приступать к решению собственноручно разработанной задачи :)
Типы модуля DMTaskMaker
typeTaskProcType = procedure;
Тип процедуры, генерирующей конкретное задание. Каждое задание реализуется в виде отдельной процедуры; для связывания этой процедуры с именем задания необходимо использовать процедуру RegisterTask, описываемую ниже.
Процедуры модуля DMTaskMaker
|
procedureField(szx,szy: integer);
Задает поле Чертежника размера szx на szy клеток.
procedureDoToPoint(x,y: integer);
Перемещает перо Чертежника-постановщика заданий в точку с координатами (x, y).
procedureDoOnVector(dx,dy: integer);
Перемещает перо Чертежника-постановщика заданий в точку с координатами (x, y).
procedureDoPenUp;
Поднимает перо Чертежника-постановщика заданий.
procedureDoPenDown;
Опускает перо Чертежника-постановщика заданий.
procedureTaskText(s: string);
Задает имя и формулировку задания в строке s.
procedureRegisterGroup(name,description,unitname: string; count: integer);
Обеспечивает автоматическую регистрацию новой группы заданий в программном модуле PT4Load. В результате имя данной группы будет отображаться в окне модуля PT4Loadв списке групп, связанных с исполнителем Чертежник, что позволит создать программу-заготовку для выполнения любого задания этой группы. В качестве параметров процедуры указывается имя группы name, краткое описание группы description, имя модуля unitname, в котором описана группа, и количество заданий count. Имя группы заданий должно содержать не более 7 символов (цифр и латинских букв) и не должно оканчиваться цифрой, количество заданий не должно превышать 999. Процедура RegisterGroup должна вызываться в секции инициализации модуля, содержащего реализацию новой группы заданий для Чертежника.
RegisterTask(name: string; p: TaskProcType);
Связывает имя задания name с процедурой p, в которой реализовано данное задание. Данную процедуру следует вызывать для каждого задания. Подобно описанной выше процедуре RegisterGroup, процедура RegisterTask должна вызываться в секции инициализации модуля, содержащего реализацию новой группы заданий для Чертежника. Порядок вызова этих процедур может быть произвольным.
Создание заданий для исполнителя Чертежник
Опишем последовательность создания группы заданий для исполнителя Чертежник. Создадим модуль DMTasks.pas со следующим текстом:
unitDMTasks;
interface
usesDMTaskMaker;
implementation
procedureFirstDM;
vari,a: integer;
begin
TaskText('Задание mydm1. Начертите, используя цикл');
Field(14,8);
DoToPoint(7,7);
a:=6;
fori:=1 to6 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.
Наберем и запустим основную программу (сохранять ее в каком-либо файле не требуется):
usesDrawman, DMTasks;
begin
Task('mydm1');
end.
Будет выведено следующее задание для Чертежника:

Добавим задание на разработку процедуры:
procedureDoCross;
begin
DoPenDown;
DoOnVector(1,0); DoOnVector(0,-1);
DoOnVector(1,0); DoOnVector(0,-1);
DoOnVector(-1,0); DoOnVector(0,-1);
DoOnVector(-1,0); DoOnVector(0,1);
DoOnVector(-1,0); DoOnVector(0,1);
DoOnVector(1,0); DoOnVector(0,1);
DoPenUp;
end;
procedureSecondDM;
begin
TaskText('Задание mydm2. Начертите, используя процедуру Cross');
Field(18,12);
DoToPoint(3,8);
DoCross;
DoToPoint(8,4);
DoCross;
DoToPoint(12,11);
DoCross;
DoToPoint(15,6);
DoCross;
end;
Добавим вызов процедуры регистрации для данного задания; в результате секция инициализации примет следующий вид:
begin
RegisterGroup('mydm','Мои задания для Чертежника','DMTasks',2);
Читать дальше