Evidentemente si no ve las cintas más que aun paso de distancia la cosa no promete.
En ese caso lo que se debe hacer es buscar un algoritmo que garantice el mayor éxito posible para encontrar cintas en el camino. Esto es debes garantizar una trayectoria en línea recta desde el origen hacia el destino, en el caso que presentas, describiría una diagonal y además encontraría la cinta. Si no encuentra una cinta seguirá tardando el mismo costo que el otro camino que te describe, la línea recta lo que verifica es la posibilidad de que en su camino directo esté una cinta.
el algoritmo sería un avance vertical y un avance horizontal mientra no vea cinta así :
-   
-   
- funcion determinar_ruta 
-     pasosV= (y.destino - Y.origen) 'pasos verticales hacia destino 
-     pasosH= (X.destino - X.origen) ' pasos horizontales hasta destino. 
-   
-     si pasosV > pasosH luego 
-        avH=1' avance horizontal= 1 
-        avV= pasosV / pasosH  ' avance vertical  
-     en otro caso 
-        avV=1                       ' avance vertical = 1 
-        avH= pasosH / pasosV 
-     fin si 
- fin determinar_ruta 
-   
- funcion avanzar_ficha 
-   meta=false 
-   cinta=false 
- hacer 
-     si avH = 1 luego 
-          iterar  1 hasta avV 
-              avanzar vertical ' 1 unidad 
-              cinta= comprobar_Haycinta  ' se hace una llamada a esa función 
-              meta= comprobar_Meta  ' comprueba si llegó a la meta   
-              si (cinta=true)  o (meta = true) salir de iterar 
-          fin iterar 
-          si meta= false luego 
-              avanzar horizontal ' 1 unidad   
-              llamada a comprobar_Haycinta    
-              meta= comprobar_Meta  ' comprueba si llegó a la meta    
-          fin si 
-     en otro caso 
-          iterar  1 hasta avH 
-              avanzar horizontal ' 1 unidad 
-              cinta= comprobar_Haycinta  ' se hace una llamada a esa función 
-              meta= comprobar_Meta  ' comprueba si llegó a la meta   
-              si (cinta=true)  o (meta = true) salir de iterar 
-          fin iterar 
-          si meta= false luego 
-               avanzar vertical ' 1 unidad   
-               llamada a comprobar_Haycinta    
-              meta= comprobar_Meta  ' comprueba si llegó a la meta    
-          fin si 
-     fin si 
-      
- repetir mientras meta=false  ' (no encuentre final )  
-  fin avanzar_ficha 
-   
- funcion comprobar_Haycinta 
-     si se detecta cinta 
-            llamada a avanzar_desdeCinta 
-            llamada a determinar_ruta  ' actualiza según nueva posición 
-            devolver true 
-      fin si 
- fin funcion 
-   
- funcion comprobar_Meta 
-     si llegó a la meta luego 
-         devolver true 
-     fin si 
- fin funcion 
-   
-   
Naturalmente avanzar horizontal y vertical será si puede avanzar, puesto que es posible que alcance un tope antes de lograr la meta... eso ya lo dejo a tu entretenimiento
Para hacer un algorimo más eficiente sería necesarios saber más detalles ¿ las cintas se colocan aleatoriamente ?, ¿ existen más cintas de solo 1 ?, ¿ se pueden mover ?, también si una cinta retrocede... o te aleja más que donde estabas y como comentas si es posible variar su tamaño.
El algortimo presentado se basa en la estadística del problema matemático si lanzamos una aguja al aire y tenemos 1 línea trazada en el suelo que posiblidad hay que quede atravesando la línea...