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()