一个基于React和Canvas的经典雪人兄弟(Snow Bros)复刻游戏,支持本地双人和在线联机。
- 高度还原经典玩法: 雪花冰冻敌人、推雪球连击等经典机制
- 1-3关卡设计: 逐步增加难度,不同类型的敌人
- 本地双人游戏: 支持两人同屏游玩
- 在线联机: 通过房间号与朋友联机游戏
- 像素风格: 复古像素艺术风格
cd snow-brothers
npm installnpm start游戏将在 http://localhost:3000 运行
npm run server服务器将在 http://localhost:3001 运行
npm run dev- 移动: WASD 或 方向键
- 跳跃: J 或 空格
- 攻击: K 或 L
- 移动: 小键盘 4/6/8/5
- 跳跃: 小键盘 0 或 .
- 攻击: 小键盘 Del 或 ,
- 暂停: ESC
- 重新开始: Enter (游戏结束后)
- 冰冻敌人: 使用雪花攻击敌人,连续攻击4次使敌人完全变成雪球
- 推雪球: 走到雪球旁边推动它
- 连击加分: 滚动的雪球撞击其他敌人可以获得连击奖励
- 收集道具: 击败敌人会掉落各种道具
- 红色药水: 加速
- 蓝色药水: 增强雪花
- 黄色药水: 无敌
- 寿司/钱袋: 加分
- 心: 加命
- 红色敌人: 基础类型,只会左右移动
- 蓝色敌人: 会跳跃,追踪玩家
- 绿色敌人: 更耐打,需要冰冻更长时间
- 5个红色敌人
- 简单平台布局
- 入门难度
- 红色和蓝色敌人混合
- 更复杂的平台结构
- 中等难度
- 引入绿色敌人
- 更多平台层次
- 较高难度
- 前端: React 19 + TypeScript
- 渲染: HTML5 Canvas
- 联机: Socket.io
- 数据库: MongoDB (可选)
snow-brothers/
├── src/
│ ├── components/ # React组件
│ │ ├── Game.tsx # 主游戏组件
│ │ ├── GameCanvas.tsx # Canvas渲染
│ │ └── MainMenu.tsx # 主菜单
│ ├── game/ # 游戏核心逻辑
│ │ ├── GameEngine.ts # 游戏引擎
│ │ ├── entities/ # 游戏实体
│ │ ├── systems/ # 物理系统
│ │ └── levels/ # 关卡定义
│ ├── hooks/ # React Hooks
│ └── types/ # TypeScript类型
├── server/ # 后端服务器
│ └── index.js # Socket.io服务器
└── package.json
如果需要保存游戏记录和排行榜,请确保MongoDB已启动:
mongod服务器会自动连接到 mongodb://localhost:27017/snowbrothers
在 src/game/levels/levels.ts 中添加新关卡配置:
export const level4: Level = {
id: 4,
name: 'ROUND 4',
backgroundColor: '#...',
platforms: [...],
spawnPoints: [...],
playerSpawns: [...],
enemies: [...]
};- 在
src/types/game.ts中添加枚举 - 在
src/game/entities/Enemy.ts中添加配置 - 在
src/components/GameCanvas.tsx中添加渲染逻辑
MIT