AI五子棋
轮到你了(黑子)

点击棋盘落子,与AI对战五子棋!

黑子先手,先连成五子者获胜。

AI五子棋是一款智能对战游戏,玩家执黑子,AI执白子。游戏采用经典的15×15棋盘,支持鼠标点击落子,具有智能AI对手,能够进行策略性对战。游戏包含胜负判定、平局检测等功能,适合休闲娱乐和策略思维训练。

算法架构

我们把AI能力分成两类职责:

  • 搜索(Search):在若干可能走法中寻找最优走子 —— 用Negamax + Alpha-Beta、迭代加深、时间限制等实现
  • 评估(Evaluation):当搜索走到深度底或叶节点时,为当前局面打分 —— 用棋型识别(活四/冲四/活三/眠三……)和位置权重

核心算法

1. Negamax算法

Negamax是Minimax的变体,利用对称性把"最大化对我分数 = 最小化对方分数"的关系合并成统一函数,代码更简洁,易与Alpha-Beta、置换表配合。

2. Alpha-Beta剪枝

在Negamax上加上下界(alpha)和上界(beta),当某个分支不能影响根节点决策时就剪掉,在合理的走法排序下能把搜索树大小从O(b^d)大幅降为O(b^{d/2})。

3. 迭代加深

从浅到深逐层运行搜索(深度1,2,3...),每层都保存当前最佳走法。能在任何时间点都有一个可用解,配合时间限制很重要。

4. 候选走法生成

只考虑靠近已有棋子的空位(搜索半径=2),或在空盘只考虑中心。五子棋的合理走子大多发生在已有棋子附近,过滤孤立点能大幅降低分支因子。

5. 立即获胜/阻挡检测

在正式深搜前先检测"落子立刻获胜"或"必须阻挡对手的立刻获胜",若存在直接走法就优先执行,避免浪费搜索预算。

6. 评估函数

识别常见棋型并赋权:五连(1e8)、活四(1e7)、冲四(1e6)、活三(1e5)、眠三(1e4)、活二(1e3)。对敌方棋型赋负分,防守权重略微放大,促使AI在对手有威胁时更偏向阻挡。

7. 置换表 + Zobrist哈希

为棋盘中每个位置和每种棋子分配随机数,棋局哈希是对这些随机数做XOR的结果。用哈希把已评估局面和深度/分值缓存起来,节省大量重复计算。

8. 走法排序

Alpha-Beta的效率极度依赖先搜索到"好走法"。把"立即获胜走法"放在最前面,先按静态评估对候选走法排序,越早找到高分走法,越多后续分支被剪掉。

工作流程

  1. 用户落子 → 检查胜负/平局
  2. 切换AI:先查找我方必胜 → 若无,再查找必堵 → 若都无,进入深搜
  3. 使用迭代加深(depth = 1..maxDepth),每层调用negamax(带alpha-beta、置换表、时间检测)
  4. 搜索中若超时则中断,返回当前bestMove
  5. 应用走子,更新状态,UI更新

技术特点:搜索深度6层,时间限制600ms,搜索半径2格,支持异步计算和超时中断,确保AI既能快速响应又具备足够的策略深度。

源码地址: GitHub - AI五子棋组件源码
欢迎查看完整实现,了解算法细节和代码结构