news 2026/8/26 15:25:53

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自己设计一道数独: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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/26 15:24:29

基于SpringBoot的网购优选服务系统设计网站(源码+lw+部署文档+讲解等)

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

作者头像 李华
网站建设 2026/8/26 15:18:47

反向工程nest-router源码:forRoutes背后的MODULE_PATH元数据魔法

反向工程nest-router源码:forRoutes背后的MODULE_PATH元数据魔法 【免费下载链接】nest-router Router Module For Nestjs Framework 🚦 🚀 项目地址: https://gitcode.com/gh_mirrors/ne/nest-router nest-router 是 NestJS 生态中最…

作者头像 李华
网站建设 2026/8/26 15:10:45

基于SpringBoot的甜品店在线点餐及预约系统毕业设计项目源码文档

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

作者头像 李华
网站建设 2026/8/26 15:01:34

MinIO 停止维护怎么办?Docker 迁移 RustFS 实战:数据零丢失

前言 MinIO 说停就停,线上的文件服务还得接着跑。 2025 年 12 月,MinIO 官宣社区版进入维护模式。2026 年 2 月,仓库归档只读:不再有提交,CVE 不再修复,官方资源全面转向商业版 AIStor——订阅制&#xf…

作者头像 李华