Python版《生命游戏+源码》

生命游戏程序–Conway’s Game of Life,它的发展由其初始状态决定,不需要进一步的输入。通过创建初始配置并观察其演变,它可以与生命游戏互动。

游戏的原始文档:https://en.wikipedia.org/wiki/The_Game_of_Life,有兴趣的可以去看下。

file

生命游戏

游戏大概的逻辑是这样的:

用一个二维表格表示“生存空间”,空间的每个方格中都可放置一个生命细胞,每个生命细胞只有两种状态:“生”或“死”。用绿色方格表示该细胞为“生”,空格(白色)表示该细胞为“死”。或者说方格网中绿色部分表示某个时候某种“生命”的分布图。生命游戏想要模拟的是:随着时间的流逝,这个分布图将如何一代一代地变化。进入死亡状态,称它“湮灭”状态。

下面就开始绘制和写细胞的衍生和死亡逻辑:

生命类:

、、、

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值