❝最近几天,我用AI编程工具手搓了一个多人在线联机游戏:斗地主。这个项目已经在GITHUB上开源了,另外我还部署了Demo站:「http://doudizhu.yehaoji.cn/」,欢迎在线试玩。
❞


欢迎大家Star~~
这个想法的来源也是和一个朋友(同样的程序员)聊起了AI编程替代程序员的事情,他和我一样有个问题,就是“保姆心”太重,总是不放心把写核心代码这种事情交给别人做,总觉得会做的不如自己好,对于AI编程也有同样的心理。
为了验证一个非技术人员使用AI编程工具到底能不能从0-1构建一个复杂项目,朋友提出一个想法:
如果我们只说一句:**开发一款多人在线联机的斗地主游戏,**AI能够做到什么程度?
于是基于这个需求我用了「4天」时间,测试了「2款」AI编程工具,全程让AI写了「9000」多行代码,「我一行都没有改过」。
其中还包含比较复杂的「牌型类型判定,出牌规则算法,“要不起”判定算法,还有出牌“提示”功能算法」。
开发工具
Trae CN(限时免费)
Cusor(Pro订阅)
测试结论
按照惯例,先说测试结论:
关于非技术人员是否可以用AI编程工具落地复杂项目?
在开发这个项目期,我全程不写一行代码,只和AI对话,写需求文档,用plan模式规划重构计划等等,实际测试下来,如果一个不懂代码的人很难做出复杂的项目,写几个HTML还是没有什么问题的,但涉及到这种前后端实时通讯,复杂交互流程的项目,门槛还是很高的,就是plan模式产出的文档就很难理解AI想做什么,如果一味的Build,那很可能出现大的偏差,只能通过多轮次对话修正,还不一定能够最终修复。
我就遇到过,最终是我分析代码,告诉AI上下文才最终解决。
但是,也不是没有可能,但要比开发人员付出更多的时间,精力和Token。
Trae和Cusor哪一个更好用?
肯定是「Cusor」更好用,毕竟是花钱了的(用Trae的同学不要骂我),而且还可以用地表最强编程模型:「Claude Opus4.6」。但是如果没有魔法的话是不能使用的,文章后面有破解之法。
我是两个工具混用,前端Vue3项目修改使用Trae,涉及前后端交互逻辑的我用Cusor的Auto模式,对于复杂规则算法,我直接使用用Opus4.6模型。
cusor给我的感觉是对于中度重构或重度逻辑算法任务比较放心,我不用太多考虑给到的上下文,代码片段够不够用,它会主动推理,逻辑自洽,交付的比较全面。
trae就容易改前端只改前端,与需求或功能模块的后端代码就不管了。尤其是有前后端交互的需求上。
开发过程
第一天
项目最开始是用Trae开发的,建好项目目录,手写了一个doc.md,定义了开发需求和一些实现细节,并没有像朋友说的那样只给AI一句话。
当时写的需求文档:(甚至有一部分是AI自己帮我想的)
## 开发任务开发一款多人在线联机斗地主游戏## 游戏流程1. 玩家连接服务器,进入游戏房间。2. 玩家开始游戏,等待其他玩家玩家。3. 玩家出牌,根据游戏规则进行判断。4. 游戏结束,显示游戏结果。## 技术实现1. 游戏采用客户端-服务器架构,客户端负责游戏界面和交互,服务器负责游戏逻辑和数据存储。2. 游戏采用TCP协议进行通信,确保数据的实时性和可靠性。3. 游戏采用多线程技术,支持多个玩家同时参与游戏。4. 游戏采用数据库技术,存储玩家信息和游戏数据。5. 游戏采用游戏引擎技术,实现游戏逻辑和动画效果。6. 前端使用HTML5CSS3JavaScript实现游戏界面和交互。7. 后端使用NodeJs框架实现游戏逻辑和数据存储。## 游戏界面1. 游戏界面采用图形化界面,包括游戏房间、玩家界面、牌组界面等。2. 玩家界面包括玩家信息、牌组、出牌按钮等。3. 游戏房间界面包括游戏房间列表、创建房间按钮、加入房间按钮等。不到5分钟,AI最终按需求完成了项目开发,后端使用「NodeJS+Socket.IO+Express+**「MySQL」,前端使用」HTML****+「「Javascript」」+「「CSS」」,**前端交互使用的是DOM操作完成,没有状态控制,只有DOM显示隐藏。
因为当前没有说明要基于websocket通讯,所有它选择的是Socket.IO。
第一次运行测试,说实话还是很惊讶的,因为基于这么简单的开发需求文档,AI已经把基本的游戏交互逻辑全完成了。
登录页面 等待房间 凑齐3人,开始游戏 游戏主界面:出牌区,上家位置,下家位置,底部玩家(自己)手牌区域,对手玩家卡牌(背面)占位符。 扑克牌渲染,排序,花色等等
基本上该有的都有了。
只做了4,5次对话,游戏基本可以运行,「创建房间,加入房间,开始游戏流程全部跑通,但发牌,出牌,叫地主这些功能基本上用不了,但界面已经全部完成了。」
第二天
考虑到前端用DOM操作的这种方案,随着项目复杂度提升,各种状态和页面交互会变的很困难,我就用Trae做了项目的第一次重构。
这是一部分重构对话内容:
User/plan 制定整体项目重构计划,前端使用VUE3+Typescript重写。User制定整体项目重构计划,前端使用VUE3+Typescript重写。Assistant我需要先了解当前项目的结构,然后制定详细的重构计划。首先查看项目的目录结构。查看package.json文件了解项目依赖和配置。查看后端服务器代码了解API和业务逻辑。查看前端代码了解当前实现。查看前端JavaScript代码了解当前实现。现在我已经了解了项目的结构和当前实现,将制定详细的重构计划文档。我已经完成了前端重构计划的制定,详细内容已保存到 .trae/documents/frontend_refactor_plan.md 文件中。整个过程体验还是不错的,确认重构方案之后,AI完成了所有的工作,甚至还超出了我的预期:
「我发现用Vue3重构项目以后,游戏界面明显好看了,而且多了很多细节,特别是牌的花色,点数和背面的渲染,我没有任何提示的情况,AI居然自己把之前的设计优化了,我都怀疑它的「「训练数据」」里一定有这个游戏的「「源码」」。」


背面居然不再是一个灰色方框的占位符了。
后面整个过程就是AI负责写代码,我负责测试,一直通过对话的方式进行项目开发,测试有问题的,我只描述“现象”以及正确的应该是如何。
第二天完成开发内容如下:
房间列表:显示当前服务器房间列表,房间内人数,房间状态,以及加入房间的逻辑。 叫地主功能 修复了非常多的游戏BUG
第三天
考虑到未来项目的扩展性和后端的复用性,游戏的通讯协议还是比较关键的,我让AI提取了服务器和客户端所有交互的通讯协议,统一为JSON格式,并把Socket.IO替换为Websocket。
这次底层重构我用的Cusor,模型是自动选择的。从plan模式到重构完成到运行项目,整个过程非常流畅,而且运行不报错,逻辑没有任何缺失和改变,整体体验上和trae有个很大的区别是cusor会推理你的需求中模糊或不明确的地方,弹出确认选项,让你选择。这个功能在trae上一直没有见过,可能 对于模糊的需求,trae直接做了降级处理吧。
第三天主要完成了一些游戏交互体验,游戏玩家布局从上左下,改成了左下右结构,更符合游戏习惯,增加了滑动选牌,出牌倒计时,房间计时,新增房间支持设置密码,
另外还开发了后台管理系统,支持在线玩家,房间管理,还增加了作弊发牌功能:这个最好玩了,设置一个玩家名称,只要服务器检测到了这个玩家名称,会自动把大,小王和两个2发给他。
全程和ai聊天,没有改过一行代码
第四天
新增了两个算法比较复杂的功能
“要不起”功能

“提示”功能

这两个功能的算法相对来说还是比较复杂的,因为涉及各种牌型(单张,对子,连对,三连,带不带牌,4带2,炸弹,王炸,飞机带翅膀等等)的判定和大小比较,单单提示功能的服务端代码就有近400行。这次使用的模型是claude opus4.6,不得不感叹这个模型是真的强,用plan模式看它规划的方案,可以看的出考虑是非常细致和全面的,和trae的各种降级处理形成了鲜明的对比。
cusor如何在国内用上claude opus4.6模型
在主界面按下Command+Shift+P,输入,并选择下面这个选项。

在打开的文件中输入以下内容:
{ "http.proxy": "http://127.0.0.1:7890", "http.proxyStrictSSL": false, "http.proxySupport": "override", "http.noProxy": [], "cursor.general.disableHttp2": true}其实的"``http://127.0.0.1:7890``"改成你本机的魔法地址。
用AI编程的一些个人感受
整体体验非常流畅,ai编程真的非常高效。
开发人员
对于开发人员,特别是全栈工程师,用AI编程工具确实是如虎添翼,开发效率直接起飞。
而且使用AI编程,是可以“相互成就”的,你学习AI对某个功能模块,一个函数的实现思路,你把你对业务流程和交互逻辑的理解告诉AI,它就可以更精准识别你的需求,交付物更符合你的预期
非开发人员
其实对于非开发人员要求更高,第一得有非常明确的开发需求文档,而且开发之前plan要多用,第二,对于业务逻辑bug,要识别出哪里的问题,因为不懂代码,所以通过AI了解它的实现思路,善用AI去解决它自己的问题,实现复杂项目也不是没有可能
使用建议
多工具混用
区分简单开发任务,中度交互开发任务和重度逻辑算法任务。使用不同的开发工具可以更省token。
辅助定位问题
用AI编程,也不能全靠AI,对于多轮次对话都无法修正的逻辑问题,最好是自己去找相关实现代码的位置,把相关代码片段,作为上下文告诉AI,可以更快的修复你的问题。如果找不到实现的地方,直接问就好了。
善用markdown文档
用AI编程工具,最好是在工作目录设置一个doc目录,把所有给AI提出的新增功能需求,变更需求,重构需求等等,放在里面,然后在ai聊天窗口以上下文引入的形式告诉它,不需要复制粘贴,这样如果AI的交付结果产生偏差,你可以回滚以后重新修正文档,这是一个好习惯。
当然修bug的那些对话就没有必要存在这里了。
写在最后
总之呢,这4天,9000+行代码零手动修改的代码,一场从质疑到惊艳的 AI 编程实战,不仅敲出了一款能联机对战的斗地主,更敲碎了我们对 AI 编程的刻板偏见。
但是AI编程也不是万能的魔法,也无法彻底替代开发者的思考和判断力,但是绝对能够成为这个时代程序员手里的神兵利器,从简单页面到复杂算法,从底层重构到全栈落地,AI 正在重新定义开发的效率与边界。
未来已来,不必焦虑被替代,不如拥抱变化,与 AI 并肩,普通人也可以用创意与逻辑,解锁更多从 0 到 1 的无限可能。下一个惊艳的项目,或许就始于你的一次尝试,我们拭目以待!
如果你觉得文章内容对你有用,欢迎点赞,转发,收藏 。
夜雨聆风