PascalABC.NET

Исполнитель Робот

Исполнитель Робот действует на прямоугольном клеточном поле. Между некоторыми клетками, а также по периметру поля находятся стены. Основная цель Робота ¦— закрасить указанные клетки и переместиться в конечную клетку.

Исполнитель Робот и поле, на котором он работает, отображаются следующим образом:

Здесь большой желтый квадрат изображает Робота, маленький желтый квадрат в левом верхнем углу клетки — конечное положение Робота, черными точками помечены клетки, которые надо закрасить.

Команды исполнителя Робот содержатся в модуле Robot:

Right – перемещает Робота вправо; Left – перемещает Робота влево;
Up
– перемещает Робота вверх;
Down
– перемещает Робота вниз;
Paint
– закрашивает текущую ячейку;
WallFromLeft
– возвращает True если слева от Робота стена;
WallFromRight
– возвращает True если справа от Робота стена;
WallFromUp
– возвращает True если сверху от Робота стена;
WallFromDown
– возвращает True если снизу от Робота стена;
FreeFromLeft
– возвращает True если слева от Робота свободно;
FreeFromRight
– возвращает True если справа от Робота свободно;
FreeFromUp
– возвращает True если сверху от Робота свободно;
FreeFromDown
– возвращает True если снизу от Робота свободно;
CellIsPainted
– возвращает True если ячейка, в которой находится Робот, закрашена;
CellIsFree
– возвращает True если ячейка, в которой находится Робот, не закрашена.

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

uses Robot;
begin
  Task('c1');
end.

Здесь Task — процедура, содержащаяся в модуле Robot и вызывающая задание с указанным именем.

Имеются следующие группы заданий для исполнителя Робот:

a – вводные задания;
c
– цикл с параметром;
if
– логические выражения;
w
– циклы с условием;
сif
– циклы + логические выражения;
count
– переменные-счетчики;
cc
– вложенные циклы;
p
– процедуры без параметров;
pp
– процедуры с параметрами.

Для создания стандартного поля размера 9 x 11 используется процедура StandardField без параметров, а для создания поля размера N x M — процедура Field(N,M). Робот при этом помещается в центр поля.