Diferencia entre revisiones de «Juego de la vida»
Ir a la navegación
Ir a la búsqueda
(Página creada con «A continuación, vamos a estudiar una posible implementación del juego de la vida con scripts de bash y arrays») |
Sin resumen de edición |
||
Línea 1: | Línea 1: | ||
A continuación, vamos a estudiar una posible implementación del juego de la vida con [[Scripts | A continuación, vamos a estudiar una posible implementación del juego de la vida con [[Scripts Bash|scripts de bash]] y [[Arrays en Bash|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í: | |||
<div class="toccolours mw-collapsible mw-collapsed" style="overflow: hidden;"> | |||
<nowiki> | |||
#!/bin/bash | |||
generar_pantalla () | |||
{ | |||
ancho=$1 | |||
for ((i=0;i<$((ancho*ancho));i++)) | |||
do | |||
pantalla[$i]=$(echo $((RANDOM%2))) | |||
done | |||
} | |||
ancho=$1 | |||
generar_pantalla $ancho | |||
echo "${pantalla[@]}" | tr -d ' ' |sed -r "s/.{$ancho}/&\n/g" | |||
</nowiki> | |||
</div> |
Revisión del 15:43 30 may 2013
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í: