Skip to content

Latest commit

 

History

History
267 lines (212 loc) · 6.14 KB

File metadata and controls

267 lines (212 loc) · 6.14 KB

🎮 坦克大战 - 终极版

这是一个功能完整、体验出色的经典坦克大战游戏,使用纯HTML5 Canvas和原生JavaScript构建。

✨ 特性

🎯 游戏核心功能

  • 流畅的坦克控制:WASD/方向键移动,空格键射击
  • 智能敌人AI:敌人会追踪玩家并智能攻击
  • 物理碰撞检测:精确的子弹与坦克碰撞
  • 关卡系统:5个独特设计的关卡,难度递增

🗺️ 地图元素

  • 砖墙:可以被子弹摧毁
  • 钢墙:坚不可摧的障碍物
  • 水域:装饰性地形
  • 基地:需要保护的核心目标

⚡ 道具系统

  • 🛡️ 护盾:抵挡一次伤害
  • ⚡ 加速:移动速度提升50%
  • 🔥 快速射击:射击冷却时间减半
  • ❤️ 生命:额外增加一条生命

🎨 视觉效果

  • 粒子爆炸:华丽的爆炸特效
  • 发光子弹:带有光晕和尾迹的子弹
  • 炮塔旋转:坦克炮塔根据方向旋转
  • 护盾效果:脉冲式护盾视觉反馈
  • 现代UI:渐变色、毛玻璃效果、流畅动画

🔊 音效系统

  • 射击音效
  • 爆炸音效
  • 拾取道具音效
  • 可切换静音

🏆 成就系统

  • 首次击杀:击杀第一个敌人
  • 神枪手:单局击杀10个敌人
  • 生存专家:不损失生命通过一关
  • 速度之王:60秒内完成一关
  • 不死之身:使用护盾抵挡5次攻击
  • 破坏者:摧毁100个砖块
  • 老兵:累计击杀100个敌人
  • 坦克大师:通过第5关
  • 收藏家:拾取20个道具
  • 完美战斗:获得10000分

📊 统计系统

  • 击杀数统计
  • 准确率计算
  • K/D比率
  • 最高分记录
  • 游戏时长追踪
  • 本地存储保存

🎮 操作说明

键盘控制

  • 移动W A S D 或 方向键
  • 射击空格键
  • 暂停PESC

游戏目标

  1. 摧毁所有敌方坦克
  2. 保护基地不被摧毁
  3. 尽可能获得高分
  4. 解锁所有成就

🏗️ 技术架构

文件结构

tank-battle.html                    # 主HTML文件
src/js/tank-game/
  ├── game-enhanced.js             # 游戏主引擎
  └── achievements.js              # 成就系统

核心类

GameMap

  • 关卡地图生成和管理
  • 5种不同的关卡布局
  • 瓦片系统(空地、砖墙、钢墙、水域、基地)
  • 碰撞检测

Tank

  • 玩家和敌人坦克
  • 移动和射击逻辑
  • 道具效果管理
  • AI系统(敌人)

Bullet

  • 子弹物理
  • 碰撞检测
  • 视觉效果

PowerUp

  • 道具生成和拾取
  • 效果持续时间
  • 闪烁动画

Particle

  • 粒子系统
  • 爆炸特效
  • 物理模拟

TankGame

  • 主游戏循环
  • 游戏状态管理
  • 关卡进度
  • 分数系统

设计模式

  • 组件化设计:每个游戏对象都是独立的类
  • 事件驱动:使用回调函数更新UI
  • 状态管理:集中管理游戏状态
  • 工厂模式:地图和关卡生成

🎨 样式特点

现代UI设计

  • 深色主题:护眼的暗色背景
  • 渐变色:丰富的颜色过渡
  • 毛玻璃效果:backdrop-filter模糊
  • 流畅动画:CSS transitions和animations
  • 响应式布局:适配各种屏幕尺寸

配色方案

  • 主背景:#0a0e1a
  • 强调色:#ff6b35 / #f7931e
  • 成功色:#4ecdc4
  • 危险色:#ff3864
  • 文本色:#ffffff / #a0aec0

🚀 性能优化

渲染优化

  • 使用 requestAnimationFrame 实现流畅动画
  • 固定时间步长物理更新
  • Canvas状态保存和恢复
  • 只绘制可见对象

内存管理

  • 对象池模式(可扩展)
  • 及时清理死亡对象
  • 事件监听器正确移除

碰撞检测

  • AABB(轴对齐包围盒)检测
  • 分层碰撞检查
  • 空间分区(可扩展)

🎯 游戏平衡

难度曲线

  • 关卡1:简单布局,熟悉操作
  • 关卡2:迷宫式,考验走位
  • 关卡3:堡垒式,需要策略
  • 关卡4:河流地形,限制移动
  • 关卡5:混乱战场,终极挑战

分数系统

  • 击杀敌人:+100分
  • 完成关卡:+1000分
  • 基地被毁:-500分

敌人设置

  • 每关20个敌人
  • 同时最多4个敌人在场
  • 每3秒生成一个新敌人
  • 15%概率掉落道具

🔧 可扩展性

轻松添加新功能

  1. 新道具类型:在PowerUp类中添加
  2. 新地图:在GameMap中添加generateLevel方法
  3. 新敌人类型:扩展Tank类
  4. 新武器:创建新的子弹类型
  5. 新成就:在AchievementManager中定义

配置化设计

所有游戏参数都在 CONFIG 对象中定义,便于调整:

  • 坦克速度
  • 射击冷却
  • 敌人数量
  • 道具效果
  • 粒子参数

📱 浏览器兼容性

支持的浏览器

  • ✅ Chrome 90+
  • ✅ Firefox 88+
  • ✅ Safari 14+
  • ✅ Edge 90+

需要的API

  • Canvas 2D Context
  • Web Audio API
  • LocalStorage
  • RequestAnimationFrame
  • ES6+ (类、箭头函数、模板字符串等)

🎓 代码质量

最佳实践

  • ✅ 模块化代码结构
  • ✅ 清晰的命名约定
  • ✅ 详细的代码注释
  • ✅ 一致的代码风格
  • ✅ 错误处理
  • ✅ 性能考虑

可维护性

  • 单一职责原则
  • 低耦合高内聚
  • 易于测试的设计
  • 文档完善

🐛 已知问题

当前版本没有已知的严重bug,但有一些可以改进的地方:

  • 敌人AI可以更智能(A*寻路)
  • 可以添加更多音效
  • 可以添加更多粒子效果
  • 移动端触摸控制

📝 更新日志

v1.0.0 (2025-10-17)

  • ✨ 完整的游戏核心功能
  • ✨ 5个精心设计的关卡
  • ✨ 道具系统(4种道具)
  • ✨ 粒子爆炸效果
  • ✨ 音效系统
  • ✨ 成就系统(10个成就)
  • ✨ 统计追踪
  • ✨ 本地存储
  • ✨ 现代UI设计
  • ✨ 响应式布局

🤝 贡献

这是DemoCodex项目的一部分,遵循项目的协作指南:

  • 保持代码模块化
  • 使用语义化HTML
  • CSS使用BEM命名
  • JavaScript保持单一职责
  • 支持键盘操作
  • 考虑可访问性

📄 许可证

MIT License - 自由使用和修改

🎉 致谢

灵感来源于经典的FC坦克大战游戏,使用现代Web技术重新打造。


享受游戏!祝你玩得开心! 🎮✨