Игровое окружение "Робот"
Прямоугольное поле N x M, клетки которого свободны или заняты другими объектами.
Объекты на поле:
- робот
- камни (в клетку с камнем нельзя становиться)
- флажок (помеченный номером)
- стены (разделяют клетки)
- некоторые клетки могут быть окрашены
- в некоторых клетках находятся "сундуки с золотом"
Пользователю дана возможность оставлять в клетках флажки для того, чтобы он
мог помечать клетки. В принципе, помечать клетки можно и цветом, однако
помечать клетки числом (номер флажка) удобнее. Также номер можно легко
отобразить при отрисовке игрового поля (например, просто цифрой).
В начальный момент времени Робот находится в клетке с координатами (1; 1)
(или иной, если задано в конфигурационном файле). Начальная расстановка
объектов на поле может быть другой, определяется сценарием.
Некоторые клетки "закрыты" специальными "облаками". Робот может полноценно
перемещаться по таким клеткам, однако облака закрывают обзор этих клеток, т.е.
нельзя увидеть что там находится. Наличие облоков определяется сценарием (xml файлом).
Когда робот находится под облаками, то он виден в виде силуэта (видно также направление,
в которое повернут робот).
Первоначальный цвет клеток поля задается в конфигурационном файле. Если в файле цвет не
задан, то клетки белые. Робот не может очищать клетки (но может закрасить их в белый цвет).
Робот:
- занимает одну клетку поля
- может двигаться вперед на клетку поля, находящуюся непосредственно перед ним
- не может проходить на следующую клетку, если там стена (камень)
- может определить есть ли впереди стена или камень
- может изменить номер флажка, находящегося в клетке (или убрать флажок)
- может оставить в клетке флажок (убрать флажок, изменить номер флажка в клетке)
- может проверить, находится ли в текущей клетке флажок
- может изменить цвет клетки, в которой находится
Команды Робота:
- left() - робот поворачивается против часовой стрелки на 90 градусов
- right() - робот поварачивается по часовой стрелке на 90 градусов
- forward() - робот переходит на следующую клетку поля, если это возможно
- set_color() - установить цвет клетки
- get_color() - получить цвет текущей клетки
- can_go_forward() - можем ли мы идти вперед (т.е. нету камня и стены)
- get_flag() - получить тип флажка в текущей клетке (0, если флага нету)
- take_flag() - убрать флаг из текущей клетки
- put_flag(number) - поместить флаг c номером number в текущую клетку,
если в клетке уже находится флаг, то заменить флаг новым.
Задача Робота:
- посетить все специальные клетки поля (помечаются "сундаками с золотом")
Требования к ИО:
- движения робота анимированные
- ИО должна позволять изменять скорость анимации
- Загрузка начальной обстановки из xml