Imagina que eres un robot atrapado en un laberinto. No tienes vista panorámica para que puedas ver todas las posibilidades (como muestra el dibujo abajo). En cambio, estás adentro y las paredes son más altas que tú (como muestra la segunda imagen).
Un algoritmo de laberinto bien conocido se llama "Sigue la pared izquierda". La idea es mantener que la mano izquierda toque una pared. Si de repente la mano izquierda no está tocando una pared, hay un corredor (o pasillo) a la izquierda, y para mantener la mano en la pared izquierda, giras a la izquierda y sigues por el corredor. Si, en cambio, chocas contra una pared frente a ti, entonces para mantener la mano en la pared izquierda tendrás que girar a la derecha. (Dibuja un boceto si eso no tiene sentido). Para muchos laberintos, este simple algoritmo eventualmente lo llevará a la salida.
Hay problemas con un robot en una cuadrícula con procedimientos especiales que no existen en Snap!:
MOVE_FORWARD ()mueve el objeto hacia adelante un cuadrado de cuadrícula. (Debes llamarlo repetidamente para mover más de un cuadrado de la cuadrícula).
ROTATE_LEFT ()o el
ROTATE_RIGHT ()siempre gira 90 grados exactamente. (Se usan solo para mover un robot en una cuadrícula).
CAN_MOVE (dirección)reportan verdadero o falso dependiendo de si el robot puede o no moverse en la dirección de entrada sin chocar contra una pared o salir del laberinto.