生命游戏程序–Conway’s Game of Life,它的发展由其初始状态决定,不需要进一步的输入。通过创建初始配置并观察其演变,它可以与生命游戏互动。
游戏的原始文档:https://en.wikipedia.org/wiki/The_Game_of_Life,有兴趣的可以去看下。
生命游戏
游戏大概的逻辑是这样的:
用一个二维表格表示“生存空间”,空间的每个方格中都可放置一个生命细胞,每个生命细胞只有两种状态:“生”或“死”。用绿色方格表示该细胞为“生”,空格(白色)表示该细胞为“死”。或者说方格网中绿色部分表示某个时候某种“生命”的分布图。生命游戏想要模拟的是:随着时间的流逝,这个分布图将如何一代一代地变化。进入死亡状态,称它“湮灭”状态。
下面就开始绘制和写细胞的衍生和死亡逻辑:
生命类:
、、、
class Lifes:
def __init__(self, rows=38, cols=38):
self.row = rows
self.col = cols
self.items = [[0] * self.col for _ in range(self.row)]
self.histroy = []
self.histroySize = 30
self.running = False
self.runningSpeed = 100
def reset_life(self, rate=0.1):
self.histroy = []
for i in range(self.row):
for j in range(self.col):
rnd = random.random()
if rnd > 1 - rate:
self.items[i][j] = 1
def reproduce(self):
new = [[0] * self.col
for _ in range(self.row)]
self.add_history()
if len(self.histroy) > self.histroySize:
self.histroy.pop(0)
for i in range(self.row):
for j in range(self.col):
if i * j == 0 or i == self.row - 1 or j == self.col - 1:
new[i][j] = 0
else:
lifes = 0
for m in range(i - 1, i + 2):
for n in range(j - 1, j + 2