← 首页 / 五子棋 · 连成五子背后的平衡难题 待审核 4 页

五子棋 · 连成五子背后的平衡难题

五子棋 (gomoku / 连珠 renju) —— 15×15 棋盘, 黑先手, 双方轮流落子在交叉点上, 谁先把己方棋子连成横 / 竖 / 斜任意一条恰好五子的线即胜。规则一句话说完, 难点却不在规则, 而在一个不舒服的事实:先手太强了

本系列从这件事拆开:先上手玩一局 (规则可切换 / 对战启发式 AI);看规则全景讲清自由规则为何先手必胜、连珠与 Swap2 两条平衡路线各自的取舍;再单独盯黑棋禁手的三三 / 四四 / 长连怎么判;最后用 WebRTC 搭一个无需自建后端也能两台设备真对战的联机版。与同被「完全解出」一类的 井字棋 互为对照:那里双方最优必和, 这里先手却必胜 —— 于是才需要从规则层面打补丁。

先上手:把棋下起来 play · 可玩棋盘

上手玩:规则可切换的对局

系列的入口体验。一个能下的 15×15 棋盘,在自由 / 连珠禁手 / Swap2 开局三套规则间切换感受差别;可本地双人轮流落子,或对战一个启发式 AI。胜负即时判定并高亮连成的那条五连线,连珠规则下还能标出黑的禁手点。

本系列的 AI 是简单的棋型启发式 (给每个候选点按「自己进攻 + 封堵对手」的棋型价值打分取最高), 非完美算法 —— 五子棋状态空间极大, 不像井字棋能穷举出完美对弈。它只为单人对局提供一个像样的对手。 规则与先手平衡 rules · 先手与平衡

规则全景:为什么要给黑棋打补丁

难点不在规则在先手:1994 年 Allis 用威胁空间搜索证明了自由五子棋先手必胜。要让对局重新值得一玩,必须从规则层面削弱先手——连珠(只罚黑)、Swap2(对称化)、指定开局三套手段对照,并交互演示 Swap2 的选边流程。

forbidden · 黑棋禁手

黑棋禁手:三三 / 四四 / 长连

连珠规则只约束黑:走出两个活三(三三)两个四(四四)六子以上的长连即判负,白棋无禁手。逐类摆出标准局面看判定边界,还有「成五优先于禁手」的特例,以及一个自由落黑子、实时标出全部禁手点的探索沙盒。

先手必胜不是「先手稍占优」:它意味着只要黑走对, 白无论如何应对都会输。这正是它和 井字棋 的分水岭 —— 井字棋小到能穷举整棵博弈树、结论是双方最优必和;五子棋的状态空间庞大得多无法穷举, 一旦放开手脚先手的威胁组合就压倒后手, 于是才有连珠 / Swap2 这些规则补丁。 两人联机 online · WebRTC P2P

联机对战:无后端的 P2P 实现

playground 是纯静态站点、没有后端,联机却仍可行:用 WebRTC 在两个浏览器间直接建 RTCDataChannel,落子点对点传输。信令 (offer / answer) 不自建服务器,改为手动复制粘贴一段编码,房主选定规则后落子 / 重开实时同步。

延伸阅读

  • Gomoku — Wikipedia en.wikipedia.org 五子棋的规则、变体 (free-style / standard / renju) 与「自由规则先手必胜」的结论。
  • Renju — Wikipedia en.wikipedia.org 连珠规则的禁手定义 (三三 / 四四 / 长连只罚黑) 与现代赛事的开局平衡手段。
  • Swap2 opening — Wikipedia en.wikipedia.org Swap2 (交换开局) 协议:先手摆三子后由对方选边或加子换手, 靠对称化抹平先手优势。
  • RTCDataChannel — MDN developer.mozilla.org 浏览器间点对点数据通道的标准 API;联机页用它在两个 peer 之间直接传落子, 无需服务器中转。