diff options
Diffstat (limited to 'data/misc/lifegame')
-rw-r--r-- | data/misc/lifegame | 155 |
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) |