viernes, 30 de agosto de 2013

Juego De La Vida


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'

Captura De Pantallas



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. 


No hay comentarios:

Publicar un comentario