井字棋(人机对战)

率先连成一条横线、竖线或斜线即可获胜。你执X,电脑执O。

战绩 0胜 0平 0负

点击格子,或用Tab移动后按Enter、空格落子。关闭或刷新页面后战绩会清零。

关于这个游戏

井字棋是在3x3的格子里轮流落子的双人游戏:谁先把横、竖、斜中的任意一条线连成自己的3个棋子,谁就获胜。在本页面里你执X,电脑执O。棋盘很小,所有走法早已被完全算清,因此它也常被用来入门理解"程序是怎样向前推算的"。可以拿来休息时玩一局,也可以用来向孩子讲解"多想一步"的思路。

游戏玩法

三档难度的原理

一共有多少种对局?(构建页面时实际数出的数值)

9个格子轮流填满看似有 9! = 362,880 种顺序,但一旦有人连成一线对局就结束,所以实际可能的对局更少。以X先手、按规则穷举全部走法,最终得到255,168种不同的完整对局,其中X胜131,184、O胜77,904、平局46,080。这些数字由与游戏本身相同的规则自动计算,并非手工填写。先手获胜的对局更多,但那说的是双方都乱点的情形。

结束时机对局数
第5手结束1,440
第6手结束5,328
第7手结束47,952
第8手结束72,576
第9手结束127,872
合计255,168

对局最早也要到第5手才会结束(X的第3个棋子是全盘的第5手)。数量最多的是下满9手的127,872种。若改数"盘面"而不是对局,包括空盘和终局盘面在内共有5,478种;把旋转、翻转后重合的视为同一种,则只剩765种。盘面这么少,电脑才能把一切都算一遍还几乎瞬间回应。

对手乱下时的结果(精确概率)

下表假设X(先手)在空格中等概率随机落子,按电脑的不同难度,把所有可能对局的概率逐一相加。它是"不动脑乱点"时的基准线,并不是真人的实际胜率。"简单"是双方都随机的情形。

电脑难度X(你)胜平局O(电脑)胜
简单58.5%12.7%28.8%
中等28.0%18.5%53.5%
困难0.0%22.3%77.7%

"困难"不会输给乱下的对手,也不会错过能连成线的机会;同时,你即使下得很好也无法战胜它,现实的目标是"不输"。

先手的开局与后手的应对

双方都走最优时结果是平局(对空棋盘求值的结果为平局(0))。格子从左上角起向右依次编号1到9。每个格子所在的线数不同:角3条、边中间2条、中心4条,中心牵涉的线最多。先手落第一子后,后手有多少种应对仍能保住平局,经穷举得到:

先手开局所在线数后手可选格能保平的应对
角(例如1号格)3条8格1格
边中间(例如2号格)2条8格4格
中心(5号格)4条8格4格

先手若从角开局,后手只有一个安全应对:中心;其余7种应对在对手走最优时都会输。因此对先手而言,角开局最容易让对方出错。若先手从边中间(如2号格)开局,保平的应对是1、3、5、8号格;若从中心开局,则是四个角。这些是面对完美对手的理论值,不是人类对战的胜率。

取胜关键:双重威胁(分叉)

一步同时威胁两条线,让对方只能堵住其中一条,这就是"分叉"。下面是一个可以复盘的例子:X下1号(左上角),O回应对角的9号;X下3号,威胁1-2-3,O必须堵2号;X再下7号,同时威胁1-4-7和3-5-7。O即使堵了4号,X下5号即可连成斜线获胜。问题出在O的第一步:用角回应角开局会让对方得到这个分叉,用中心回应则不会。

怎样做到不输

常见误解与局限

常见问题

能赢"困难"难度吗?

只要电脑按设计运行就赢不了。双方最优时必然平局,而"困难"只选最优步。这一档的目标是平局;想赢请选"简单"或"中等"。

先手真的有优势吗?

在对手可能失误时有:双方随机时X约58.5%获胜、O约28.8%获胜。双方最优则是平局。先手的好处主要是给对手更多出错的机会,尤其是角开局。

电脑先手会更难吗?

稍难一些,因为你必须一开始就应对正确。电脑若走角,你要占中心。"困难"下空棋盘上每个开局格的评价相同,所以电脑会随机选一格作为开局。

一共有多少种可能的对局?

X先手、连成一线即结束的规则下共有255,168种不同对局,5,478种不同盘面(旋转和翻转视为同一种则为765种)。两个数字都是网站构建时自动算出的。

"中等"是怎么选步的?

每一步以各一半的概率选择最优步或随机步,因此同一局面在不同对局中可能得到强应对或弱应对。

其他规则类游戏还有五子棋、猜数字(数字棒球)、扫雷和石头剪刀布。