#! /usr/bin/env python3 #conways game of life import time, random, copy width = 100 hight = 50 nextCells = [] currentCells = [] def createInitalBoard(): #create inital board for x in range(width): column = [] #add a column for y in range(hight): if random.randint(0, 1) == 0: column.append('#') #add a living cell else: column.append(' ') #add a dead cell nextCells.append(column) #append the newly created random column def printBoard(): for y in range(hight): for x in range(width): print(nextCells[x][y], end='') print()#print a newline at the end of the row. print('\n\n\n\n\n') #seperate each step with newlines def updateBoard(): currentCells = copy.deepcopy(nextCells) #create a buffer of the grid to work on. for x in range(width): for y in range(hight): #get neighboring cordinates #% width makes the board wrap. leftCoord = (x-1)%width rightCoord = (x+1)%width aboveCoord = (y-1)%hight belowCoord = (y+1)%hight numNeighbors = 0 #count the number of living neighbors if currentCells[leftCoord][aboveCoord] == '#': numNeighbors +=1 #top left if currentCells[x][aboveCoord] == '#': numNeighbors +=1 #top if currentCells[rightCoord][aboveCoord] == '#': numNeighbors +=1 #top right if currentCells[leftCoord][y] == '#': numNeighbors +=1 #left if currentCells[rightCoord][y] == '#': numNeighbors +=1 #right if currentCells[leftCoord][belowCoord] == '#': numNeighbors +=1 #bottom left if currentCells[x][belowCoord] == '#': numNeighbors +=1 #bottom if currentCells[rightCoord][belowCoord] == '#': numNeighbors +=1 #bottom right #set cell state based on conways rules if currentCells[x][y] == '#' and (numNeighbors == 2 or numNeighbors == 3): nextCells[x][y] = '#' elif currentCells[x][y] == ' ' and numNeighbors == 3: nextCells[x][y] = '#' else: nextCells[x][y] = ' ' createInitalBoard() while True: #main loop printBoard() updateBoard() time.sleep(.1)