Желающим помочь в разработке. Нужно написать класс итератор тайлов, который будет перебирать тайлы в заданном прямоугольнике по расширяющейся спирали от заданного начального тайла.
Пример.
Задан прямоугольник ((0,0),(2,2)) и начальный тайл (1,1).
Итератор должен выдать примерно такую последовательность:
(1,1);(1,0);(2,0);(2,1);(2,2);(1,2);(0,2);(0,1);(0,0);
Класс должен быть наследником класса
TTileIteratorAbstract = class
protected
FTilesTotal: Int64;
FTilesRect: TRect;
public
function Next(out ATile: TPoint): Boolean; virtual; abstract;
procedure Reset; virtual; abstract;
property TilesTotal: Int64 read FTilesTotal;
property TilesRect: TRect read FTilesRect;
end;
Метод Next вызывается для получения каждого следующего тайла. Если он возвращает false, то в параметре может быть возвращен любой мусор.
Метод Reset сбрасывает перебор в начальное состояние.