Loading...
Loading...
人机对战(必不败 AI)或双人对战
三子连成一线就赢。人机模式下 AI 跑的是 minimax,每走一步前都把棋局推演到底——所以你赢不了它,最好的结果就是逼平。想换换口味,就切到双人模式,一台设备两人轮流落子。
全程在浏览器里跑,不上传、免安装。你始终执 X 且先手;人机模式下,胜、负、平三项会随对局自动累加,直到你清空比分或切换模式为止。
minimax 给每个可达局面都打了分,所以它从不会输,平局就是天花板。
把同一台设备递给朋友,X、O 轮流落子,不用第二块屏幕。
胜、负、平三格在人机模式下自动累加,切到双人模式则自动隐藏。
九个 24px 见方的点击格,手机上点和电脑上点一样跟手。
赢不过 minimax,那就奔着平局去:开局尽早占住中心或角位,再盯紧它任何一条已有两子的线立刻堵上。漏堵一条,这局就归 AI 了。
在顶部选「人机对战」或「双人对战」——无论切到哪边,棋盘都会重开。
你执 X 先手,点空格落子。
任意一行、一列或对角连成三子即获胜,获胜的那条线会变绿。
点「新一局」接着打、比分照旧;点「清空比分」则把统计清零。
一局几秒就结束,正好塞进两件事的间隙,不耽误正事。
一个小而易读的例子,看算法如何把一盘已解的棋逼成平局。
双人模式只要一块屏幕,别的什么都不需要——不用账号,也不用设置。
规则十来秒就能讲明白,赢了那条线变绿,结果一眼就懂。
轮到 AI 时,它会逐个试探每个空格,用递归的 minimax 把每种走法一路推演到胜、负或平并打分,再选分数最高的一步。棋盘状态和胜负判定全都保存在浏览器的 React state 里。
没有任何数据离开浏览器,也不会跨次访问保存——比分只存在内存里,刷新页面或在人机与双人之间切换时就清零。
九个格子,整棵博弈树小到瞬间就能算完,所以 AI 的应招其实是立刻得出的;特意加了约 0.3 秒的停顿,免得它的落子抢在你之前冒出来。全程不发任何外部请求。