Juego de la vida
A continuación, vamos a estudiar una posible implementación del juego de la vida con scripts de bash y arrays.
El mayor problema para resolver esto en bash es que no podemos hacer directamente arrays bidimensionales. Por eso, debemos recurrir al truco de poner array[y*tamaño+x].
Preparación de la pantalla
La pantalla, al principio, es un array bidimensional de un tamaño determinado que tiene valores aleatorios entre '0' y '1'. Debemos hacer una función que la genere:
generar_pantalla () { ancho=$1 for ((i=0;i<$((ancho*ancho));i++)) do pantalla[$i]=$(echo $((RANDOM%2))) done }
Si queremos mostrarla, podemos hacer esto:
echo "${pantalla[@]}" | tr -d ' ' |sed -r "s/.{$ancho}/&\n/g"
De esta manera, el script para generar y mostrar el juego de la vida en bash queda así:
Dibujar la pantalla cada cierto tiempo
A continuación, hay que buscar la manera de dibujar la pantalla cada cierto tiempo sin que parpadee. Otros lenguajes permiten la utilización del llamado doble buffer. Pero en Bash hay que buscarse la vida.
Si hacemos un clear antes de dibujarla, el tiempo que tarde en volver a mostrarla parecerá un parpadeo. La idea es evitar esto no haciendo el clear, sino sobrescribiendola.
Esto se consigue con los caracteres especiales del echo