Robot en un laberinto

En este proyecto, crearás algoritmos para escapar de un laberinto.

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).

Imágenes por usuario de Scratch Legolover8888 y usuario de Wikipedia Oxyman
dibujo de un laberinto visto desde arriba fotografía de un laberinto con las paredes de arbustos altos visto desde el interior

  1. Habla con otra parejaCrea un algoritmo para escapar de cualquier laberinto. Escríbelo en papel.
  2. AAP-2.A, AAP-2.G, AAP-2.J
  3. Mirando tu algoritmo, encuentra ejemplos de:
    • secuencia (varios pasos realizados uno tras otro)
    • selección (un lugar donde el algoritmo hace una de dos cosas dependiendo de alguna condición)
    • repetición (el algoritmo hace lo mismo una y otra vez)
  4. Sin usar Snap!, Considera: tu algoritmo funciona en el laberinto de la primera imagen de esta página? Comienza en el círculo naranja, mirando hacia el norte (en la dirección de la flecha). Tu objetivo es llegar a la X roja.
  5. Si tu algoritmo no funcionó, depúralo.
AAP-2.M.2 bullet 4

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.

  1. ¿Funciona el algoritmo de la pared izquierda para el laberinto de la primera imagen? Si no, ¿puedes depurarlo?

Hay problemas con un robot en una cuadrícula con procedimientos especiales que no existen en Snap!:

Puedes leer más sobre estos procedimientos de lenguaje AP en la Hoja de referencia de Snap! en la sección Robot en la parte inferior.

  1. Imagina un robot (el objeto) sentado en medio de una cuadrícula de 5×5 mirando hacia arriba. En una copia en papel de esta cuadrícula, sombrea todos los cuadrados a los que el robot no pueda llegar cuando se ejecute el código dado.
    asignar a (turnos) el valor de (número al azar entre (2) y (3))
repetir (turnos) {
	girar a la derecha
}
asignar (pasos) el valor de (número al azar entre (1) y (2))
repetir (pasos) {
	mover hacia adelante
} cuadrícula de 5x5 con un objeto que se mueve hacia arriba en el cuadrado central
  1. Observa si puedes inventar un laberinto para el cual el algoritmo de la pared izquierda no funcione.