此项目适合作为MATLAB入门练习用,能够对MATLAB的部分功能(GUI,神经网络工具箱等)进一步的熟悉,和加深对于代码逐句解释优势的感受。文章改自本人课设报告,若有具体实现问题欢迎与我交流~

游戏框架:

效果一览:

运行程序后,进入开始界面:

点击开始后,选择难度梯度,梯度分为三种,来自于分别存储的数独数据(由于图像失真,界面略丑请忽视TAT):

选择难度后,进入游戏界面:

点击开始将矩阵数据传递给GUI:

胡乱填几个数字进去,点击完成弹出提示框:

点击确定查看答案,则后台将调用函数解算矩阵:

解算过程:

自编写的解算代码框架:

经测试,代码能够解算大多数数独,面对过难的数独可能出现内存不足的情况,理论上均可完成求解,因为代码实际上是使用一种稍微巧妙的穷举。

function sodu1 = bs(sodu1)
global can;
global i;
global can1;
global sodun;
global flag;
global sodua;
if i>=81 || flag == 1flag =1;sodua = sodu1;return;
endif isempty(cell2mat(can(i)))%判断队列是否为空i = i + 1;bs(sodu1);
elset = cell2mat(can(i));%得到候选t1 = length(t);%得到候选矩阵长度c = 0;%计数for j = 1:t1c = c + 1;sodu1(i) = t(j);%预填充t2 = mod(i,9);if t2 == 0 t2 = 9;endif Check(t2,ceil(i/9),sodu1,t(j))%判断填充是否成功sodu1 = allsolve(sodu1);%addi = i + 1;bs(sodu1);%成功时递归if i>=81 || flag == 1flag =1;return;endelsesodu1(i) = 0;%失败时,清楚填充内容can = deletecell(can,i,1);%在本次遍历中,删除数组内容 endif c == t1can(i)=can1(i);%回补当前位置候选列,使其不影响判断for j = i:81sodu1(j) = sodun(j);endi = i - 1;%回溯while length(cell2mat(can(i)))<=1can(i) = can1(i);%回溯的同时回补候选列sodu1(i) = sodun(i);%回溯的同时重置各位置i = i - 1;%寻找本次遍历中有多个候选列的节点endif length(cell2mat(can(i)))>1can = deletecell(can,i,1);%删除回溯位置首个元素sodu1(i) = sodun(i);%重置回溯点endbs(sodu1);%递归endend
end
end

作者尚在入门学习阶段,有建议欢迎交流,有问题我都会尽力解答~

MATLAB数独||MATLAB入门项目——数独游戏的设计与实现及简易求解算法相关推荐

  1. C语言入门项目——扫雷游戏(ege图形库+codeblocks)

    扫雷游戏适合C练手,会C基本语法就可以尝试.需要导入ege图形库(文章后半部分写了ege如何导入codeblocks,以及我用到的ege函数) 一.先介绍如何将ege图形库导入codeblocks: ...

  2. 刚入门学3D游戏美术设计最常见的几个问题

    目前市面上随着3D游戏的兴起以及VR的盛行,加上元宇宙的概念,3D游戏美术设计师的需求越来越广泛,市场缺口大,人才需求供不应求. 在大多数人印象中,这个行业似乎很难入门,没有美术基础,好像丝毫没有机会 ...

  3. [WebAssembly 入门] 实现数独游戏 - 如何优雅的组织Rust代码

    title: [WebAssembly 入门] 实现数独游戏 - 如何优雅的组织Rust代码 date: 2018-4-23 22:55:00 categories: WebAssembly, 笔记 ...

  4. 软件工程基础-个人项目-数独游戏

    软件工程基础-个人项目-数独游戏 ----------------------------------------------------------------------------------- ...

  5. [软件工程基础]个人项目——数独

    目录 一.Github项目地址 二.PSP估计 三.解题思路描述 3.1. 生成终局 3.1.1.暴力搜索--回溯法 3.1.2.模板法 3.2.求解数独 3.2.1.暴力搜索--回溯法 3.2.2. ...

  6. 结对项目——数独扩展

    GitHub地址:https://github.com/Liu-SD/SudoCmd (这个地址是命令行模式数独的仓库,包含了用作测试的BIN.DLL核心计算模块地址是:https://github. ...

  7. 软件工程基础课-个人项目-数独

    一.项目地址 二.PSP 三.解题思路 四.设计实现过程 4.1 代码风格规范 4.2 函数关系图 五.程序性能分析及改进 六.代码说明 七.单元测试与代码覆盖率分析 八.项目总结 8.1 个人的提升 ...

  8. MATLAB App Designer入门实战(一)

    最近也是在研究MATLAB App Designer,开这样的一个系列主要是为了记录我在研究App Designer时遇到的一部分问题的解决,和一部分有趣的想法,每一篇文章会展示如何将一个项目mlap ...

  9. 《数独游戏的设计与实现》

    数独游戏的设计与实现 一.数独游戏简介 数独游戏,是一种数学智力拼图游戏,是"独立的数字游戏"的简称,源自18世纪末的瑞士,后在美国发展,在日本得以发扬光大. 数独游戏可以训练玩家 ...

最新文章

  1. kill qz _e epi,eu,ex,exo out3
  2. 编程之美-俄罗斯方块游戏方法整理
  3. JAVA IO修改文本内容
  4. java cuba_CUBA平台–新的Java企业应用程序框架
  5. AE 新建项目(一)(持续更新,做到哪算哪)
  6. C#面向对象名词比较
  7. ios keychain 不被清理_iOS签名机制和说明文件【ios企业签名吧】
  8. 伯努利数 + 自然数幂( Zoj2865 + 51Nod1228 + 51Nod1258 + 51Nod1822)
  9. PHP中使用PDO操作MySQL
  10. TCMPC进阶之路——accumulate函数应用
  11. github构建自己的代码库
  12. 4g网卡MF831移植到smart210
  13. linux抓取vlan数据包,如何抓取 带VLAN tag的包
  14. IIR和FIR滤波器设计低通滤波器
  15. python3 常用模块_python3-常用模块之re
  16. EPICS -- autosave模块使用示例
  17. ubuntu20.04使用微信,附高分屏适配方法
  18. 华熙LIVE·五棵松再添新地标,北京市新能源汽车旗舰体验中心正式落户!
  19. 全新Java开发思维导图
  20. jrxml 和 fr3文件的画图和编辑

热门文章

  1. python泊松分布计算_当λ很大时泊松分布如何计算?
  2. 六个网络安全专业人员就有一个年薪十万英镑
  3. iOS马甲包上架总结
  4. jpa报错:Removing a detached instance
  5. MyBatis 教程
  6. android 上下左右滑动的表格,适用小程序的表格table,冻结行,冻结列,可左右,上下滑动...
  7. 「游戏建模」zbrush的15个雕刻小技巧
  8. 实现 长链接变 短 链接
  9. 贺岁片尴尬撞车引爆新闻热点,区块城市紧急声明尊敬苹果公司
  10. Struts 2中s:action标签的用法