import random import time class life: def __init__(self, born, alive, mwidth, mheight): self.born = born self.alive = alive self.mwidth = mwidth self.mheight = mheight self.field = [] self.initfield() def initfield(self): self.field = [] for i in range(self.mheight): self.field.append([]) for j in range(self.mwidth): deadoralive = random.randint(0, 1) if deadoralive == 0: self.field[i].append(' ') else: self.field[i].append('#') def draw(self): for i in range(3): print() for row in self.field: print(''.join(row)) def nextgen(self): tempfield = [] for i in range(self.mheight): tempfield.append([]) for j in range(self.mwidth): tempfield[i].append(' ') for i in range(1, self.mheight - 1): for j in range(1, self.mwidth - 1): neighbours = 0 if self.field[i][j + 1] == '#': neighbours = neighbours + 1 if self.field[i][j - 1] == '#': neighbours = neighbours + 1 if self.field[i + 1][j + 1] == '#': neighbours = neighbours + 1 if self.field[i + 1][j - 1] == '#': neighbours = neighbours + 1 if self.field[i - 1][j + 1] == '#': neighbours = neighbours + 1 if self.field[i - 1][j - 1] == '#': neighbours = neighbours + 1 if self.field[i + 1][j] == '#': neighbours = neighbours + 1 if self.field[i - 1][j] == '#': neighbours = neighbours + 1 if neighbours in self.born: tempfield[i][j] = '#' elif neighbours not in self.alive: tempfield[i][j] = ' ' else: tempfield[i][j] = self.field[i][j] for i in range(self.mheight): for j in range(self.mwidth): if tempfield[i][j] != self.field[i][j]: self.field = tempfield return self.initfield() def main(): conway_life = life([3], [3, 2], 60, 30) while True: conway_life.draw() conway_life.nextgen() time.sleep(0.3) if __name__ == "__main__": main()