Эдик писал(а):
Алгоритмом не поделешься?Алгоритм прост до безобразия, и (я щас глянул исходники) даже без рекурсии. Используется FIFO очередь, на Хиасме можно для этого MemoryStream использовать. Поскольку, было написано на Бейсике, считаю что разберёшься. Несколько комментариев:
- максимальный размер матрицы 128x128 точек, в реале по размеру схемы
- максимальная длина очереди 1000 элементов, в реале должна быть динамической
- в очереди хранится 4 элемента: x,y,t,d - координаты точки, кратчайшее расстояние до начальной точки и направление, куда идти по кратчайшему расстоянию
по процедурам:
mClear - очистка матриц расстояний/объектов и направлений, отрицательное значение в матрице расстояний/объектов соответствует наличию объекта на поле
mFill - размещение объекта на поле
mPop, mPush - работа с очередью, mPush ещё и матрицы изменяет
mSearch - основная процедура
Form_Load - стартовая точка Бейсиковской формы
Form_MouseDown - обработка нажатия на кнопку мыши
Form_MouseMove - просто для информации в заголовке окна
code_1579.txt