元胞自动机python代码_Python实现元胞自动机(康威生命游戏)

本文介绍了元胞自动机,特别是康威生命游戏,详细讲解了其规则,并提供了一个使用Python和pygame库实现的游戏示例。通过矩阵操作和事件处理,实现了游戏的重置、演化、暂停、细胞增删等功能。
摘要由CSDN通过智能技术生成

元胞自动机是很常用的传播/交通模型,因此写下这篇文章,以后忘了可以再翻看

元胞自动机元胞自动机又被称为康威生命游戏,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它最初于1970年10月在《科学美国人》杂志上马丁·葛登能的“数学游戏”专栏出现

元胞自动机是一个零玩家游戏。他包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一时刻的生死取决于相邻八个方格中或者的或死了的细胞数量

规则

每个细胞有两种状态-存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动:细胞过少:当周围低于2个(不包含2个)存活细胞时,本单元活细胞死亡

稳定:当周围有2个或3个存活细胞时,本单元细胞保持原样

人口过剩:当周围有3个以上的存活细胞时,本单元活细胞死亡

繁殖:当周围有3个存活细胞时,本单元细胞存活/活化

初看觉得这就是个模拟细胞繁衍的东西,规则也很简单。

随着游戏的进行,杂乱无序的细胞会逐渐演化出各种精致、有形的结构,这些结构往往有很好的对称性,而且每一代都在变化形状,一些形状已经锁定,不会逐代变化。有时,一些已经成形的结构会因为一些无序细胞的"入侵"而被破坏。但是形状和秩序经常能从杂乱中产生出来。对于生成的形状和秩序,我们称作pattern(模式)

开发准备

首先安装pygamepip install pygame

开发步骤

我们使用矩阵来记录我们的游戏世界,其中0表示细胞死亡,1表示细胞存活

感谢The Game of Life in Python这篇博文,一行代码解决了计算细胞周围活细胞数量的问题nbrs_count = sum(np.roll(np.roll(X, i, 0), j, 1)

for i in (-1, 0, 1) for j in (-1, 0, 1)

if (i != 0 or j != 0))

由于我们的游戏世界是上下左右循环的,所以将矩阵往8个方向进行循环移位得到8个新矩阵,将8个新矩阵相加就能得到每个细胞周围的活细胞数量矩阵了

np.roll操作就是循环移位操作。np.roll(X, i, 0)中的X代表输入矩阵ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值