我用华为云码道从0到1做出一款战棋游戏:一个周末的完整实战记录
一键开通华为云码道 CodeArts 代码智能体https://developer.huaweicloud.com/codeartsco.html?sourcedmzntgwatomgit1sourceaddmzntgwatomgithd作品介绍本文记录了作者仅用6分37秒通过华为云码道CodeArts代码智能体从零开发出一款可玩的中世纪奇幻回合制战棋小游戏的全过程。借助AI精准需求澄清、分轮交付可运行版本、自动生成测试用例及代码修复能力作者以“产品经理验收员”角色高效完成《战棋游戏-王国之战》核心功能开发BFS寻路、兵种克制、地形加成、敌方智能评分与双人对战。项目最终实现完整交互逻辑与视觉呈现形成了可以直接玩的游戏应用验证了AI辅助编程在复杂游戏开发中的巨大潜力。一、起因一个还没想清楚就开干的想法我是写 Java 和 Go 出身的前端属于能跑就行水平。某个周末下午重温《火焰纹章》突然就较上劲了能不能用纯前端技术从零搓一个能玩的回合制战棋冷静下来想了想这活儿没那么简单。寻路要做移动范围计算兵种克制和地形加成牵一发动全身敌方 AI 得有个像样的决策逻辑还有选中、移动、攻击、取消这一整套交互。纯手写保守估计两三天而且大概率写到一半就失去耐心。正好手头在用华为云码道 CodeArts 代码智能体我决定把整个开发过程交给它自己只当产品经理 验收员顺便看看 AI 辅助编程到底能顶到什么程度。这篇文章就是那次实验的完整记录——包括踩的坑。它使用起来非常简单在Atomgit的工作台直接集成了只需要登录就可以用了。二、第一轮对话它没急着写代码我的需求就一句话“帮我开发一个战棋小游戏角色按回合制行动发我可以玩的网页版。”说实话我本来做好了它直接糊一坨代码过来的心理准备。结果它先反问了我三个问题题材中世纪奇幻、现代军事还是科幻机甲玩法深度休闲简化版、经典战棋兵种克制 地形加成还是带技能装备的深度策略版对战模式单人打 AI还是双人同屏这三个问题问得挺内行。战棋游戏 “做多重” 完全取决于这几个选择选错了后面全是返工。我选了中世纪奇幻 经典战棋 单人打 AI——经典款规则完整又不过分复杂适合当第一版。需求敲定后它直接甩出一份游戏设计文档两块内容我印象很深兵种克制闭环剑士克枪兵、枪兵克骑士、骑士克剑士弓手克法师法师打骑士还几乎无视防御。有闭环就有博弈这比数值堆高就赢有意思得多。地形效果表地形防御加成移动消耗特殊效果平原01无森林22适合驻守山地33最佳防御地形河流04行动艰难村庄11每回合回血核心操作循环也在这轮定死了选中单位 → 移动 → 攻击/治疗 → 待机 → 结束回合。后面四轮迭代全是在这个骨架上长肉。三、三轮迭代每个版本都拿得出手这是我这次体验里最满意的一点它不是一口气糊完而是每轮交付一个能玩的版本。v1 基础版12×8 棋盘、六大近战远程兵种、BFS 寻路、战斗判定、敌方 AI单文件 HTML浏览器打开就能玩。v2加了治疗师不能攻击、能奶人、AI 会优先治疗残血队友、三档难度、三张地图河谷对峙、幽暗密林、乱石峡谷。v3六个主动技能 经验升级系统。剑士疾风连斩、骑士铁骑冲锋、法师炎爆术这些技能一一配齐击杀和受击都攒经验升级加攻防血——火焰纹章那个味儿一下就出来了。v4本地双人对战。蓝红双方轮流执军右侧面板和战报跟着阵营切换。最后 v4 交付时我特意留意了一眼运行数据整轮任务耗时 6 分 37 秒输入 477.6K token输出 2.6K token5 个子任务全部完成。附带的验证结果里JS 语法校验通过无头浏览器实机截图确认双人模式 UI 正常。这个自己验证完再交付的习惯比代码本身更让我安心。四、关键代码拆解单文件 HTML3000 多行挑三段核心逻辑说说。4.1 BFS 寻路战棋的灵魂。计算单位在移动力范围内可达的所有格子地形不同耗的移动力不同被占的格子直接跳过functionbfsReach(unit){constresnewMap();res.set(key(unit.c,unit.r),{cost:0,prev:null});constq[{c:unit.c,r:unit.r,cost:0}];while(q.length){constcurq.shift();for(const[dc,dr]ofDIRS){constnccur.cdc,nrcur.rdr;if(!inB(nc,nr))continue;if(unitAt(nc,nr))continue;// 有单位占据constkkey(nc,nr);constcostcur.costmoveCost(unit.type,nc,nr);if(costunit.mov)continue;// 超出移动力剪枝if(!res.has(k)||costres.get(k).cost){res.set(k,{cost,prev:[cur.c,cur.r]});q.push({c:nc,r:nr,cost});}}}returnres;}值得一提的是骑士的moveCost特判——马进不了山地森林这类规则写在算法里的细节比界面华丽更能体现战棋的味道。4.2 伤害计算一条公式串起克制、暴击、地形、魔法四大要素functioncalcDamage(atk,def,opts){optsopts||{};constadvatk.adv.includes(def.type);constcritChance0.08(atk.typesword||atk.typeknight?0.04:0);constcrit!opts.noCritMath.random()critChance;letdefValdef.def(opts.ignoreTerrain?0:TERRAIN[MAP[def.r][def.c]].def);if(atk.magic)defValMath.floor(defVal*0.3);// 魔法几乎无视防御letdmgatk.atk*(adv?1.5:1)*rand(0.85,1.15)*(opts.mult||1)-defVal;if(atk.sideenemy)dmg*DIFFICULTY[diffKey].aiDmg;dmgMath.max(1,Math.round(dmg));if(crit)dmgMath.round(dmg*1.5);return{dmg,crit,adv:adv!atk.magic};}±15% 的随机波动是故意的。战棋如果每刀伤害都一样玩家很快就算成 Excel 了留一点运气成分残血反杀的戏码才有登场机会。4.3 敌方 AI评分 阈值AI 每回合遍历所有可达格子和可攻击目标按伤害 击杀奖励 暴击加成打分挑分最高的下手constkills(t.hpd.dmg?diff.killBonus:0);constscored.dmgkills(d.crit?8:0);困难难度下还有个小心机只有当技能评分超过普通攻击评分的 85% 时才放技能。不然 AI 会无脑开大打着像挂机。这条阈值是我在测试里被 AI 连续三回合放技能磨死后让它自己调的——调完确实像个人了。五、跑起来的样子开始菜单把规则讲得很清楚兵种克制、地形效果、治疗师定位新玩家不用翻文档。模式、难度、地图三组选择一目了然。进入战斗就是经典的战棋布局左侧 12×8 棋盘森林、河流、村庄都有独立手绘风格的贴图右侧是部队列表、血条、经验条和战报日志。蓝方六人守左红方压右中间一条河把战场劈成两半——想过河就得付出每格 4 点移动力代价。选中单位是第一个要舒服的交互。点一下剑士可达格子全部染蓝一目了然技能瞄准也有独立状态。点「技能」按钮后面板会给出技能说明和操作提示右键随时反悔这套选中 → 高亮 → 确认 → 可取消的交互节奏是我玩过所有战棋游戏里最花时间打磨的部分码道一次就给对了。六、实测数据AI 辅助到底省了多少按我自己手动开发同规模项目的经验做了个对照估算环节纯手动开发华为云码道辅助我的感受需求澄清自己脑补写一半推翻重来1 轮对话三个问题定清楚省的不是时间是心态架构设计2~3 小时画图写文档10 分钟出 GDD文档质量够直接当博客素材编码实现800~1200 行写一天3000 行单轮 6 分 37 秒量级差距代码还能跑测试验证手写用例 2~3 小时22 项断言自动生成100% 通过覆盖度比我自己写的高Bug 修复逐行排查描述现象AI 定位修复它自己犯的错它自己改最快总计约 8~10 小时约 3 小时含人工验收一半以上的时间省下来了要说最大的变化不是代码写得快了而是注意力不再被打断。以前写前端是写两行代码、查一次文档、调一次样式来回横跳现在这些全压缩在一个对话流里我只负责想清楚要什么和验收拿到什么。当然那 3 小时里我并不闲着。每个版本我都会真的打开玩几局——AI 说测试通过是一回事你自己被敌方 AI 堵在河谷里打是另一回事。七、真人实测我替你们先打了一局为了写这篇博客我特意用普通难度完整跑了一局把过程截了下来。以下都是真实对局画面不含摆拍。开局双方隔河对峙。我按教科书打法推进剑士顶前面弓手和法师跟在后排治疗师缩在最后。红方则不紧不慢地压过来先看一眼右上角蓝 5红 6。是的我的法师已经在第一回合的交换里没了——它贪了一格输出位被红方弓手和法师集火两轮齐射送走连技能都没来得及放。AI 懂得抓脆皮这给我敲了第一记警钟。第二回合我方弓手摸到 (6,1)红方枪兵近在咫尺。选中、进射程、开火——这一箭打掉了红方枪兵一小截血。有意思的是下一回合红方治疗师居然摸上来把枪兵的血奶了回去。战报里那条「红方治疗师为「枪兵」恢复了生命」让我盯着屏幕愣了两秒——我根本没告诉过它残血单位要优先保护这种策略它自己会。而我的弓手没这么好命被红方追着打到剩 2/20蜷在河边动弹不得打到第三回合我就停手了——再打下去是给 AI 送人头。但短短三回合已经足够说明问题普通难度的 AI 会抢地形、集火脆皮、奶残血你能在它的走位里读出意图两个字。这就是前面那个 85% 技能阈值和评分模型在实际对局里的样子。八、主要BUG解决顺利的部分说得够多了说说翻车的。一截图里藏着原始 HTML 标签。写这篇博客重玩截图时我在开局截图的角落发现一行奇怪的文字第 1 回合 · b class蓝方/b行动——回合开始的 toast 提示用了textContent渲染代码里却塞了 HTML 标签标签原样糊在了玩家脸上。这个问题之前所有自动化测试都没报错因为语法没错、逻辑没错纯粹是人和机器对这段文字的理解不一致。修复只要一行把标签从 toast 文案里去掉。教训视觉回归测试测不出文案不该有标签这种事人类的眼睛仍是最后一道工序。二沙盒测试里的await不可全信。22 项断言在 Node.js vm 沙盒里全绿但循环内的异步行为和真实浏览器有细微差异。最后的解法很朴素每个测试跑之前重置一遍游戏状态。教训沙盒全绿只是及格线真机才是考场。三Git 凭据过期。往 AtomGit 推代码时之前保存的个人 Token 失效了折腾了一会儿才推上去。教训正经项目老老实实用部署密钥别拿个人 Token 凑合。九、想自己改速查手册代码全部表驱动二次开发门槛不高加新兵种在TYPES里加属性定义SKILLS里加技能ICONS里配个图标就行核心逻辑一行不用动。加新地图往MAPS数组里塞一个对象地形用数字表示——0 平原、1 森林、2 山地、3 河流、4 村庄、5 岩石。调难度DIFFICULTY里三个参数管到底敌方人数5/6/7、AI 伤害系数0.78/1.0/1.18、治疗概率40%/80%/100%。再往后我打算加音效开关和关卡编辑器远程联机WebSocket也在清单上做完再写一篇。总结一个周末一句话需求四轮迭代一款有兵种克制、地形博弈、技能、养成和双人模式的战棋游戏。搁去年我不敢想这事能在一个周末内以可玩的完成度交付。用下来我对 AI 辅助编程的理解是它不是替你写代码的打字员而是把想和做之间的距离压短了。需求澄清阶段它会逼你把模糊的想法说清楚实现阶段它把重复劳动全包了验收阶段它还自带测试和截图。人真正要做的只剩两件事——想清楚要什么以及保持怀疑。对了如果你也做了什么别只让它躺在本地。传上 AtomGit写篇博客哪怕被人指出十个 bug也比无人问津强。开源仓库https://atomgit.com/wdracky/walkchess在线体验浏览器直接打开games/tactics/index.html零依赖即开即玩。华为云码道https://developer.huaweicloud.com/codeartsco.html?sourcedmzntgwatomgit1sourceaddmzntgwatomgithd本文为原创内容首发 CSDN。转载请注明出处。

相关新闻

PS2022扩展面板未经正确签署:CEP签名与PlayerDebugMode修复

PS2022扩展面板未经正确签署:CEP签名与PlayerDebugMode修复

PS2022装上扩展面板,满怀期待点开,结果面板区域甩出一句"未经正确签署",旁边那个扩展图标灰着点不动,连配置按钮都是死的——这个场景我在同行群里见过太多次,也帮人远程排查过好几轮。很多人第一反应是&quo…

2026/9/20 4:14:00 阅读更多 →
CAD等高线转SU地形全流程:单位校准、沙盒创建与跨软件避坑

CAD等高线转SU地形全流程:单位校准、沙盒创建与跨软件避坑

简介:针对景观设计、城市规划与建筑可视化等应用场景,如何将CAD地形图高效转换为SketchUp三维地形?这份PDF教程面向需要掌握该流程的设计师与建模初学者,系统讲解从等高线提取到沙盒工具建模的完整流程,解决数据转换与…

2026/9/21 6:50:56 阅读更多 →
深入理解C++异常机制:从栈展开到异常安全的实战指南

深入理解C++异常机制:从栈展开到异常安全的实战指南

写了这么多年C,聊到异常,我见过两种极端:一种是干脆不用异常,全程错误码加 if 判断,遇到必须抛异常的三方库就包一层壳;另一种是什么都往上扔,一个函数抛出七八种异常,调用方根本不知…

2026/9/18 22:26:40 阅读更多 →

最新新闻

郑州seo顾问热狗hotdoger拆解3个实战案例教你搞定网站UI

郑州seo顾问热狗hotdoger拆解3个实战案例教你搞定网站UI

郑州seo顾问热狗hotdoger拆解3个实战案例教你搞定网站UI 不会写代码却想做个像样的官网?这种焦虑我懂。 很多老板或运营负责人,手里攥着预算,脑子里有画面,但对着设计师提的需求,心里直打鼓:这到底合不合理?怎么验收?怎么让网站既能留住人,又能被搜索引擎抓到?…

2026/9/21 6:44:12 阅读更多 →
2026最新wordpress调用字段避坑指南

2026最新wordpress调用字段避坑指南

2026最新wordpress调用字段避坑指南 找建站公司怕被坑高价?这是很多老板和运营新人的心头大患。很多公司报价动辄几万,说得天花乱坠,其实底层技术也就那样。2026最新的数据显示,超过60%的中小企业网站其实可以用更透明的开源方案搞定,比如WordPress。今天咱们不聊虚的,直接拆解Word…

2026/9/21 6:29:22 阅读更多 →
实战案例揭秘:wordpress删除rss的3个关键坑

实战案例揭秘:wordpress删除rss的3个关键坑

实战案例揭秘:wordpress删除rss的3个关键坑 域名解析改错,服务器配置没跟上,导致后台能改前台打不开?这种“域名服务器搞不懂”的噩梦,我在给客户做运维时见过太多次。上个月刚处理的一个 实战案例…

2026/9/21 6:15:47 阅读更多 →
3个实战案例拆解i网站建设报价,拒绝被坑

3个实战案例拆解i网站建设报价,拒绝被坑

3个实战案例拆解i网站建设报价,拒绝被坑 网站做好了没人访问?这不仅是流量焦虑,更是建站前的预算盲区。很多老板拿着“i网站建设”这个模糊的概念去询价,结果被报出从几千到几十万不等的天价,心里直打鼓。…

2026/9/21 6:03:14 阅读更多 →
网站建设的探讨与研究速查手册

网站建设的探讨与研究速查手册

网站建设探讨与研究:5大费用陷阱与选型注意事项 网站做好了没人访问,这是无数甲方老板和运营负责人深夜里最真实的焦虑。钱花出去了,服务器租了,域名买了,甚至SEO优化都上了,结果后台流量曲线平得像心电图停搏。很多人以为技术决定成败,但在我看来, 注意事项 往往比技术本身更决定生死。…

2026/9/21 5:46:06 阅读更多 →
Simulink与FlightGear联合仿真:飞行器控制算法三维可视化验证平台搭建

Simulink与FlightGear联合仿真:飞行器控制算法三维可视化验证平台搭建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 5:38:52 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/19 23:01:36 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/19 17:50:38 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →