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