← 国际象棋 · 实战对局 / 第 0 课 · 子力安全 待审核 1 / 7
安全 · 别送子

第 0 课 · 子力安全

初学者输掉的棋里,绝大多数不是被战术打败的,而是自己把子送掉的。这一课因此不讲任何战术,只训练一个动作:落子之前,把整盘棋上「谁在挨吃」看一遍。

1 · 送子与四档的实际分界

本页对局中的 NPC 分四档。取十二个双方都有子可吃、且选错代价在两兵以上的尖锐局面,逐档反复采样,用一台搜得更深的引擎当裁判,统计各档选中的着法比最佳着法差多少:

档位 出现丢子级失误(≥ 1.5 兵)的比例 中位失误
新手 30% 0.05 兵
休闲 6% 0
进阶 2% 0
最强 0 0

这张表最该注意的是它自相矛盾的地方:新手档三成的手数在送子,中位失误却几乎是零。两个数字都对——它的失误不是平摊在每一步上的,而是扎堆在少数几步:七成的手走得相当规矩,剩下三成里直接把子放在对方吃得到的地方。

这不是随机噪声,是刻意做成这样的。低档 NPC 变弱的方式不是「算完之后随机选个差的」,而是每一步以一定概率根本没算——只扫一眼就走。扫一眼看不出兑换链,于是送子;而没走神的那些步,它是按完整搜索走的,该多好就多好。人的失误也是这个形状。

对练习的意义很直接:一个自己不送子的棋手,不需要任何战术知识就能赢下新手档——赢面完全来自对手的失误。但不能等:你不知道哪一步他会漏,所以每一步都得把挨吃清单过一遍。休闲档只有 6% 的手数会送,那就更要盯——一整局可能只有两三次机会,错过就没了。

所以这条阶梯真正的分界只有三处:会不会送子、看不看得见两三步的战术、以及位置理解。第一条是这一课的全部内容,后两条从下一课开始。

2 · 一格之内的加减法

一个子是否「在挨吃」,不能只看它有没有被攻击,还要看兑换算下来谁划算。术语上,被对方子力攻击着的棋子称作挨吃(en prise);把一格上的连续吃子按顺序算完得到净收益,称作静态兑换评估(static exchange evaluation, SEE)。

算法只有一句话:双方轮流在同一格上吃,每次都派当前最便宜的那个子上去,而任何一方都可以在任意一层选择「不吃了」。于是净收益是一条从最深处往回取优的递推。

例 2.1 · 白马停在 e4,被 d5 的黑兵攻击,白方有一个 d3 的兵保护 e4。

黑兵吃马得 3 分;白兵吃回那个兵得 1 分。黑方净赚 2 分,仍然划算,所以这个马是在挨吃的——「有子保护」不等于安全。

若把攻击者换成一个车:车吃马得 3 分,白兵吃回车丢 5 分,净亏 2 分。这一次黑方不会吃,马是安全的。被攻击的次数不是判据,被吃的顺序与分值才是。

按「从贱到贵」出手这一条不是习惯而是必需:先派贵子上去,等于把兑换的第一笔就记成亏账,后面无论怎么算都翻不回来。

这套清算在本页是实打实跑着的一份代码(core/threats.ts),对局页的复盘与下方的练习共用它,所以练习里给出的每一句「净亏几分」都不是估计值。

3 · 落子前的三次确认

三个问题,顺序固定:

  1. 对方上一手在威胁什么:一手棋很少只有一个目的,先看它新打上了哪个格、哪条线被打开了。
  2. 这一手走完,我哪个子失去了保护——出子会带走保护——一个子离开原位之后,原先由它看着的格子就空了下来。这是「明明没动那个子,它却突然挨吃」的全部来源。
  3. 对方有没有子白送:送子是双向的,对手的失误只有被吃下来才算数。低两档的 NPC 每局都会送上几次,而且不挑时候,不查就等于放过。

第三问常被忽略,但它与前两问是同一件事的两面:都是把整盘棋的挨吃清单过一遍。养成这个习惯之后,第 1 课与第 2 课才有意义——看不见免费的子,再多的战术图形也用不上。

4 · 练习

图 4-1 · 子力安全练习。题目取自引擎自对局的真实局面,分「救子」与「白得子」两类,正解由深度 7 搜索定案且唯一。提示按钮会列出双方全部挨吃的子与各自的兑换净值。

建议 · 对局结束后在右侧面板点「分析本局」。复盘会把每一手与引擎认为最好的一手比一遍,凡是判为送子或漏子的,都会直接标回这一课。比读完这一页更有用的是看到自己那一局里具体是第几手犯的。

课程目录 · 0 子力安全 · 1 开局三件事 · 2 五种吃子图形 · 3 攻王 · 4 该不该兑子 · 5 四个必会残局 · 6 名字