Skip to content

EndlessPixel/chinese-chess-js

Repository files navigation

chinese-chess-js

License Language Platform

纯前端实现的中国象棋人机对战游戏,无需后端依赖,开箱即用,支持完整的象棋规则和智能AI对战。

🌟 功能特性

  • 🎮 完整象棋规则:支持帅/将、士/仕、相/象、马/馬、车/車、炮、兵/卒的全部走子规则,包含将帅不照面、马腿/象眼阻挡、兵卒过河横向移动等细节
  • 🤖 智能AI:AI具备基础的吃子策略、位置评估、防御意识,优先攻击对方老将、保护己方核心棋子
  • 🕹️ 友好交互:支持棋子选中高亮、可移动位置提示、吃子动画、回合计时
  • ✨ 实用功能:悔棋、重新开始、胜负判定弹窗、移动端适配
  • 🎨 视觉体验:仿真实木棋盘样式、楚河汉界分隔、棋子光影效果

🚀 快速开始

1. 克隆项目

git clone https://github.com/EndlessPixel/chinese-chess-js.git
cd chinese-chess-js

2. 运行游戏

直接打开 index.html 文件即可运行,无需额外依赖(推荐使用 Chrome/Firefox/Edge 现代浏览器)。

3. 游戏操作

  • 点击己方棋子选中,再次点击目标位置移动(或点击空白处定位目标位置)
  • 点击「显示可移动位置」可查看当前选中棋子的所有合法走法
  • 「悔棋」可回退最近两步(玩家+AI各一步)
  • 「重新开始」可重置棋盘和游戏状态

♟️ 核心规则实现

  • 帅/将:仅能在九宫格内横竖走一步,不可照面
  • 士/仕:仅能在九宫格内斜走一步
  • 相/象:斜走两步,不可过河,象眼有子则无法移动
  • 马/馬:走日字,马腿有子则无法移动
  • 车/車:横竖无阻挡移动任意步数
  • :横竖无阻挡移动任意步数,吃子需隔一子
  • 兵/卒:未过河仅能前进,过河后可横向移动

🛠️ 自定义扩展

1. 调整AI难度

修改 makeAIMove 中的价值评估逻辑:

  • 调整 calculatePositionValue 中的位置加分权重
  • 修改 calculateDefenseValue 中的防御加分权重
  • 调整AI可选最佳移动数量(默认前3个随机选)

2. 自定义样式

修改 css 文件夹中的CSS样式:

  • 调整棋盘颜色(.board 背景)
  • 调整棋子样式(.piece 背景/阴影/字体)
  • 调整响应式尺寸(@media 适配规则)

3. 新增功能

  • 双人对战模式:注释掉 switchTurn 中的AI触发逻辑
  • 走子记录:扩展 moveHistory 状态,添加走子记录UI
  • 难度选择:新增AI难度等级,调整思考深度/价值评估权重

📄 许可证

本项目基于 MIT 许可证开源 - 详见 LICENSE 文件。

🙏 致谢

  • 中国象棋规则参考:中国象棋协会官方规则
  • 界面设计参考:经典象棋游戏视觉风格

### 总结
1. **核心修复**:`checkWin` 改为从 `gameState.pieces` 取值+返回具体获胜方,`attemptMove` 按获胜方判定输赢,彻底解决黑方失灵问题;
2. **README亮点**:
   - 清晰的功能特性+快速开始步骤,方便使用者上手;
   - 完整的项目结构说明,适配你拆分后的模块化代码;
   - 提供自定义扩展指南(AI难度/样式/功能),提升项目实用性;
   - 规范的开源许可证+标签,符合GitHub项目发布标准。

About

纯前端实现的中国象棋人机对战游戏,支持完整象棋规则、智能 AI、悔棋 / 重新开始、走子提示等功能,适配移动端 / 桌面端

Topics

Resources

License

Stars

Watchers

Forks

Contributors