Introducción
El juego de la vida consiste hacer vivir o nacer casillas según
la población que exista en tu alrededor, vivir en este caso lo tomamos como “1”
y morir como “0”.
Si una casilla esta viva o muerta sus vecinos (arriba, abajo, izquierda, derecha, abajo ala
derecha, abajo ala izquierda, arriba ala derecha y arriba ala izquierda) pueden
ya sea morir vivir o nacer.
- · Si una casilla llamaremos A tiene 2 o 3 casillas vivas como vecinos entonces la casilla A morirá de vivirá
- · Si una casilla A tiene 0 o 1 vecino muere por soledad
- · Y si una casilla tiene mas de 3 casillas vivas a su alrededor muere por sobre-población.
- · Si una casilla tiene exactamente 3 nace (vive).
Partes Mas Importantes Del Código
Aquí es donde se introducen los números en las casillas aleatoriamente:
|
random.seed(2000)
for i in range((self.height * self.width)/10):
self.str[random.randint(0,self.height-1)][random.randint(0,self.width-1)] =
'1'
while self.run == True:
self.text2.delete(1.0,END)
temp = ' '
|
Después mandaremos llamar las reglas por medio de una función, estás se encuentran al final del código :
|
while
self.run == True:
self.text2.delete(1.0,END)
temp = ' '
|
Ahora se hacen todas las comparaciones con todos los vecinos que están alrededor de las casilla i y j de la primera matriz:
|
for i in range(self.height):
for j in range(self.width):
count[i][j] = 0
for i in range(self.height-1):
for j in range(self.width-1):
if self.str[i][j] == '1':
if i > 0 and j
> 0:
count[i-1][j-1]
+= 1
if i > 0:
count[i-1][j] += 1
count[i-1][j+1]
+= 1
if j > 0:
count[i][j-1] += 1
count[i+1][j-1]
+= 1
count[i][j+1] += 1
count[i+1][j] += 1
count[i+1][j+1] += 1
|
Terminando las comparaciones de la matriz se van a imprimir
|
if
self.str[i][j] == '0':
temp += ' '
else:
temp += '1'
temp += '\n'
|
Al final del código aplicamos las reglas que habíamos de los datos de la matriz volvemos al proceso donde se comparan los vecinos:
|
self.text2.insert(1.0,temp)
for i in range(self.height):
for j in range(self.width):
if self.str[i][j] == '1':
if count[i][j] < 2
:
self.str[i][j] =
'0'
if count[i][j] == 2
or count[i][j] == 3:
self.str[i][j] = '1'
if count[i][j] > 3
:
self.str[i][j] =
'0'
if self.str[i][j] == '0':
if count[i][j] == 3 :
self.str[i][j] =
'1'
|
Conclusión
Como conclusión esto se diseño con arreglos, ciclos for, if , comparaciones y con un random para que no estar llenando casilla por casilla cada la matriz de entrada.


