康威生命游戏的Python实现

简介: 康威生命游戏的Python实现

康威生命游戏是康威提出的一种细胞繁殖的一种数学模型。


起始状态:细胞的状态不是“生”就是“死”,并且是随机的。


规则1:当周围的邻居细胞低于两个(不包含两个)存活时,该细胞变成死亡状态(模拟生命数量稀少)。

规则2:当周围有3个以上的存活细胞时,该细胞变成死亡状态(模拟生命数量过多)。

规则3:当周围有3个存活细胞时,则迭代后该细胞存活状态。

规则4:当周围有2个存活细胞时,该细胞保持原样。


分别对应下面四个图:

image.png

image.png

image.png

image.png


根据规则,用Python书写代码如下:


#!/usr/bin/env python
#coding:utf-8
'''


如果当前细胞周围细胞个数:

小与2个或者大于3个,这下一代死去

=3个:则下一代活着

=2个;则选一代保持不变


'''
import copy,random
#康威生命游戏规则
def life_rule(cell):
        new_cell = copy.deepcopy(cell)
        width = len(cell)
        higth = len(cell[0])
        for x in range(width):
                for y in range(higth):
                    new_cell[x][y] = judeg_current_node(cell,x,y,width,higth)
        print(new_cell)
        if new_cell != cell:
                life_rule(new_cell)
#判断当前节点下一次迭代的生死
def judeg_current_node(cell,x,y,width,higth):
        live = 0
        #左上角
        if x-1>0 and y-1>0:
                live+=cell[x-1][y-1]
        #上边
        if y-1>0:
                live+=cell[x][y-1]
        #右上角
        if x+1<width and y-1>0:
                live+=cell[x+1][y-1]
        #左边
        if x-1>0:
                live+=cell[x-1][y]
        #右边
        if x+1<width:
                live+=cell[x+1][y]
        #左下角
        if x-1>0 and y+1<higth:
                live+=cell[x-1][y+1]
        #下边
        if y+1<higth:
                live+=cell[x][y+1]
        #右下角
        if x+1<width and y+1<higth:
                live+=cell[x+1][y+1]
        if live<2 or live>3:
                return 0
        elif live == 3:
                return 1
        elif live ==2:
                return cell[x][y]
#随机产生细胞
def create_cell(x,y):
        cell1=[]
        for i in range(x):
                cell2=[]
                for j in range(y):
                        cell2.append(random.randint(0,1))
                cell1.append(cell2)
        return cell1
if __name__=="__main__":
        #1活,0死
        cell = create_cell(5,5)
        life_rule(cell)


根据测试结果,有些时候所有细胞都死亡,有些时候进行几次繁衍,细胞达成一个稳态,还有一次迭代超过了Python的最大迭代次数后仍旧没有达到稳态。康威生命游戏说明,当周围细胞过多的时候,细胞为了争夺资源最后全部灭亡(比如列表中的值都为1);当周围细胞过少的时候,没有互相协助也将全部灭亡(比如列表中的值大部分为0)。下面为一个经过九次繁殖达到一个稳态的例子。


[[0, 1, 1, 1, 0], [1, 1, 1, 1, 0], [0, 0, 0, 1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 0, 0]]

[[1, 1, 0, 1, 0], [0, 0, 1, 1, 0], [1, 1, 0, 1, 1], [0, 0, 1, 1, 0], [0, 0, 0, 0, 0]]

[[0, 0, 0, 1, 0], [0, 0, 1, 1, 1], [0, 1, 0, 0, 1], [0, 0, 1, 1, 1], [0, 0, 0, 0, 0]]

[[0, 0, 1, 1, 1], [0, 0, 1, 1, 1], [0, 1, 0, 0, 0], [0, 0, 1, 1, 1], [0, 0, 0, 1, 0]]

[[0, 0, 1, 0, 1], [0, 0, 1, 1, 0], [0, 1, 0, 0, 0], [0, 0, 1, 1, 1], [0, 0, 1, 1, 1]]

[[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 1, 0, 0, 1], [0, 1, 0, 0, 1], [0, 0, 1, 0, 1]]

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 1, 1, 0, 1], [0, 0, 0, 1, 0]]

[[0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 1, 0, 1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 1, 0]]

[[0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 1, 0, 1, 0], [0, 1, 0, 0, 1], [0, 0, 1, 1, 0]]


在这个例子中,在一个5X5=25的细胞组织中,7个细胞处于存活状态。下面的例子中,细胞经过5次繁殖均全部死亡


[[1, 1, 1, 0, 0], [0, 0, 0, 0, 0], [0, 1, 0, 0, 1], [0, 1, 1, 0, 1], [0, 1, 1, 0, 0]]

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [1, 0, 0, 0, 0], [0, 1, 1, 1, 0]]

[[0, 0, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [1, 0, 0, 0, 0], [0, 0, 1, 0, 0]]

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

目录
相关文章
|
9天前
|
存储 人工智能 运维
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
102 47
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
6天前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
|
19天前
|
Python
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
60 33
|
3月前
|
IDE 开发工具 Python
Python扑克游戏编程---摸大点
Python扑克游戏编程---摸大点
68 1
|
4月前
|
Python
python编写下象棋游戏|4-14
python编写下象棋游戏|4-14
|
4月前
|
人工智能 算法 图形学
总有一个是你想要的分享40个Python游戏源代码
这是一系列基于Python开发的游戏项目集合,包括中国象棋、麻将、足球、坦克大战、扑克等多种类型游戏,运用了Pygame等库实现图形界面与AI算法。此外还包含迷宫、数独、推箱子等益智游戏及经典游戏如《仙剑奇侠传二战棋版》和《星露谷物语》的Python版本,适合编程学习与娱乐。
288 11
|
3月前
|
数据采集 前端开发 Python
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
Python pygame 实现游戏 彩色 五子棋 详细注释 附源码 单机版
107 0
|
4月前
|
消息中间件 数据采集 数据库
庆祝吧!Python IPC让进程间的合作,比团队游戏还默契
【9月更文挑战第7天】在这个数字化时代,软件系统日益复杂,单进程已难以高效处理海量数据。Python IPC(进程间通信)技术应运而生,使多进程协作如同训练有素的电竞战队般默契。通过`multiprocessing`模块中的Pipe等功能,进程间可以直接传递数据,无需依赖低效的文件共享或数据库读写。此外,Python IPC还提供了消息队列、共享内存和套接字等多种机制,适用于不同场景,使进程间的合作更加高效、精准。这一技术革新让开发者能轻松应对复杂挑战,构建更健壮的软件系统。
49 1
|
5月前
|
机器学习/深度学习 存储 定位技术
强化学习Agent系列(一)——PyGame游戏编程,Python 贪吃蛇制作实战教学
本文是关于使用Pygame库开发Python贪吃蛇游戏的实战教学,介绍了Pygame的基本使用、窗口初始化、事件处理、键盘控制移动、以及实现游戏逻辑和对象交互的方法。
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇--游戏生成技术
游戏生成技术,特别是生成式人工智能(Generative Artificial Intelligence, 简称Generative AI),正逐步革新游戏开发的多个层面,从内容创作到体验设计。这些技术主要利用机器学习、深度学习以及程序化内容生成(Procedural Content Generation, PCG)来自动创造游戏内的各种元素,显著提高了开发效率、丰富了游戏内容并增强了玩家体验。以下是生成式AI在游戏开发中的几个关键应用场景概述
105 2