Super, vielen Dank...

... es kam mir auch verdächtig einfach vor

Die Lösung hier funktioniert ganz gut, mit Queue halt (list of pair), aber gut.
way ist das Feld mit den Schrittzahlen. Die Funktion funktioniert auch als Test und gibt False zurück wenn Start und Ziel nicht verbunden sind. Höhlen haben Null, die brauche ich auch nicht.


Var list( -1 ) As Pair
Var i, x, y as integer

i = 0
list.Add New Pair( StartFieldX, StartFieldY )

Do
     x = list( 0 ).x
     y = list( 0 ).y
     list.Remove( 0 )

     i = way( x, y )

     If (Weg nach Rechts möglich und frei) Then
          way( x + 1, y) = i + 1
          list.add New pair( x + 1, y)
     End If

     If (Weg nach Links möglich und frei) Then
     way( x - 1, y ) = i + 1
     list.add New pair( x - 1, y )
     End If

     If (Weg nach Unten möglich und frei) Then
          way( x, y + 1 ) = i + 1
          list.Add New pair( x, y + 1 )
     End If

     If (Weg nach Oben möglich und frei) Then
          way( x, y - 1 ) = i + 1
          list.Add New pair( x, y - 1 )
     End If

Loop Until list.count = 0

way( StartFieldX, StartFieldY ) = 0

If way( FinishFieldX, FinishFieldY ) = 0 Then
     Return False
End If

Return True