
Robotín está inspirado en el glorioso juego Light Bot. Se lo recomendamos.
Objetivo del juego
El objetivo del juego es guiar al robot por el tablero y hacer que encienda todas las luces usando la menor cantidad posible de memoria y/o tiempo.
Lenguaje
Las instrucciones que entiende el robot son acciones directas, llamadas a subrutina y condicionales.
También se pueden poner comentarios entre paréntesis; el robot no los tendrá en cuenta.
Los signos de puntuación, junto con el espacio en blanco, solamente sirven para separar las instrucciones (excepto el ':' usado en las subrutinas).
Acciones directas
Estas son las acciones que Robotín puede llevar a cabo físicamente:
| a | avanza una casilla hacia adelante |
| d | gira hacia la derecha |
| i | gira hacia la izquierda |
| e | enciende (o apaga) la luz sobre la cual está |
Ejemplo:
(avanza tres lugares, gira a
la derecha, y avanza dos más)
a a a d a a
Subrutinas
Para minimizar el uso de memoria, las subrutinas son imprescindibles.
Cualquier palabra o número que no sea una instrucción será interpretado como un llamado a subrutina. El hilo de ejecución irá directamente al código que se encuentre tras la etiqueta correspondiente, que será la misma palabra con el caracter ':' agregado al final.
Ejemplo:
a a d, triple, vuelta.
triple: vuelta, vuelta, vuelta.
vuelta: d a a.
En este caso, triple y vuelta son dos subrutinas.
Condicionales
Los condicionales evalúan cierta pregunta referida a la casilla apuntada por el robot en ese momento. Si la respuesta es sí, la ejecución continúa normalmente; si la respuesta es no, la instrucción inmediata siguiente a la condición es salteada. Las expresiones condicionales son:
| p? | ¿veo una pared? |
| np? | ¿no veo una pared? |
| le? | ¿veo una luz encendida? |
| nle? | ¿no veo una luz encendida? |
| la? | ¿veo una luz apagada? |
| nla? | ¿no veo una luz apagada? |
Los límites del tablero son vistos como paredes.
Los condicionales sólo son usados por los jugadores seducidos por el lado oscuro. Permiten hacer programas más eficientes, pero hacen el código menos elegante.
Modos de juego
Hay básicamente dos modos de juego, pensados para dos estilos diferentes de programación.
En el modo normal el robot terminará cuando el hilo de ejecución termine. Es el modo elegido por los jugadores de bien.
En el modo inmediato, el robot se detendrá en el momento en que todas las luces están encendidas. Es otra opción elegida por los jugadores seducidos por el lado oscuro. Es menos elegante, pero permite lograr una buena performance.
En este modo pueden hacerse programas basados en recursión ilimitada (aunque hay un límite razonable para la cantidad de llamados recursivos).





