这是一个基于 Dash 和 feffery-leaflet-components (FLC) 构建的交互式元胞自动机(Cellular Automata)Web 应用。本项目主要实现了经典的康威生命游戏 (Conway's Game of Life),并在 Leaflet 地图上提供了直观的网格可视化与动态控制能力。
- 交互式地图网格:基于 LeafletMap 渲染,支持无缝缩放、拖拽与点击交互。
- 自定义网格参数:可通过滑块自由调节网格的行数(Rows)和列数(Columns)。
- 随机生成算法:支持自定义随机种子与随机密度,一键生成初始生命图样。
- 自动演化引擎:内置基于
agentpy的环形 (Torus) 生命周期计算引擎,精确遵循 Moore 邻居规则。 - 动态定时器控制:支持自定义每次迭代的时间间隔,可随时开始或暂停模拟。
- 状态智能同步:配备抽屉式开发调试面板,实时同步展示地图对应的 0/1 原始矩阵数据,方便调试与观测。
- 智能终止检测:当勾选“自动停止”时,若地图上的细胞全部死亡,将自动停止定时器并弹窗提示演化步数。
- 本地缓存机制:支持使用
dcc.Store在本地缓存地图视角状态与侧边栏控制面板参数,刷新不丢失。 - 高可维护性架构:UI 布局组件化拆分,并配备统一的全局配置模块(
configs.py),易于扩展和二次开发。
- Python >= 3.12
- Dash / dcc / html:构建核心 Web 交互界面与回调路由。
- feffery-antd-components (FAC):提供现代化、高颜值的控制面板与表单组件。
- feffery-leaflet-components (FLC):驱动底层的高性能交互式 2D 地图渲染。
- agentpy:强大的 Python 代理模型框架,驱动底层元胞自动机状态计算。
git clone <repository_url>
cd flc-ca-agent本项目推荐使用 uv 进行快速的环境管理与依赖安装。
如果您已安装 uv,只需在项目根目录下运行:
uv sync这将会自动解析 pyproject.toml,创建虚拟环境(.venv),并极速安装所有必要的依赖。
如果尚未安装 uv,可以通过以下命令快速安装:
- Windows (PowerShell):
irm https://astral.sh/uv/install.ps1 | iex - macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
# 1. 创建环境 (Python >= 3.12)
conda create -n flc-ca python=3.12
# 2. 激活环境
conda activate flc-ca
# 3. 安装依赖 (读取 pyproject.toml)
pip install .# 1. 创建虚拟环境
python -m venv .venv
# 2. 激活虚拟环境
# Windows:
.venv\Scripts\activate
# macOS/Linux:
source .venv/bin/activate
# 3. 安装依赖
pip install .如果您使用 uv:
uv run main.py如果您使用 Conda 或 venv(请确保环境已激活):
python main.py启动后,在浏览器中访问默认地址:http://127.0.0.1:8050 即可开始体验。
- 设置画布:在左侧面板滑动控制杆,设置您期望的网格大小 (例如 20x20)。
- 初始化生命:
- 方式一:直接在地图上点击透明方块,手动点亮“存活细胞”(红色)。
- 方式二:在左侧设定“随机密度”并点击生成网格,系统将批量生成随机初始态。
- 控制演化:
- 设置您期望的演化“时间间隔”(例如 0.5s)。
- 点击开始模拟,观察生命的繁衍与消亡。
- 随时点击暂停模拟中断演化,并可再次手动点击地图更改当前细胞状态。
- 复位:点击右上角“重置地图状态”或左侧“重置参数”恢复到最初视图。
flc-ca-agent/
├── assets/ # 存放 CSS 样式文件
│ └── style.css # 定义 hover 与基础样式
├── components/ # 拆分的 UI 组件渲染逻辑
│ ├── axes.py # 坐标轴与原点绘制
│ ├── grid.py # 网格矩阵绘制
│ ├── panel.py # 左侧参数控制面板
│ ├── map_panel.py # 核心交互地图面板
│ ├── debug_panel.py # 右侧抽屉式开发调试面板
│ └── __init__.py # 组件导出统一入口
├── callbacks/ # Dash 回调路由注册
│ ├── grid_callbacks.py # 核心网格生成、交互、步数状态计算
│ ├── map_callbacks.py # 地图视角缓存与恢复
│ ├── panel_callbacks.py # 左侧面板参数同步与重置
│ ├── simulation_callbacks.py # 启停定时器与自动停止弹窗
│ └── __init__.py # 回调注册统一入口
├── core/ # 核心算法引擎
│ └── game_of_life.py # 基于 agentpy 的生命游戏模型实现
├── configs.py # 全局参数与状态配置
└── main.py # 应用程序入口,组合 Layout 组件
MIT License