我用AI做了一个“中国象棋“游戏,我居然还下不过!【项目已开源】
我用AI做了一个中国象棋游戏我居然还下不过【项目已开源】一个写了 10 年 Android 的老码农第N次用 AI 做 Web 项目结果这次被自己做的 AI 打得怀疑人生。写在前面先放结论项目已开源https://github.com/yutils/xiangqi在线试玩https://yutils.github.io/xiangqi备用地址https://xiangqi.kotlinx.com我做了个在线中国象棋纯前端开箱即玩。人机对战、双人对战、自定义残局、悔棋、提示、计时器都有。然后我开了一局专家难度。然后我就下不过了。被自己亲手写的代码按在地上摩擦这种体验确实新奇。一、为什么是象棋我是余静写 Android 已经 11 年了主要做物联网相关的工程化项目。象棋对我而言,是从小看到大的玩意儿——爷爷的茶馆里、街边的梧桐树下、老爸的饭桌上,都有那种啪一声落子的声音。我自己棋力很一般,大概属于知道规则、能下、但说不出所以然的水平。做这个项目纯属偶然:某个周末想用 AI 辅助做个完整的 Web 小项目练手,想了半天选题,最后落在象棋上。理由有三个:规则明确:中国象棋走法清晰,边界条件可枚举,适合工程化有现成引擎:不用从零写 AI,有开源的 XiangQi Wizard Light 可用能玩:做完自己能用,而不是躺在 GitHub 吃灰二、技术栈长什么样?作为一个 Android 出身的人,这次选了 Vue 3 Vite:模块技术前端框架Vue 3 (Composition API)构建工具Vite 6AI 引擎XiangQi Wizard Light (GPL-2.0)部署GitHub Pages Actions 自动部署整个项目纯静态,没有后端。AI 计算放在 Web Worker 里,不会卡 UI。工程结构很简单:src/ ├── components/ChessBoard.vue # 棋盘组件 ├── engine/ │ ├── ai.js # AI 接口 │ ├── aiWorker.js # Web Worker │ ├── board.js # 棋盘逻辑 │ ├── evaluation.js # 局面评估 │ ├── xqwlight-adapter.js # 引擎适配器 │ └── xqwlight/ # 引擎本体 ├── utils/ # 记谱、音效 └── App.vue三、AI 到底是怎么想的?很多人对中国象棋 AI 的印象,还停留在穷举所有走法。理论上是,实践上不是。真要纯穷举,象棋的搜索空间大约是 10^40 量级,比宇宙原子数还多。所以引擎核心是两件事:1. 搜索:用 Alpha-Beta 剪枝简单说就是:“如果对方最优应对下,我某一步已经比另一步差了,那这一步后面的所有变化都不用看了。”剪枝之后,实际搜索量从指数爆炸降到可接受。2. 评估:给每个局面打分搜索到一定深度后,要把棋盘翻译成数字。评估函数大概会考虑:子力价值(车 9 分、马 4 分、兵 1 分……)位置价值(马跳卧槽、车占肋道加分)攻守关系(威胁对方子力加分,被威胁减分)特殊形态(连环马、担子炮、铁门栓……)XiangQi Wizard Light 这套引擎是开源的(GPL-2.0),我直接集成进去了。我没有重写引擎,只是做了适配和封装。重点:棋力不是我的功劳,是引擎的功劳。我负责的是让这套引擎在浏览器里跑起来,并且跑得舒服。四、四个难度是怎么调出来的?这是这个项目里我比较得意的部分。直接给引擎一个深度参数是最简单的做法,但体验很差——深度浅的时候 AI 像智障,深度深的时候浏览器卡死、风扇狂转。我的做法是深度 时间双限制:难度思考时间行为表现简单~0.3 秒向前看 2 步,会犯低级错误中等~0.8 秒向前看 3 步,正常业余水平困难~2 秒向前看 4 步,需要认真下专家~2.5 秒向前看 5 步,我下不过关键点是把计算放到 Web Worker 里,主线程只负责渲染。这样即使引擎在后台算 3 秒,你的棋盘交互、动画、提示都不会卡。五、被自己写的 AI 打败是什么体验?我第一次测试开了一局专家难度,执红先手。开局我走中炮,架势很正。AI 应屏风马,有模有样。中盘我开始吃亏——它的子力调度比我快,我还在想这步要不要走,它已经把马跳到了我车面前。最气的是残局:我剩一车一马,它剩一车一炮。我刚走一步车,以为要将军。它直接弃炮解将,反手车马冷杀。我盯着屏幕看了三秒,默默点了悔棋。悔棋之后还是输。那一刻我突然意识到:我写的代码,已经比我强了。这不是什么AI 觉醒的玄学,而是搜索深度 评估函数的必然结果——4 步以上的搜索深度,人类业余棋手已经很难对抗了。六、AI 辅助开发的真实感受说实话,这次项目里 AI 辅助的成分很大。但我必须把话说清楚——“AI 辅助不等于AI 替我写”。具体分工大概是这样:我做的AI 帮我做的选型、架构、模块划分生成棋盘 SVG 渲染的初版引擎集成和适配写 CSS 动画的细节难度调参、性能优化提供残局校验逻辑UI/交互设计排查 Web Worker 通信 bug部署流水线生成 README 和文档也就是说,决策都是我做的,苦力活 AI 干了大部分。这种模式对有经验的人特别友好——你心里清楚要什么,AI 就是个超高效的打字员。但如果你完全不懂,直接让 AI 从零生成一个完整项目,质量会很糟糕,因为你没法判断它写的对不对。AI 不会替代工程师,但会用 AI 的工程师会替代不会用的。这话老套,但确实是这个理。七、做了哪些细节?分享几个我比较在意的工程细节,可能对做类似项目的朋友有参考价值。1. 棋盘渲染用 SVG,不是 Canvas理由:矢量缩放,手机端不糊可以用 CSS 控制线条样式,改主题方便点击事件天然支持,不用自己做命中检测2. 飞子动画走子时不是直接刷新棋盘,而是先播一段棋子从 A 飞到 B的动画,动画结束再更新数据。看起来很自然,但实现上要小心动画和数据状态的同步。3. 将军特效被将军时,被将的棋子会有红色脉冲 屏幕闪光 将军二字弹出。这个细节我自己挺喜欢,很有被针对的压迫感。4. 自定义残局可以摆任意棋局开始下。这个功能是给研究残局的朋友做的——摆个经典残局,让 AI 走给你看,比自己对着书谱强。5. 记谱走完一步会生成中文记谱,比如炮二平五“马八进七”。这个看似简单,实际上涉及坐标转换、走法判定(平/进/退)、同子歧义处理(两个马都能走到同一位置时怎么区分)等等。八、开源地址 试玩GitHub:https://github.com/yutils/xiangqi在线试玩:主地址:https://yutils.github.io/xiangqi备用:https://xiangqi.kotlinx.com技术栈:Vue 3 Vite 6XiangQi Wizard Light 引擎 (GPL-2.0)GitHub Actions 自动部署代码质量自认为还行,该拆的模块拆了,该注释的地方注释了。如果你想做类似的网页棋类游戏,或者想看看 Vue 3 Web Worker 怎么组织,可以直接去仓库翻翻。欢迎 star ⭐、欢迎提 issue、欢迎 fork 来改。如果你能改成AI 下不过我的版本,请务必告诉我怎么调的,我也想赢一次。九、最后说两句这个项目我做了一个多礼拜断断续续其实一天就做完了就放在那儿没管后来把项目拉起来对战感觉人机走的很生硬又加了一些走棋动画。最爽的时刻不是部署成功,而是第一次完整下完一局——尽管我输了。被自己亲手做的 AI 打败,有一种很奇特的感觉。像看着自己教出来的学生,第一次在某个领域超过自己。你既有点失落,又有点骄傲。我想,这可能就是工程师特有的浪漫。关于我:余静,10 年 Android/Java 开发。长期深耕XX行业全链路工程化,也做物联网全栈。开源了 kotlinx、YUtils、YSerialPort、YHttp 等工具库。GitHub: https://github.com/yutils个人站: https://www.kotlinx.comCSDN: Yu1441如果你也在做 AI 辅助开发、或者对工程化感兴趣,欢迎来交流。下一篇文章大概率会写**“AI 辅助开发的正确姿势”**——结合这个象棋项目,讲讲怎么把 AI 当成一个靠谱的副驾,而不是指望它替你干活。敬请关注。项目开源地址:https://github.com/yutils/xiangqi如果这篇文章对你有启发,点赞、在看、转发,都是对我继续写下去的最大鼓励。

相关新闻

从拍照到仿真只需30秒!VeyForge:AI驱动3D资产生成平台,提速机器人仿真训练

从拍照到仿真只需30秒!VeyForge:AI驱动3D资产生成平台,提速机器人仿真训练

行业痛点 在具身智能和机器人仿真训练领域,3D资产是算法迭代进化的核心“燃料”。但传统3D资产研发模式存在致命短板:手工建模单件物体耗时数小时乃至一整天,人力成本高昂、制作周期漫长,直接卡住机器人研发、仿真测试的效率瓶颈…

2026/8/4 12:36:22 阅读更多 →
差分进化算法在微电网调度中的Matlab实现与优化

差分进化算法在微电网调度中的Matlab实现与优化

1. 项目概述:当差分进化算法遇上微电网调度微电网作为分布式能源系统的核心单元,其调度优化直接影响着供电可靠性和经济性。传统调度方法在面对风光出力不确定性时往往捉襟见肘,这正是差分进化算法(Differential Evolution, DE&am…

2026/8/4 12:36:22 阅读更多 →
【YOLOv11模型改进系列】24 YOLOv11模型量化——FP16到INT8,推理速度翻倍,精度损失<1%

【YOLOv11模型改进系列】24 YOLOv11模型量化——FP16到INT8,推理速度翻倍,精度损失<1%

24 YOLOv11模型量化——FP16到INT8,推理速度翻倍,精度损失<1% 老张上周找我诉苦,说他们团队用YOLOv11部署到Jetson Orin上,FP16模型只能跑到45FPS,客户要求至少90FPS。 他试了网上各种“一键量化”脚本,结果模型直接“崩了”——检测框乱飞,mAP从72%掉到51%。电话里…

2026/8/4 12:36:22 阅读更多 →

最新新闻

C++模板编译期调试技巧与实战指南

C++模板编译期调试技巧与实战指南

1. 模板编译期调试的核心价值在C开发中遇到模板报错时&#xff0c;你是否曾被满屏晦涩的错误信息折磨得怀疑人生&#xff1f;模板作为C最强大的特性之一&#xff0c;其编译期多态机制虽然带来了极高的运行效率&#xff0c;但也让调试过程变得异常艰难。传统调试器对模板实例化过…

2026/8/4 13:22:49 阅读更多 →
大模型稳定输出JSON格式的实战指南:从Prompt到函数调用的完整方案

大模型稳定输出JSON格式的实战指南:从Prompt到函数调用的完整方案

在构建基于大模型的智能应用时&#xff0c;你是否遇到过这样的困扰&#xff1a;你向模型提问“列出三个用户信息&#xff0c;包括姓名、年龄和邮箱”&#xff0c;期望得到一个结构化的JSON数组&#xff0c;但模型却返回了一段自由文本&#xff0c;甚至夹杂着Markdown代码块标记…

2026/8/4 13:22:49 阅读更多 →
中国城市绿色经济效率数据集解析与应用

中国城市绿色经济效率数据集解析与应用

1. 数据背景与价值解读这份涵盖2006-2022年中国282个地级市的绿色经济效率数据集&#xff0c;是当前区域可持续发展研究领域的重要基础资源。作为长期从事城市经济分析的从业者&#xff0c;我深刻理解这类数据的稀缺性——它首次实现了跨17年时间维度和全量地级市空间维度的双重…

2026/8/4 13:22:49 阅读更多 →
Handsontable自定义Select控件开发指南

Handsontable自定义Select控件开发指南

1. Handsontable 单元格类型扩展实战&#xff1a;打造灵活可配的 Select 控件作为一名长期与数据表格打交道的前端开发者&#xff0c;我经常遇到需要增强表格交互能力的场景。Handsontable 作为一款功能强大的 JavaScript 电子表格库&#xff0c;其 registerCellType 方法为我们…

2026/8/4 13:22:49 阅读更多 →
莱达西贝普(Lerodalcibep)用法用量、漏诊处理与给药操作规范梳理

莱达西贝普(Lerodalcibep)用法用量、漏诊处理与给药操作规范梳理

莱达西贝普&#xff08;商品名Lerochol&#xff09;作为每月一次皮下注射的长效PCSK9抑制剂&#xff0c;规范给药是保障降脂疗效、降低不良反应风险的关键。基于FDA官方完整处方信息&#xff0c;药物推荐标准剂量为 300mg&#xff0c;每4周&#xff08;每月&#xff09;皮下注射…

2026/8/4 13:22:49 阅读更多 →
对CSS中的Position、Float属性的一些深入探讨

对CSS中的Position、Float属性的一些深入探讨

对CSS中的Position、Float属性的一些深入探讨 CSS布局是前端开发的核心技能之一&#xff0c;而position与float则是其中最经典也最容易被误解的两个属性。很多初学者在刚接触它们时&#xff0c;往往只记住了“position: relative是相对定位&#xff0c;float: left是左浮动”这…

2026/8/4 13:21:48 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标&#xff1a;掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码&#xff1a;多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话&#xff0c;第一次听说美国这个老牌折扣网站的跨境卖家&#xff0c;十个有八个会问同一个问题&#xff1a;这个平台到底是干嘛的&#xff1f;我见过一个做家居出口的朋友&#xff0c;他在亚马逊上月销二十万美金&#xff0c;却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者&#xff1a;邓兵、刘建国通讯单位&#xff1a;清华大学DOI&#xff1a;https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素&#xff08;REEs&#xff09;是清洁能源技术与电子器件不可或缺的核心原料&#xff0c;然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流&#xff1a;一个核心问题的诞生想象一下&#xff0c;你是一个城市供水系统的总工程师。你的城市有多个水源&#xff08;水库&#xff09;&#xff0c;需要通过一个复杂的地下管道网络&#xff0c;将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起&#xff1a;为什么我们需要互相关几年前&#xff0c;我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号&#xff0c;理论上它们接收到的声音波形应该非常相似&#xff0c;只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →