там по коду видно что лишний ход. нужно структурно подходить к шагу - не в цикле направление перебирать, а словом из 8 значений. тогда можно в 7 раз скорость повысить
For $i = 0 To 7 ; смотрим куда можно идти 8 направлений $Px = $x + $Dx[$i] $Py = $y + $Dy[$i] If $Px >=0 And $Py >= 0 And $Px < $SizeX And $Py < $SizeY And $Arr[$Px][$Py] == $LI_BLANK Then ; ходим только туда где -2 $Stop = False $Arr[$Px][$Py] = $D + 1 ; запишем в ячейки шаг + 1 EndIf Next