当前位置: 首页 > news >正文

自己设计一道数独:LibreSudoku自定义出题功能完整流程演示

自己设计一道数独:LibreSudoku自定义出题功能完整流程演示

【免费下载链接】Libre-SudokuLibreSudoku - Sudoku app for android built with Kotlin + Jetpack Compose + Material3项目地址: https://gitcode.com/gh_mirrors/li/Libre-Sudoku

LibreSudoku 是一款用 Kotlin + Jetpack Compose + Material3 打造的安卓数独 App。本篇完整演示它的自定义出题功能:从新建棋盘、填入数字到一键保存,几分钟就能设计出属于你自己的数独题目,并自动校验"唯一解"。

功能入口:如何进入自定义出题界面 📱

自定义出题功能藏在"文件夹"管理页里,适合想给自己建题库的玩家:

  1. 打开 App,点击底部的Folders(文件夹),进入题集管理页;
  2. 点击页面上的"新建数独"入口,即可进入出题界面。

出题界面的主逻辑位于 CreateSudokuScreen.kt,状态与保存逻辑在 CreateSudokuViewModel.kt。

第一步:选择棋盘规格与难度 ✏️

进入界面后,顶部一排下拉菜单就是出题的"骨架":

  • 棋盘规格:支持 9x9、6x6、12x12 三种尺寸(见 GameType.kt)。注意:规格只能在"新建"时切换,编辑已有题目时该菜单会隐藏,避免误操作。
  • 难度标签:Easy、Moderate、Hard、Challenge、Custom 五档(定义在 GameDifficulty.kt)。自定义出题时选Custom最合适——难度标签不影响游戏性,只影响统计页的分类展示。

第二步:在棋盘上填入数字 🎯

出题界面与游玩界面共用同一套输入体验,上手零成本:

操作说明
点格子 + 点数字逐格填数,再点同一数字可取消
先选数字再点格子开启"数字优先"输入法后,长按数字键进入批量填数模式
撤销 / 重做底部工具栏一键回退、恢复(CreateSudokuViewModel.kt 中的 undo/redo 管理)
橡皮擦直接清空当前选中格子

每填一个数字,App 都会实时检查行、列、宫是否冲突,冲突格子会立即标红——出题时的"自我排错"完全不用担心。

进阶玩法:用字符串一键导入题目 ⚡

如果你有现成的题面文本,不必手敲 81 个格子。点击右上角菜单,选择Set from a string(用字符串导入)

  • 粘贴一行数字,空格用0.表示,例如530070000600195000...
  • 长度自动识别棋盘:36 位 → 6x6,81 位 → 9x9,144 位 → 12x12(解析逻辑见 SudokuParser.kt)。

格式不合法时输入框会标红提示,确认无误后棋盘瞬间铺满,非常适合把收藏的题面搬进自己的题库。

第三步:保存题目,自动通过唯一解校验 💾

填好后点击顶部Save。此时 App 会先做一道"守门"检查:内置 QQWing 求解器会解一遍你的题面(checkGame 校验流程):

  • 唯一解:保存成功,题目进入数据库——同时存下题面和完整答案(saveToDb 入库逻辑),随后即可在对应文件夹中开局;
  • 无解:弹窗提示 "Invalid puzzle",说明题面本身矛盾,回去检查红色冲突格;
  • 多解:弹窗提示题目不唯一——标准数独必须有唯一解,建议再挖掉或补上几个提示数字。

保存后的题目会显示在文件夹列表的"最近游玩"中,支持继续编辑微调,形成"出题 → 校验 → 入库 → 再优化"的完整闭环。

常见问题 ❓

Q:为什么编辑旧题时看不到规格切换菜单?防止误改棋盘尺寸,规格仅在新建时可选,这是刻意设计的限制。

Q:题目保存失败一般是什么原因?几乎都是多解或无解。用橡皮擦多擦几个格(降低提示数)通常能收敛到唯一解。

Q:自定义题目会影响统计数据吗?会。完成游戏后,题目会按你设置的难度标签计入 Statistics 统计页(如 Custom 分类)。


从一块空白棋盘到入库可用的题目,LibreSudoku 的自定义出题功能只需三步:选规格 → 填数字 → 保存校验。整套流程源码集中在 ui/create_edit_sudoku 模块,如果你也想给 App 贡献功能,可以从这里读起。

【免费下载链接】Libre-SudokuLibreSudoku - Sudoku app for android built with Kotlin + Jetpack Compose + Material3项目地址: https://gitcode.com/gh_mirrors/li/Libre-Sudoku

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4226083.html

相关文章:

  • 基于SpringBoot的网购优选服务系统设计网站(源码+lw+部署文档+讲解等)
  • 反向工程nest-router源码:forRoutes背后的MODULE_PATH元数据魔法
  • 基于SpringBoot的甜品店在线点餐及预约系统毕业设计项目源码文档
  • 创维SK-L1002灵犀屏深度优化指南:免刷机安装第三方桌面,秒变流畅安卓机顶盒|手机一键操作|纯技术教程
  • ip-location-zh 完全指南:PHP 如何 3 分钟搞定无需数据库的 IP 地理位置查询?
  • MinIO 停止维护怎么办?Docker 迁移 RustFS 实战:数据零丢失
  • LX Music 桌面版:免费音乐聚合播放器完整指南
  • Outfit 字体完整指南:9 种字重免费商用,3 分钟装进系统
  • Shallows序列化能力清单:JSON、Plist与String存储映射全覆盖指南
  • 数字化转型全景解析:标准化、信息化、数字化与智能化的演进路径与实践指南
  • 为什么Intel放弃Hyperscan:Vectorscan项目背后的开源反击战
  • Java面试前,我建议你重点复习这几个核心知识点
  • 谷歌数据分析 V 笔记(二)
  • 2026年口碑出众的表型平台生产厂家盘点,值得你深入了解
  • 3步完成微信聊天记录导出全指南:免费永久保存为HTML和Word
  • 如何用 Cosmic Ray 的 cr-rate 诊断测试薄弱点:变异存活率分析完全教程
  • Paperless-ngx 完整上手指南:五步把纸质文件变成可搜索档案
  • 如何使用 DALL-E 2?
  • 2026年,揭秘宜昌市伍家岗区那些超好的差旅型酒店门店!
  • 朱雀三号首次陆地回收
  • 金融工程Financial Engineering Competition-2回归MSE优化
  • 银行模拟器,装x神器 吊打市面上所有模拟器,泡妹神器
  • 构建机器学习模型识别图像AI生成内容的检测
  • 中小团队的后端技术栈搭配:稳定、高效、易维护
  • TorchOpt API参考速查:从优化器到Transform的完整函数地图
  • 单靠死工资不够?这本《AI创富手册》教你用AI开启第二收入曲线
  • JobRadar:基于本地大模型的职位匹配评分与智能筛选指南
  • 推理增强工程实践:DeepSeek-Reasonix与esengine组合落地指南
  • 贪心算法的思路和典型例题
  • AI找矿实战:如何用机器学习圈定高纯石英靶区