生命游戏:三条规则一运行,方格里自己长出会动的图案

举报
deli007 发表于 2026/09/22 18:59:45 2026/09/22
【摘要】 生命游戏:三条规则一运行,方格里自己长出会动的图案

一个方格会不会活到下秒,只由它周围 8 个邻居决定。这三条规则滚起来,屏幕上会自己长出会滑行的图案。

运行效果

初始网格界面

这个 App 做什么

  • 自动演化的细胞网格:新生与死亡规则是经典的 Conway B3/S23,方格按局部邻居数推进。
  • 点击暂停与继续:拖动鼠标可直接添加活细胞,观察局部扰动如何扩散。
  • 常用控制一屏可见:随机种子、清空、单步、速度滑块都放在面板里。
  • 三种预设图案按钮:内含滑翔机等结构,一键开局看它能走出多远。
  • 界面深色美观:把规则标注清楚,适合边玩边理解细胞自动机。

为什么值得看

  • 它把复杂系统里“局部简单规则 + 大量个体”如何冒出全局模式,做成了一个可交互的视觉实验。
  • 生命游戏核心只有三条计数规则,却能自发出现滑翔机、振荡子等稳定结构,很适合讲涌现。
  • 演化、暂停和速度调节都顺手,打开页面几秒钟就能获得观察结论。

进入 AI 开发者空间

本文用码道 WebUI 版演示,不装任何本地软件,浏览器就能用。先打开:

https://devstation.developer.huaweicloud.com/aidevspace?utm_source=opcsfsq&utm_medium=wbwz

进入后选择「体验版」,首次使用会跳到华为云登录页,扫码登录一次,之后浏览器会话会复用;再按提示点击「同意」,让临时凭据自动配置并创建沙箱。

进入 AI 开发者空间主界面后,等左侧菜单加载出来,找到 CodeArts 并点击右侧的浏览器图标,打开码道 WebUI 对话窗口。

开通后有三种使用方式:WebUI(浏览器对话)、TUI(终端命令行)和桌面 IDE(IDE 插件)。本文用 WebUI 版演示。

准备环境:进入 CodeArts

进入 CodeArts:https://developer.huaweicloud.com/codeartsco.html?source=dmzntgwsf&sourcead=dmzntgwwbwz

浏览器打开 CodeArts 后,按提示开通体验版,再回到上一步的 AI 开发者空间进入码道 WebUI。

任务描述

在码道 WebUI 输入框粘贴以下需求,回车发送:

请在 /workspace/game-of-life 目录下做一个单文件网页应用 index.html:康威生命游戏。画布显示自动演化的细胞网格,点击可暂停/继续,可拖动添加活细胞,提供随机种子、清空、步进、速度滑块、三种预设图案按钮,界面深色美观,规则标注清楚。完成后用 python3 -m http.server 8080 --directory /workspace/game-of-life 启动并告诉我访问地址。

输入任务后的码道任务页

这轮码道具体做了什么

  • 在 /workspace/game-of-life 下创建单文件 index.html,把网格渲染、环形邻居、世代推进和控制面板都放进一个文件。
  • 写入后没有第三方依赖,随随机种子开局后用 python3 -m http.server 8080 启动并给出预览地址。
  • 画布和状态更新分开写,暂停、单步和连续演化互不干扰。

代码亮点

1. COUNT:数清楚每个细胞周围 8 个邻居

const COUNT = (g, r, c) => {
  let n = 0;
  for (let dr = -1; dr <= 1; dr++) {
    for (let dc = -1; dc <= 1; dc++) {
      if (dr === 0 && dc === 0) continue;
      const nr = (r + dr + ROWS) % ROWS;
      const nc = (c + dc + COLS) % COLS;
      n += g[nr][nc];
    }
  }
  return n;
};

这里的邻接采用取模回绕,让边界连到对面,形成环形世界。下一步只根据这个计数和当前的生死状态推进,规则本身不复杂,真正有趣的是它在迭代中长出来的图案。

验证与踩坑

  • 随机种子一按,网格立刻从零散的活细胞进入演化状态。
  • 滑翔机预设会沿斜对角平移,操作后能看到一个清晰的移动结构。

滑翔机结构

  • 速度滑块拉高后画面仍能保持顺滑,没有出现明显掉帧。

本地复现

这是单文件 index.html,没有第三方依赖。保存到本地后双击用浏览器打开,或起一个本地静态服务:

python3 -m http.server 8080 --directory codearts-conway-life

浏览器访问 http://127.0.0.1:8080 即可。

生成页面和截图已同步到公开 Demo Park 仓库:

使用码道体会

  • 这类规则简单的模拟,最怕把逻辑全塞进绘制循环。码道 WebUI 先写计数函数,再写世代推进和绘制,脉络比边想边堆容易复现。
  • 看到几个图案后会发现:规则有周期性,不是每盘都会持续热闹,这正是细胞自动机值得观察的地方。

总结

生命游戏把三句局部规则还原成可玩的自组织沙盘,滑翔机等结构是很好的入门观察对象。后续还能加有限世界、催化规则或彩色世代,但单文件版本已经够清楚。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。