预览此【ONE HTML】执行效果:ant_colony.html
这是一个基于 单HTML页面 的 蚂蚁殖民地模拟器,由 Christopher Powroznik 开发,用于参加 One HTML Page Challenge。
以下是其核心内容整理:
核心概念
- 模拟蚂蚁在二维网格中挖掘隧道、寻找食物、繁殖后代。
- 使用纯 HTML + CSS + JavaScript 实现,无需外部依赖。
- 仅支持 Chrome 桌面版,Safari 和 iOS 不支持。
世界结构
- 网格系统:每个格子可以是:
- 未挖掘(
░) - 已挖掘(空白或隧道)
- 有物体(蚂蚁、食物、女王)
- 未挖掘(
- 使用
grid和objects两个对象存储地图和实体。
实体类型
| 类型 | 字母 | 功能 |
|---|---|---|
| 女王 Q | Q | 每隔一定时间生成新蚂蚁或女王 |
| 蚂蚁 A | A | 挖掘隧道、寻找食物、移动 |
| 食物 | 9~1 | 可被蚂蚁消耗,耗尽后消失 |
⚙️ 行为机制
蚂蚁行为:
- 每 tick 移动一次,优先寻找食物。
- 饥饿值下降,耗尽则死亡并变成食物。
- 使用视线扫描(sight)决定移动方向。
女王行为:
- 每 30 tick 尝试繁殖一次:
- 有 2% 概率生成新女王
- 否则生成新蚂蚁
统计信息
- 实时显示:
- 女王数、蚂蚁数、食物数
- 已探索格子数、运行时间(tick)
- 食物掉落概率、女王出生概率、繁殖间隔
关键参数
| 参数名 | 值 | 含义 |
|---|---|---|
foodChance | 0.03 | 挖掘时生成食物的概率 |
queenChance | 0.02 | 女王繁殖出新女王的概率 |
birthTime | 30 | 女王繁殖间隔(tick) |
tickTime | 50ms | 每逻辑帧间隔 |
drawTime | 50ms | 每渲染帧间隔 |
移动与视线系统
- 蚂蚁/女王使用
sight()函数扫描四个方向:- 返回每个方向最先遇到的物体类型和距离
- 使用
priorityDirection()决定移动方向:- 优先朝向食物或空白区域
- 可设置距离惩罚(distanceNegative)
技术亮点
- 使用类(
WorldObject,Bug,Ant,Queen,Food)封装实体行为 - 使用
coord(x, y)作为键值存储地图和实体 - 使用
setInterval+requestAnimationFrame实现逻辑与渲染分离 - 使用 Unicode 字符绘制隧道结构(如
╣║╗╝╚╔╩╦╠═╬)
✅ 总结一句话
这是一个用 单HTML文件 实现的 自组织蚂蚁殖民地模拟器,展示了如何通过简单规则生成复杂行为,适合用于学习 面向对象设计、状态管理、简单AI行为模型。





京公网安备 11010502044969号