春节合成闯关 是一款基于 HTML5 Canvas 和 原生 JavaScript 开发的横版合成类竞技游戏。玩家操控主角小马,在富有春节氛围的场景中通过碰撞同等级或低等级的马匹进行俘获与进化,最终组建强大的马队,击退年兽,保卫村庄。
本项目采用现代游戏开发架构(ECS),在保证代码高度解耦的同时,实现了极高的运行效率和扩展性。
项目核心逻辑采用 ECS (Entity Component System) 架构,实现了数据与逻辑的彻底分离。
Transform, Physics, Health, Sprite, AI, Collision。AISystem: 处理敌人巡逻与追逐逻辑。MovementSystem: 负责物理位移、边界检查。CollisionSystem: 基于空间索引的快速碰撞检测。RenderSystem: 处理批量渲染。ParticleSystem: 管理粒子特效。index.html 即可运行。为了获得最佳开发体验(如自动刷新、路径解析),建议使用以下工具之一:
python -m http.server 8000。npx serve .。核心配置文件位于 constants.js。
| 参数名 | 说明 | 默认值 |
|---|---|---|
PLAYER_SPEED | 玩家基础移动速度 | 200 |
ENEMY_SPEED | 普通敌人移动速度 | 100 |
SPAWN_INTERVAL | 敌人生成基础间隔 (ms) | 2000 |
MAX_ENEMIES | 同屏最大敌人数量 | 15 |
NIAN_MAX_HP | 年兽最大生命值 | 12 |
RADIUS_PLAYER | 玩家碰撞半径 | 25 |
ATLAS_SIZE | 纹理图集尺寸 | 2048 |
spring-festival-game/ ├── index.html # 游戏入口,UI 结构定义 ├── style.css # 游戏界面样式与动画 ├── js/ │ ├── ecs.js # ECS 核心框架类定义 │ ├── ecs_systems.js # 所有的 ECS 系统实现 (AI, Render, etc.) │ ├── entities.js # 组件定义与实体工厂 (Pony, Nian, Item) │ ├── assets.js # 资源加载器与纹理图集生成逻辑 │ ├── constants.js # 全局平衡参数配置 │ ├── game.js # 游戏核心类,管理生命周期与系统调度 │ ├── level_config.js # 11 个关卡的详细数据配置 │ ├── spatial_grid.js # 空间索引优化算法 │ ├── item_system.js # 道具触发逻辑与策略 │ ├── event_system.js # 天气系统与动态难度调整 │ ├── profiler.js # 性能剖析 HUD 工具 │ ├── save_manager.js # 存档与排行榜管理 │ ├── tests.js # 自动化测试套件 │ └── main.js # 脚本启动点
startGame(mode): 启动指定模式(STORY/ENDLESS)。addEntity(entity): 向 ECS 系统注册实体。removeEntity(entity): 销毁实体并从系统中注销。handleCollision(other): 全局碰撞分发器。init(): 初始化资源并生成图集。get(key): 获取指定资源的 Canvas 缓存。getUV(key): 获取资源在图集中的 UV 坐标。本项目内置了自动化测试套件 tests.js。
[PASS] 或 [FAIL] 日志。System。update 或 draw 循环中进行 DOM 操作或创建新对象。Component 结尾,系统类以 System 结尾。Q: 游戏加载后黑屏或资源缺失?
A: 请确保浏览器支持 HTML5 Canvas 且未开启极高强度的隐私拦截脚本。查看控制台输出,确认 AssetManager 是否初始化成功。
Q: 如何重置存档?
A: 在游戏主菜单点击“重置进度”按钮,或在控制台运行 localStorage.clear(); location.reload();。
Q: 帧率不稳或卡顿?
A: 开启左上角的 Profiler 查看 Jitter 值。如果实体数量过多,建议在 constants.js 中调低 MAX_ENEMIES。
本项目遵循 MIT License。
Copyright (c) 2021-2026 合肥市小桂子网络科技有限公司