鸿蒙数独小游戏实战:用 ArkTS + ArkUI 从零做一个纯端侧 App
鸿蒙数独小游戏实战:用 ArkTS + ArkUI 从零做一个纯端侧 App
今天在华为云鸿蒙开发实践中心跑通了「数独小游戏」这个入门案例,全程云端零环境配置,浏览器里就能编译、打包、跑模拟器。这篇记录一下从环境到关键实现的全过程,给同样想入门 HarmonyOS 的同学省点踩坑时间。
一、为什么选这个案例
数独是经典的逻辑推理游戏,但作为练手项目它把鸿蒙开发里最核心的三件事都串起来了:
- 声明式 UI 渲染:9×9 棋盘要随状态实时刷新,正好练 @State / @Prop 和 @Builder 组件复用
- 纯函数逻辑层:冲突校验和解题判定必须和 UI 解耦,便于固定样例复核
- 端侧数据持久化:通关进度要落本地文件,重启不丢
案例本身是入门级,预计 0.5~1 小时,适合有 ArkTS / ArkUI 基础的人。
二、云端开发环境怎么起
不需要装 DevEco Studio,直接进鸿蒙开发实践中心:
- 登录华为云账号,打开案例详情页
- 点「云端实践」,系统自动创建独享容器,编辑器、编译器、模拟器全部就绪
- 在「设备管理 → 鸿蒙云手机」里连上云手机,让 AI 智能体把应用装上去跑起来
整个环境准备是秒级的,这也是云端实践相比本地开发最大的优势——省掉了 SDK 下载、签名配置这些勤退环节。
三、核心实现拆解
1. 棋盘渲染与实时冲突校验
棋盘用 @State 驱动,每个格子是一个 CellData。填数字时调用 computeConflicts,它返回一个冲突掩码,棋盘据此把冲突格高亮成红色。关键设计是逻辑与 UI 解耦:computeConflicts 只认数字,不认界面,所以可以脱离 UI 单元测试。
2. 54 题确定性题库
题库不是写死的 54 道,而是用确定性 PRNG(mulberry32)生成:一个合法的 9×9 基准终盘,通过行交换、列交换、数字替换做「置换」保持合法性,再「盲挖」随机空格。同一个种子永远生成同一套题,结果可复现。简单 / 中等 / 困难各 18 题。
3. 进度持久化
这里有个容易踩的坑:用 dataPreferences 单例缓存,跨页面会读到旧值。案例的解法是直接用 @ohos.file.fs 直读进度 JSON 文件,每次从磁盘读最新值,规避单例缓存;首页 onShow 时重新 load(),保证进度实时刷新。
四、验收清单
- 填入同行/同列/同宫重复的数字 → 冲突格即时红色高亮
- 预填数字不可修改
- 正确填满整盘 → 弹出庆祝卡片
- 通关后返回首页进度 +1,重启应用进度保留
- 重置进度有二次确认
五、小结
这个案例最值得学的不是数独本身,而是那套「UI 层 / 纯函数逻辑层 / 文件存储层」的分层思路。把逻辑抽成纯函数后,算法正确性可以用固定输入输出复核,截图只能证明界面状态、不能替代算法验证——这一点在做任何端侧应用时都成立。
下一步准备在这个基础上加个「笔记模式」(每格标记候选数字),顺便练一下 @Builder 的嵌套布局。
- 点赞
- 收藏
- 关注作者
评论(0)