一个纯原生 HTML + CSS + JavaScript + Canvas 实现的原创小型网页塔防游戏。 没有框架、没有后端、没有外部图片/音频资源——所有画面用 Canvas 几何图形程序化绘制,所有音效用 Web Audio API 现场合成。
v2 版本:三大关卡 + 无尽模式 + 星级评价 + 第 4 种防御塔,进度自动保存在本地浏览器。
- 敌人从山洞出生,沿固定小路走向你的蘑菇城堡。
- 用金币在发光的建造点上修建防御塔;塔会自动攻击射程内的敌人(优先打离基地最近的)。
- 击败敌人、清完一波都有金币奖励;金币用来建新塔或升级已有的塔。
- 敌人抵达城堡会扣基地生命,生命归零即失败;守住一关全部 10 波即胜利。
- 星级评价:通关时剩余生命 ≥90% 得 3 星、≥50% 得 2 星、通关得 1 星;星级和解锁进度自动保存。
| 塔 | 价格 | 特点 |
|---|---|---|
| 🌰 松果炮塔 | 50 | 便宜、射速快,前期主力 |
| ❄️ 霜花塔 | 80 | 伤害低,但命中后让敌人减速(冰冻特效) |
| 💥 星晶重炮 | 100 | 攻速慢、射程远,炮弹范围爆炸 |
| ⚡ 雷霆塔 | 120 | 瞬发连锁闪电,跳跃打击 3~5 个敌人,克群体 |
每种塔都可升级 3 级,可随时按 7 折出售。
- 🍄 蘑菇兵:血量低、速度普通
- 🐝 疾风蜂:血量低、速度快(会成群突袭!)
- 🪨 岩壳怪:血量很高、速度慢、扣 2 点生命
- 🟣 蘑菇母怪:死亡时裂变成 2 只小蘑菇,要留火力补刀
- 👑 蘑菇王(Boss):血量极高,抵达基地扣 10 点生命
| 关卡 | 主题 | 特色 |
|---|---|---|
| 第一关 · 翠绿草原 | 经典草原(默认解锁) | 10 波标准进攻,学习基本运营 |
| 第二关 · 金秋枫林 | 金秋主题 + 蛇形长路 | 引入蘑菇母怪,疾风蜂更多 |
| 第三关 · 寒霜雪原 | 雪原主题(18 点生命) | 敌人强度上调、波次更密、终波重兵压阵 |
| ⚔️ 无尽模式 | 复用草原地图 | 程序生成波次,每 5 波一个 Boss,越打越强,冲击最高纪录 |
- 解锁规则:通关当前关卡解锁下一关;通关任意一关解锁无尽模式。
- 进度保存在
localStorage(键ttd_progress_v1),清除浏览器数据即重置。
方式一(最简单):直接双击 index.html,用 Chrome / Edge / Firefox 打开即可。
本项目不请求任何外部资源,file:// 协议下可完整运行。
方式二(本地服务器,可选):
python -m http.server 8080
# 然后浏览器打开 http://localhost:8080| 操作 | 说明 |
|---|---|
点击右侧塔卡(或按 1 2 3 4) |
进入建造模式 |
| 点击地图上发光的建造点 | 建造该塔(金币不足会有提示) |
右键 / Esc |
取消建造模式或取消选择 |
| 点击已建成的塔 | 信息面板:属性 / 升级 / 出售,地图上显示射程 |
「开始第 N 波」按钮 / N |
手动开启下一波,节奏由你掌控 |
空格 / 暂停按钮 |
暂停 / 继续(切走标签页自动暂停) |
| ⏩ ×2 | 二倍速 |
U / X |
升级 / 出售选中的塔 |
| ⌂ 选关 | 返回选关界面(两步确认防误触) |
tiny-tower-defense/
├── index.html 页面骨架:顶栏、画布、选关/结算界面、侧边栏
├── style.css 柔和童话风 UI 样式与动画
├── levels.js 关卡数据层:主题色板、3 张地图、波次表、无尽生成器
├── game.js 引擎与玩法逻辑(无依赖)
└── README.md
game.js 内部按模块划分:工具与配置 → 音效系统 → 实体类(Enemy / Tower / Projectile / LightningBeam / Particle / FloatText)→ WaveManager(静态表 / 生成器双来源)→ 主题化地图渲染 → ProgressStore(localStorage 进度)→ Game → UI → 启动。
想扩展?
- 加一张新地图:在
levels.js的LEVELS里照抄一份关卡对象,改路径拐点、建造点、装饰和波次表即可,引擎零改动。 - 加一种模式:给关卡对象设
mode与自定义波次来源(参考makeEndlessWave),WaveManager自动适配。 - 加一种塔 / 敌人:在
TOWER_TYPES/ENEMY_TYPES里加一项定义,卡片、面板、预览图标自动生成。
- 敌人血量 = 基础值 × 波次曲线
1 + 0.18×(波数-1)(第 6/9 波跳升)× 关卡强度系数(1.0 / 1.1 / 1.25)。 - 赏金每波 +4%,清波奖励
40 + 10×波数;出售返还 70%。 - 无尽模式 Boss 血量随波数继续增长(每波 +50%,第 10 波起),普通波每 5 波一个 Boss。
- 星级阈值:第一/二关 3 星需 ≥90% 生命,第三关 ≥85%。
- 更多地图与主题(沙滩、熔岩、夜幕)、路线分支地图
- 新模式:限时守卫、镜像竞速、每日挑战(数据层已预留扩展点)
- 塔的特殊词条、英雄单位与主动技能
- 成就系统与云存档
- 图片素材替换程序化绘制
祝守城愉快!🍄🏰