Вверх ↑
Ответов: 2125
Рейтинг: 159
#1: 2007-06-19 16:18:41 ЛС | профиль | цитата
Эдик писал(а):
Алгоритмом не поделешься?

Алгоритм прост до безобразия, и (я щас глянул исходники) даже без рекурсии. Используется FIFO очередь, на Хиасме можно для этого MemoryStream использовать. Поскольку, было написано на Бейсике, считаю что разберёшься. Несколько комментариев:
- максимальный размер матрицы 128x128 точек, в реале по размеру схемы
- максимальная длина очереди 1000 элементов, в реале должна быть динамической
- в очереди хранится 4 элемента: x,y,t,d - координаты точки, кратчайшее расстояние до начальной точки и направление, куда идти по кратчайшему расстоянию

по процедурам:
mClear - очистка матриц расстояний/объектов и направлений, отрицательное значение в матрице расстояний/объектов соответствует наличию объекта на поле
mFill - размещение объекта на поле
mPop, mPush - работа с очередью, mPush ещё и матрицы изменяет
mSearch - основная процедура
Form_Load - стартовая точка Бейсиковской формы
Form_MouseDown - обработка нажатия на кнопку мыши
Form_MouseMove - просто для информации в заголовке окна

code_1579.txt
карма: 1

0
файлы: 1code_1579.txt [3.1KB] [371]