瘟疫建模前期调研之二——生命游戏

探索生命游戏:细胞自动机的奥秘与模拟实践 生命游戏(Game of Life),由数学家约翰·霍顿·康威(John Horton Conway)在1970年发明,是一种零玩家游戏,它展示了简单的规则如何产生复杂的行为。尽管名字带有“游戏”二字,但生命游戏其实是一种元胞自动机模型,通过简单的规则在二维网格上模拟细胞的生与死。细胞自动机是由一些网格组成的无限、离散的数学模型。每个网格点称为一个“细胞”,每个细胞拥有有限的状态集合。 阅读详情

目录

  • 原理简介
  • 作品展示
  • 代码演示

一、原理简介

1.生命游戏是什么?

(1) 简单地来说,生命游戏其实是一个拓展的细胞自动机。如果不了解细胞自动机的话可以看我写的这个系列的第一篇文章。在之前的细胞自动机中,细胞的初始状态是一行细胞,而生成的细胞是它的下一代,而上一代的细胞我们是进行了保留的。所以上下代都显示在了屏幕上。
(2) 而生命游戏中,也分二维和三维,这里我以二维生命游戏举例:初始细胞是在一个二维平面上展示的。它不再是一行细胞,而是二维平面的细胞。细胞的每一代也不会都保留下来同时展示,下一代的细胞状态将会取代上一代的细胞状态。因此我们看到的将会是,二维平面的细胞,根据某种规则,细胞不断在发生变化的效果。

2.生命游戏和瘟疫建模之间有什么联系?

在这里插入图片描述

瘟疫建模中,倘若我们要模拟疫情的传播过程,了解和学会制作生命游戏是十分重要的。瘟疫建模和生命游戏可以进行类比。细胞相当于瘟疫建模中的人体。细胞的状态可以看作是人是否患病的一种状态。而细胞的每一代的变换,在瘟疫建模中可以体现为人体的患病情况的一种变换过程(从未患病、到感染、到康复)。

3.如何进行生命游戏的设计?

在这里插入图片描述

如果之前已经学会了初等细胞自动机的设计,那么进行生命游戏的设计就很简单了,只需要下以下几个方面进行修改即可:
(1):细胞的初始状态,不是一行,而是设置为二维的细胞,可以使用二维数组进行存储。
(2):细胞的下一代状态,应该直接体现在同一组细胞上,取代上一代的细胞,相当于迭代更新。
(3):细胞的规则设置:邻居的数目增多,应该考虑到和当前细胞所有相邻的一组细胞。二维生命游戏中要考虑8个邻居,三维中要考虑26个邻居。

二、作品展示

(1)图片展示

在这里插入图片描述

(2)动图展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(3)视频展示

生命游戏

三、代码演示

1.程序设计思路分析

在这里插入图片描述

2.程序模块介绍

我所设计的生命游戏是三维的生命游戏。细胞的状态用颜色的透明度、不同的颜色来表示。整个程序分为两大部分。第一部分是生命游戏类的设计,第二部分是程序调用重绘函数绘制生命游戏中的细胞的迭代过程。

(1)生命游戏类的设计

在这里插入图片描述

(2)程序整体实现其他的部分

在这里插入图片描述

3.程序展示
//***********************************生命游戏原型+构造函数*************************************
function LifeGame() {
    //创建一个立方体的三维数组
    this.columnlife = columnlife;
    this.rowlife = rowlife;
    this.zlen = zlen;
    newlife=new Array(rowlife);
    for(var i1=0;i1<rowlife;i1++){
        newlife[i1]=new Array(columnlife);
        for(var j1=0;j1<columnlife;j1++){
            newlife[i1][j1]=new Array(zlen);
        }
    }
    this.board = new Array(rowlife);
    for(var i=0;i<rowlife;i++){
        this.board[i]=new Array(columnlife);
        for(var j=0;j<columnlife;j++){
            this.board[i][j]=new Array(zlen);
        }
    }
    this.initLife();
}
//初始化细胞数组
LifeGame.prototype.initLife = function () {
    for (var k = 0; k < this.zlen ; k++) {
        for (var i = 0; i < this.rowlife ; i++) {
            for (var j = 0; j < this.columnlife ; j++) {
                this.board[i][j][k] = Math.round(Math.random());
                newlife[i][j][k] = 0;
            }
        }
    }
};
// 环境光
    function lights() {
        //添加环境光
        var ambientLight = new THREE.AmbientLight("#ffffff", 1.5); //括号内传入指定颜色
        scene.add(ambientLight);
    }
    // 星点
    function stars() {
        var starsGeometry = new THREE.Geometry();
        for (var i = 0; i < 2000; i++) {
            var starVector = new THREE.Vector3(
                THREE.Math.randFloatSpread(1500),
                THREE.Math.randFloatSpread(1500),
                THREE.Math.randFloatSpread(1500)
            );
            starsGeometry.vertices.push(starVector);
        }
        var starsMaterial = new THREE.PointsMaterial({color: 0xffffff});
        var starsPoint = new THREE.Points(starsGeometry, starsMaterial);
        scene.add(starsPoint)
    }

    
生命游戏(元胞自动机原理) 使用C++实现的二维生命游戏,对于理解元胞自动机原理有很大的帮助。 立即下载

相关推荐

Python生命游戏实现原理及过程解析(附源代码)

1. 生命游戏是什么 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。 规则看起来很简单,但却能演绎出无穷无尽的内容。 滑翔者:每4个回合”它”会向右下角走一格。虽然细胞早就是不同的细胞了,但它能保持原本的形态。 轻量级飞船:它的周期是4,每2个回合会向右边走一格。 脉冲星:它的周期为3,看起来像一颗周

【生命游戏】纯前端web版,可在线体验

本文介绍了一个基于Web的生命游戏实现,作者将之前用Java Swing开发的版本重构为JavaScript网页版。文章提供了游戏简介、效果图展示和完整源码链接。生命游戏是由数学家J.H.Conway提出的细胞自动机,遵循四条基本规则:孤单死亡、拥挤死亡、稳定存活和复活。网页版通过HTML构建界面,CSS实现样式设计,JavaScript处理游戏逻辑。界面包含游戏说明、细胞网格显示区和操作面板,支持调整行列数量、演化速度和分布密度等参数,提供重新布置、随机分布、下一周期和开始演化等功能按钮。源码已开源在Gi

Nonoas的博客 1万+

电网加密芯片全解析:分类与功能​

在电网数字化转型的浪潮中,数据安全和设备的身份认证变得愈发重要。加密芯片作为保障电网信息安全的核心部件,凭借独特的技术特性,在不同应用场景下发挥着关键作用,有力推动着智能电网的安全稳定发展。接下来,我们将对电网中常见的加密芯片展开分类介绍,并探讨其对应的功能。​。

1963

生命游戏的简单实现(c++代码)

一、生命游戏生命游戏(Game of Life, 简称生命)是 John Conway 于 1970 年发明的生命游戏不是通常意义上的游戏,没有游戏者,也无所谓胜负生命游戏是一类特殊的细胞自动机一旦给定初始状态,之后的发展完全由规则确定生命充满了悬念!绝大多数情况下,不可能只根据初始状态(或称模式)判断未来的发展,只能按照游戏的规则运行下去实现起来还是非常有趣且简单的!!

Mr_Fmnwon的博客 3759

【小贪】万字长文介绍因果推断和增益模型

本文首先从一个实例出发阐述了因果性不等于相关性,进而引出因果推断和增益模型。然后简单介绍了因果推断的基础内容,并介绍了主要的三类增益模型:元学习、增益直接建模、表示学习,每一类模型都简要介绍了其经典模型。之后介绍了增益模型的评价指标,包括uplift bins、uplift curve和qini曲线。增益模型实际上是一大类模型框架,本质上可以用传统响应模型或其他机器学习模型嵌入增益模型的框架,但是预测结果并不是一个概率,模型评价方式也有变化。训练样本收集增益模型建模强依赖于ab实验,数据要求很高。

打瞌睡_的博客 2506

LSTM模型 轨迹经纬度预测

原始时间序列数据如下所示,我们只取前两列纬度和经度作为输入数据 我们设定用前六个位置信息预测下一个位置,则两个样本的输入输出数据如下所示: 创建LSTM网络训练模型: import numpy as np from keras.layers.core import Dense, Activation, Dropout from keras.layers import LS...

Muzi_Water的博客 2万+

pygame + numpy实现康威生命游戏

pygame + numpy实现康威生命游戏

cnds123的专栏 1747

立创EDA + AI 生成 STM32 原理图教程1

AI辅助立创EDA设计STM32原理图教程摘要 本教程系统介绍如何利用AI工具(如Claude Code、DeepSeek等)与立创EDA专业版结合,实现STM32原理图的智能生成与优化。主要内容包括: 技术架构:采用分层设计,AI生成结构化网表数据,由立创EDA执行确定性绘图,确保可审查性 环境搭建:详细说明立创EDA专业版、Node.js等工具的安装配置 五种AI集成方案:包括官方AI Skill、MCP Server等不同实现方式 核心功能: 自动提取STM32引脚定义 智能元件选型与LCSC编号匹配

shihui2003的博客 1555

生命游戏(Java版)

游戏简介 生命游戏(game of life)为1970年由英国数学家J. H. Conway所提出 某细胞的邻居包括上、下、左、右、左上、左下、右上与右下相邻之细胞 游戏规则如下: 孤单死亡 如果细胞的邻居小于一个,则该细胞在下一次状态将死亡 拥挤死亡 如果细胞的邻居在四个以上,则该细胞在下一次状态将死亡 稳定 如果细胞的邻居为二个或三个,则下一次状态为稳定存活 复活 如果某位置原无细胞存活,而...

Nonoas的博客 6291

SpringBoot+Vue企业级开源聚合支付系统!支持30+款支付平台,只需配置商户证书就能直接使用!

一款开源SAAS支付系统推荐

技术Z先生的博客 2720

如何在STM32上5分钟搞定nanopb协议传输?附完整代码示例

本文提供了在STM32微控制器上快速集成nanopb协议传输的实战指南。通过详细的步骤,从.proto文件定义、代码生成到STM32CubeIDE项目移植,帮助开发者利用nanopb这一轻量级Protocol Buffers C语言实现,在5分钟内构建高效、跨平台的嵌入式设备通信框架,并附有完整的代码示例。

jwt8token的博客 839

2021-11-02:生命游戏。根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个

2021-11-02:生命游戏。根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活;如果活细胞周围

福大大架构师每日一题 2万+

基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)

基于TIA博途的一阶滞后滤波+中位值滤波+堆栈平均值滤波算法SCL语言程序(封装FB库)

Robot_PLC_HMI_Automation 2178

《交互媒体专题设计》之瘟疫模拟

《交互媒体专题设计》之瘟疫模拟 瘟疫模拟——前期调研 瘟疫模拟——相关技术介绍 瘟疫模拟——设计文档

Y优快云G的博客 383

12、控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示

控件使用之录入英文、阿拉伯数字删除增加功能及二维码显示1、用到的控件2、添加控件2.1、添加【文本录入】控件2.1、添加【文本显示】控件2.1、添加【QR 二维码】控件3、保存工程及生成文件4、下载文件 1、用到的控件   需要用的显示控件为【文本显示】控件和【QR二维码】控件,以及触控控件【文本录入】控件。 2、添加控件 2.1、添加【文本录入】控件   【文本录入】控件也叫【ASCI 文本录入】,是用来录入ASCI 字符,打开 DGUS 软件,点击【触控控件】—【文本录入】,用鼠标框选一个区域,即可在右

嵌入式羊圈 626

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

交互媒体专题设计——技术预演与方案设计

目录 1.小组成员介绍 2.第一阶段概括总结 3.第一阶段成果展示 一、小组成员介绍 二、概括总结 三、成果展示 下面是我们写的调研方案以及设计方案,点击可以跳转: 瘟疫建模前期调研之一——初等细胞自动机 瘟疫建模前期调研之二——生命游戏 瘟疫建模前期调研之三——微分方程和细胞自动机 ...

Program_dancing的博客 613

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【亲测免费】 探索生命的游戏:康威多人生命游戏

探索生命的游戏:康威多人生命游戏 在数字的世界里,每一点变化都能编织出生命的奇迹。今天,我们带您进入一个全新的交互体验——康威多人生命游戏(Conway's Multiplayer Game of Life),这不仅是一场关于生命的模拟,更是一次科技与协作的碰撞。 项目介绍 康威的单细胞自动机以其简单规则下的丰富动态性而闻名,而如今,lifecompetes.com 上的这个实时、持久且支持多人互...

gitblog_00174的博客 1111

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

康威生命游戏的学习

于实验楼上发现了康威生命游戏。转载生命游戏的实验内容。 康威生命游戏,又称康威生命棋,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。 它最初于1970年10月在《科学美国人》杂志上马丁·葛登能的“数学游戏”专栏出现。 规则每个细胞有两种状态-存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动。 人口过少:当周围低于2个(不包含2个)存活细胞时, 本单元活细胞死亡。 稳定:当周围

Gold_Experience的博客 1万+

生命游戏(Anylogic实现)

生命游戏模型是一个二维的正交网络细胞模型,每一个细胞只有两种状态: 活着或者死亡。每个细胞和它相邻的八个细胞相互影响,在每一步智能体移动时:  如果一个活着的细胞周围少于 2 个邻居,则因为孤单死亡  如果一个活着的细胞周围有 2~3 个邻居,则存活到下一轮迭代  如果一个活着的细胞周围多于 3 个邻居,则因为拥挤死亡  任意一个死去的细胞周围正好有 3 个活着的细胞时,则会复活

Ron_Shelway的博客 5705

基于python实现生命游戏

基于python实现生命游戏

万物皆可图 2561

生命游戏

生命游戏是最着名的二维元胞自动机,由John H. Conway发明,并于1970年10月开始在Martin Gardner的“科学美国人”专栏中推广。生命游戏最初是由生产的游戏(即连续世代产生)手持计数器,但在计算机上实现大大增加了探索模式的难易程度。 生命元胞自动机通过在二维网格上放...

chuchang0946的博客 3487

算法 | 生命游戏 (Game of Life)

本文将要介绍一个名为“生命游戏”的有趣算法并用C++进行简单的实现。本文的主要内容包括背景说明、算法原理、程序实现和结果分析。

Chen_Tianyang的博客 2万+

生命游戏-----算法题,思路讲解和优化。

题目:根据,简称为,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含m × n个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1即为(live),或0即为(dead)。下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。给你m x n网格面板board的当前状态,返回下一个状态。

呆咖啡的博客 1152

如何删除wordpress页面最下方的字?

在wordpress后台点击--外观--编辑,找到底部模板footer.php,然后注释这一段或者直接删除,当然,如果你想要修改为自己想要的内容也可以。 然后返回你的站点,页脚就成功地消除啦!

weixin_43844995的博客 1572

Conway生命游戏

生命游戏建立在9个方格的网格中,每个细胞有8个相邻细胞。 游戏有三个规则: 1. 如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。 2. 如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变; 3. 在其它情况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变) import ...

xu_fu_yong的专栏 1784
上一篇: 互动媒体技术——对十二个“一”的文艺创作作业进行文本分析、统计和可视化
下一篇: 瘟疫建模前期调研之一——初等细胞自动机
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值