2. Guía 2: autómatas

2.5. Sistemas autónomos

2.5.1. Introducción

Tal y como hemos comentado al principio, el arte generativo es aquel que ha sido creado, totalmente o en parte, usando un sistema autónomo. El artista automatiza de alguna manera la producción de algunas partes de su obra. Para hacerlo, crea unas reglas de producción (como las que hemos visto en los ejemplos anteriores) y las implementa con algún lenguaje de programación o en forma de máquina o de algún automatismo físico.

Snap! tiene una característica interesante que nos ayuda a automatizar acciones. Podemos crear nuestros propios bloques (en informática esto lo denominamos funciones). En el área de los bloques de instrucciones, debajo de cada uno de los menús se halla el botón «Crea un bloque», que nos abre esta ventana:

Podemos elegir el menú donde añadiremos el nuevo bloque (movimiento, sonido, lápiz, etc.) y el tipo de bloque (generalmente elegiremos «Comando», pero también podríamos crear predicados que nos sirviesen de condiciones).

Veámoslo con un ejemplo. Crearemos un nuevo bloque que dibuje un cuadrado. En la guía 1 aprendimos a dibujar un cuadrado. Ahora veremos cómo automatizar esta acción para que cada vez que necesitemos un cuadrado podamos sencillamente usar la nueva instrucción «cuadrado».

Elegiremos el menú «Lápiz», le pondremos por nombre «cuadrado» y elegiremos «Comando». Al pulsar «De acuerdo» se nos abrirá una ventana, que es el editor de bloques. Haciendo clic en el símbolo «+» del lado derecho del cuadrado, podremos añadir un parámetro, al que denominaremos «medida». De este modo, cuando queramos hacer un cuadrado lo podremos hacer del tamaño que queramos (o hacer que sea aleatorio con la instrucción que ya hemos aprendido antes).

Una vez creado el parámetro «medida», podemos definir exactamente qué hará la instrucción «cuadrado» cada vez que la utilicemos. Lo haremos creando la secuencia de instrucciones necesaria («repite 4 veces, muévete adelante y gira 90°»). Cuando añadamos el bloque «muévete», en lugar de escribir un número concreto de pasos, pondremos dentro la variable «medida», que ya se nos ha creado automáticamente y que podemos arrastrar. Al final del proceso deberíamos tener algo parecido a esto:

Acabados todos estos pasos, si vamos al menú «Lápiz» encontraremos una nueva instrucción como esta:

A partir de ahora podemos usar esta instrucción en nuestros programas cada vez que queramos dibujar un cuadrado.

Por ejemplo, creamos un programa que dibuje cien cuadrados en lugares aleatorios del escenario, y que cada cuadrado tenga una medida también aleatoria (entre 10 y 50 pasos).

Código del programa

Si quisiéramos, podríamos crear más de un parámetro y, aparte de «medida», tener también «color», «grosor de línea», etc.

De este modo, podemos repetir el ejemplo anterior pero dibujando cien cuadrados que, aparte de posición y medida aleatoria, tengan colores y medidas diferentes.

Código del programa