Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/data/misc/lifegame
diff options
context:
space:
mode:
Diffstat (limited to 'data/misc/lifegame')
-rw-r--r--data/misc/lifegame155
1 files changed, 88 insertions, 67 deletions
diff --git a/data/misc/lifegame b/data/misc/lifegame
index 77165df..fd93011 100644
--- a/data/misc/lifegame
+++ b/data/misc/lifegame
@@ -2,89 +2,110 @@
# Bibliotecas
import os, time, random
-def cargartablero(filas,columnas):
- tablero=[]
- columna = [0]*columnas
- celulas=0
-#cargamos casilleros vacios
- for i in range(filas):
- columna = [0]* columnas
- tablero.append(columna)
-#cargamos las celulas
- for x in range(filas):
- for y in range(columnas):
- celula = random.randint(0,random.randint(0,1))
- tablero[x][y] = celula
- return tablero
+#
+# we need a funcion to load
+#
-def dibujartablero(tablero):
- filas=len(tablero)
- columnas=len(tablero[1])
- for x in range(filas):
- for y in range(columnas):
- if tablero[x][y]==0:
+def LoadCells(rows,cols):
+ grid=[]
+ col = [0]*cols
+ cells=0
+#first we load an empty grid
+ for i in range(rows):
+ col = [0]* cols
+ grid.append(col)
+#then we load some cells
+ for x in range(rows):
+ for y in range(cols):
+ cell = random.randint(0,random.randint(0,1))
+ grid[x][y] = cell
+ return grid
+
+#
+# here we draw the grid
+#
+
+def DrawGrid(grid):
+ rows=len(grid)
+ cols=len(grid[1])
+ for x in range(rows):
+ for y in range(cols):
+ if grid[x][y]==0:
print ".",
else:
print "o",
print "\n",
-def contarvecinos(tablero,x,y):
- vecinos=0
- filas=len(tablero)
- columnas=len(tablero[1])
+#
+# this funcion count neighbors arround a single cell
+#
+
+def CountNeighbors(grid,x,y):
+ neighbors=0
+ rows=len(grid)
+ cols=len(grid[1])
- if x < filas-1 and tablero[x+1][y]==1:
- vecinos = vecinos + 1
- if x > 0 and tablero[x-1][y]==1:
- vecinos = vecinos + 1
- if y < columnas-1 and tablero[x][y+1]==1:
- vecinos = vecinos + 1
- if y > 0 and tablero[x][y-1]==1:
- vecinos = vecinos + 1
- if x < filas-1 and y < columnas-1 and tablero[x+1][y+1]==1:
- vecinos = vecinos + 1
- if x > 0 and y > 0 and tablero[x-1][y-1]==1:
- vecinos = vecinos + 1
- if x > 0 and y < columnas-1 and tablero[x-1][y+1]==1:
- vecinos = vecinos + 1
- if x < filas-1 and y > 0 and tablero[x+1][y-1]==1:
- vecinos = vecinos + 1
+ if x < rows-1 and grid[x+1][y]==1:
+ neighbors = neighbors + 1
+ if x > 0 and grid[x-1][y]==1:
+ neighbors = neighbors + 1
+ if y < cols-1 and grid[x][y+1]==1:
+ neighbors = neighbors + 1
+ if y > 0 and grid[x][y-1]==1:
+ neighbors = neighbors + 1
+ if x < rows-1 and y < cols-1 and grid[x+1][y+1]==1:
+ neighbors = neighbors + 1
+ if x > 0 and y > 0 and grid[x-1][y-1]==1:
+ neighbors = neighbors + 1
+ if x > 0 and y < cols-1 and grid[x-1][y+1]==1:
+ neighbors = neighbors + 1
+ if x < rows-1 and y > 0 and grid[x+1][y-1]==1:
+ neighbors = neighbors + 1
- return vecinos
+ return neighbors
-def iteracion(tablero):
- filas=len(tablero)
- columnas=len(tablero[1])
- vecinos=0
- for x in range(filas):
- for y in range(columnas):
- if tablero[x][y] == 1:
- vecinos = contarvecinos(tablero,x,y)
- if vecinos >= 3 and vecinos <= 6:
+# here we define a single iteration
+# if we have between 3 and 6 neighbors the single cell live
+# in other case the cell die
+
+def Iteration(grid):
+ rows=len(grid)
+ cols=len(grid[1])
+ neighbors=0
+ for x in range(rows):
+ for y in range(cols):
+ if grid[x][y] == 1:
+ neighbors = CountNeighbors(grid,x,y)
+ if neighbors >= 3 and neighbors <= 6:
xpos = x + random.randint(-1,1)
if xpos <= 0:
xpos = 1
- if xpos >= filas:
- xpos = filas-1
+ if xpos >= rows:
+ xpos = rows-1
ypos = y + random.randint(-1,1)
if ypos <= 0:
ypos = 1
- if ypos >= columnas:
- ypos = columnas-1
- tablero[xpos][ypos]=1
+ if ypos >= cols:
+ ypos = cols-1
+ grid[xpos][ypos]=1
else:
- tablero[x][y]=0
+ grid[x][y]=0
+
+#
+# this funcion iterate n pulses and draws the result of earch one
+#
-def bucleprincipal(filas,columnas,pulsos):
- pulso=0
- tablero = cargartablero(30,30)
- while pulso < pulsos:
+def Iterator(rows,cols,pulsos):
+ pulse=1
+ grid = LoadCells(30,30)
+ while pulse <= pulses:
os.system('clear')
- print "Pulso: ",pulso
- iteracion(tablero)
- dibujartablero(tablero)
- pulso = pulso + 1
+ print "Pulse: ",pulse
+ Iteration(grid)
+ DrawGrid(grid)
+ pulse = pulse + 1
time.sleep(0.2)
-numero = input("Ingrese el numero de filas y columnas (unico numero):")
-pulsos = input("Ingrese el numero de pulsos:")
-bucleprincipal(numero,numero,pulsos)
+
+number = input("Please imput the number of rows and cols (unique number):")
+pulses = input("Please imput the number of pulses:")
+Iterator(number,number,pulses)