Diferencia entre revisiones de «Juego de la vida»

De Jose Castillo Aliaga
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 bash|scripts de bash]] y [[Arrays en Bash|arrays]]
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í:

#!/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"