<!-- title: 《gobang》一盘五子棋，半本AI教科书 -->
<!-- domain: games -->
<!-- repo: lihongxun945/gobang -->

# 《gobang》一盘五子棋，半本AI教科书

想做一个能变现的小游戏，最稳的品类不是什么新颖玩法，而是那种**规则零学习成本、中国人DNA里自带操作系统的东西**。五子棋就是这种品类里的天花板——没有之一。今天挖的这个仓库，就是一个中国开发者2016年写下的纯前端五子棋人机对战项目，代码量不大，但它把“一个游戏怎么靠算法上头”这件事讲得明明白白，以至于直到今天还有人拿着它当AI入门教材。据仓库页面，它至今仍在持续获得star——一个八年没大更新的棋盘，还在给后来者上课，这本身就是个信号。

## 仓库档案

| 项目 | 内容 |
|---|---|
| 仓库 | [lihongxun945/gobang](https://github.com/lihongxun945/gobang) |
| 是什么 | 纯前端五子棋人机对战，内置自研AI |
| ⭐Star | 千级（具体数字以仓库页面为准，老项目持续有人补星） |
| 语言 | JavaScript，无框架依赖，Canvas绘制 |
| License | 据仓库页面，MIT |
| 作者 | 个人开发者，中文README，作者同期发表的《用JS开发五子棋AI》系列博客至今仍被大量转载 |
| 状态 | 核心代码约2016-2017年完成，属于“停更但完全能玩”的类型 |
| 在线Demo | README曾提供在线试玩地址，可用性以仓库页面为准 |

先说清楚它的定位：这不是一个“仿商业游戏的开源复刻”，而是一个**从棋盘到AI全部手写的原创实现**。打开源码你会发现，整个项目没有引第三方游戏引擎，没有用任何棋类库，AI的每一步思考都摊在几个千行以内的JS文件里。对想入门游戏AI的个人开发者来说，这种“教科书式裸奔”反而是最值钱的形态——你抄得到每一个细节，而不是调一个黑盒API。

## 这游戏是什么

一句话：**15×15棋盘，你执黑白任意一色，和内置AI轮流落子，先连成五子者胜**。支持选择先后手、多档难度、悔棋。没有剧情、没有收集、没有充值入口，就是最纯粹的“下一盘”。

但你别被这个朴素的外表骗了。它的核心循环是一个设计得极其干净的“胜负心引擎”：

```mermaid
flowchart LR
    A[玩家落子] --> B[AI扫描全盘棋型打分]
    B --> C[极大极小搜索+剪枝]
    C --> D{AI算杀成功?}
    D -- 是 --> E[连续冲四/活三\nAI几步内终结]
    D -- 否 --> F[AI落子]
    E --> F
    F --> G{分出胜负?}
    G -- 否 --> A
    G -- 玩家赢 --> H[爽感反馈\n下一盘开更高难度]
    G -- AI赢 --> I[复盘不服\n我就差一手]
    H --> A
    I --> A
```

注意这个循环里最狠的一环：**“我就差一手”**。五子棋的胜负常常悬在一步之间，AI赢你的时候，你回头看棋盘，几乎总能找到那个“当时要是堵住就好了”的点。这种归因方式决定了玩家不会怪游戏太难，只会怪自己手潮——于是再来一局。这和《Antiyoy》里“占地越多越接近破产”的反直觉教训是同一个心理机制：**失败的锅甩回玩家自己头上，复盘成本又极低**。

一局棋3到5分钟，输赢都在“下一把能赢”的预期里，这是棋牌类游戏天生的上头结构，比任何奖励动画都好用。

## 为什么上头

拆开看，这盘五子棋踩中了五个成瘾机制，每一条都能直接搬到你自己的项目里：

**1. 零学习成本的即时进入。** 上头的前提是上手无门槛。五子棋规则一句话讲完，玩家点开页面三秒内就能落第一子。对比一下需要教程的roguelike或者需要理解的模拟经营，棋牌类的进入摩擦几乎是零。你在选题的时候就应该优先考虑这种“规则免费送”的品类——把开发预算全花在深度上，而不是新手引导上。

**2. 难度阶梯制造进度感。** 这个项目的AI分多个难度档位，底层对应的是搜索深度和评估精度的差异。玩家在低难度下赢了几盘，自然会去点高难度，然后在高难度下被虐，再退回中间档反复刷。**一个难度选择器，就是一个不花钱的成长系统**。很多个人开发者纠结“我的游戏没有进度系统怎么办”——棋牌类告诉你，进度感不需要经验条，难度表就是经验条。

**3. 算杀带来的“绝杀瞬间”。** 这个AI最出彩的地方是它有VCF（连续冲四取胜）的算杀逻辑——当AI发现自己有几步内连续冲四的杀路时，它会突然从“稳扎稳打”切换到“步步紧逼”，连续几手冲四活三，玩家眼睁睁看着局势崩掉却无解。这种“被绝杀”的体验反而强化上头：玩家记住了“AI原来会这么玩”，下次开局就带着防备和期待。**给游戏设计一两个“高光演出时刻”，比均匀的好体验更有记忆点**。

**4. 悔棋按钮的心理陷阱。** 仓库支持悔棋，这看似是小功能，实际上是留存利器。玩家走错一步时的第一冲动是撤销，而每一次悔棋都是一次“这局还能赢”的心理承诺——承诺越深，这局下得越久。放到变现视角：**免费悔棋次数就是天然的激励视频广告位**，这个我们在变现部分细说。

**5. 人机对抗消灭了社交压力。** 没有对手在线等、没有排位掉分、没有聊天框骂战。玩家可以在任何碎片时间开一局、关一局。对个人开发者来说这还有个隐藏福利：**人机对战不需要服务器**，纯前端就能跑，托管成本为零。

## 技术拆解

这是全篇最值得抄的部分。这个仓库的教学价值在于，它把一个“能赢人的棋类AI”拆成了五个可以独立复用的模块，每个模块都是面试和实战里高频出现的算法思想的落地版：

**模块一：棋型评分表（评估函数）。** AI先给棋盘上每一个空位打分，打分依据是“如果我落在这，能形成什么棋型”：五连最高分，活四次之，冲四、活三、眠三……逐级递减，双向棋型（同时形成两条威胁）额外加分。这是一张纯手写的启发式评分表，几十行代码，却是整个AI的价值观来源。**任何棋类游戏（黑白棋、四子棋、六贯棋、孔明棋）都可以套这套“棋型→分数”的建模范式**，换个评分表就是个新游戏AI。

**模块二：极大极小搜索 + Alpha-Beta剪枝。** AI考虑“我走这步后，对手会走对他最有利的回应，所以我要选那个最坏情况最不坏的步”。加上Alpha-Beta剪枝，把搜索树上不可能影响结论的分支直接砍掉。这两个算法是所有棋类AI的地基，而这个仓库用最少的代码量演示了它们怎么和前面的评分函数咬合。

**模块三：启发式候选点裁剪。** 15×15棋盘有225个空位，全搜一遍天文数字。它的做法是只考虑**已有棋子周围的空位**作为候选落点，一下子把候选从两百多个压到一二十个。这是搜索类AI最实用的一招性能 trick，本质是“人类的注意力也只看棋子附近”。任何“在大空间里选点”的游戏（战棋、放置地图、扫雷变体）都能借用这个思路。

**模块四：算杀（VCF）。** 前面提到的高光时刻的技术实现：单独写一条搜索路径，只追冲四和活三这类强制性威胁，深度可以开得比常规搜索深得多，用来发现“连杀取胜”的机会。这个“宽搜索+窄搜索分层”的架构思想，在路径规划、游戏关卡验证里都是通用武器。

**模块五：思考性能优化。** 让AI“显得聪明”的另一半是让它**出招快**。仓库里做了不少工程优化来保证中盘复杂局面下AI也能秒级应答——棋类游戏玩家对等待的容忍度极低，超过两三秒的“对方思考中”就是掉留存。这个教训对所有回合制游戏通用：**AI的智商可以慢慢调，响应速度第一天就要做好**。

架构上，项目把AI逻辑和UI渲染完全分离：棋盘是Canvas，输入是鼠标事件，AI是一个纯函数式的“给定棋盘返回落点”的模块。这意味着**你可以把它的AI模块整个抽出来，接进任何前端框架、小程序、甚至Node.js后端**——这正是“小而美仓库”最大的复用价值。

## 变现观察

先说实话：**这个仓库本身没有任何变现痕迹**——没有广告SDK、没有付费入口、没有赞助链接。它是纯粹的“作品+教学”型开源，作者的回报是社区影响力和博客传播。但这不妨碍它指出的赛道极其肥沃，因为五子棋恰恰是**个人开发者变现跑通案例最密集的品类之一**：

- **微信小游戏 + 激励视频**：五子棋类小游戏长期是微信休闲游戏榜的常客，标准变现组合是“免费悔棋2次/局 + 看广告多悔1次 + 看广告换先手 + 看广告解锁新棋盘皮肤”。用户单价不高但量大，而且棋牌用户留存远超一般休闲品类。
- **App Store / 安卓商店 + 内购去广告**：老路子但依然有效，“6元去广告 + 残局关卡包”是最常见的组合。
- **网页版 + 广告位**：2048已经证明过，一个纯前端休闲游戏挂联盟广告就能覆盖托管成本。五子棋的会话时长更长，广告展示机会更多。
- **残局/闯关付费点**：把“连珠残局题库”做成100关的闯关模式，前30关免费，后面看广告或一次性买断——这是把棋类AI的教学价值直接商品化。

这个赛道还有一个被低估的优势：**素材零版权风险**。棋盘和棋子用Canvas画就行，没有美术版权、音乐版权的坑，个人开发者的法律成本趋近于零。对比那些想复刻热门品类却卡在素材授权上的项目，棋牌类是真正的“代码就是全部资产”。

## 给我的灵感

三个可执行方向，按工作量从小到大排：

**灵感一：给AI换张皮，48小时出海版。** 把它的AI模块原样抽出，棋盘规则改成国际市场更熟悉的 **Gomoku变体或四子棋（Connect Four）**，界面做英文，上架itch.io和Google Play测试。四子棋棋盘更小（7×6），搜索更快，连AI难度调参都省了。MVP工作量：**1-2周**。变现：免费+AdMob横幅，验证渠道跑通后再加激励视频。

**灵感二：把“悔棋”做成印钞机。** 复刻人机对战主体，加三个钩子：每日挑战（每天一个固定残局，全服同一题）、连胜段位（赢3局升一段，断了从头算）、悔棋次数（免费2次+看广告续）。这三个功能加起来工作量**2-3周**，但分别对应了进度感、攀比心和付费点，正好补齐裸棋牌最缺的三层留存。变现：微信小游戏激励视频为主，这是目前个人开发者最顺的结算路径。

**灵感三：残局题库+AI复盘，做“教练型”棋类产品。** 利用仓库里现成的评估函数做双向改造：一是随机生成“白先胜”残局题库（用VCF算杀模块验证题目可解），二是让玩家下完一局后，AI用评分表标出“这局你失误最严重的三手”。这个“AI复盘教练”功能在棋牌用户里付费意愿意外地高，而技术上你只是把已有的评估函数换了个展示方向。工作量：**3-4周**。变现：复盘功能 Freemium，免费每天1次复盘，买断解锁无限次——一次性付费，不用碰订阅的复杂度。

## 上手

- 仓库：<https://github.com/lihongxun945/gobang>
- 在线试玩：见仓库README（在线Demo地址以仓库页面为准，老项目链接可能失效，跑不起来就 `git clone` 后直接开 `index.html`——纯前端项目，零依赖零构建）

最后给一句实在话：五子棋这个品类，“能玩”不值钱，满大街都是；“**能赢你而且赢得让你服气**”才值钱。这个仓库的全部价值，就是把后者所需要的每一行代码都摊开给你看了。你缺的从来不是玩法点子，而是那个让玩家连输十局还点“再来一局”的AI——现在它就在那儿，MIT协议，拿去。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
