Skip to content

About

Little Guardian - a tiny original tower-defense game built with vanilla HTML/CSS/JS Canvas. 3 levels + endless mode, zero dependencies.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

小小守卫 · Tiny Tower Defense 🌰

一个纯原生 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%。

后续可以扩展的方向

  • 更多地图与主题(沙滩、熔岩、夜幕)、路线分支地图
  • 新模式:限时守卫、镜像竞速、每日挑战(数据层已预留扩展点)
  • 塔的特殊词条、英雄单位与主动技能
  • 成就系统与云存档
  • 图片素材替换程序化绘制

祝守城愉快!🍄🏰

About

Little Guardian - a tiny original tower-defense game built with vanilla HTML/CSS/JS Canvas. 3 levels + endless mode, zero dependencies.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages