图形界面数独游戏

一、项目背景

1.数独

**数独(Sudoku)**是一种数学逻辑游戏,游戏由9×9个格子组成,玩家需要根据格子提供的数字推理出其他格子的数字。

这种游戏只需要逻辑思维能力,与数字运算无关,所以数学不好的人也很适合。

虽然玩法简单,但提供的数字却千变万化,所以不少教育者认为数独是锻炼脑筋的好方法。

数独游戏由美国自由拼图发明者Howard Garns于1979年发明,日本出版商Nikoli于1986年发展,意思为“每个格子只有一个数字”。

数独规则:

数独游戏由九个3*3的九宫格呈3*3排列,构成9*9小格的矩阵,每个小格中只能填入1-9中的一个数字,对于数字的位置有如下限制:

  • 矩阵的每一行包含1-9的每一个数字,且不能重复

  • 矩阵每一列的数字不能重复(要求同行)

  • 每一个3*3的九宫格内,数字不能重复

一个填好的9*9矩阵称为终盘(Endgame),在终盘中去掉部分数字,供解谜者填写,称为初盘

2.图形用户界面

图形用户界面(Graphical User Interface,缩写:GUI)是指采用图形方式显示的计算机操作用户界面。

与早期计算机使用的命令行界面相比,除了降低用户的操作负担之外,对于新用户而言,图形界面对于用户来说在视觉上更易于接受,学习成本大幅下降,也让电脑的大众化得以实现。

虽然图形用户界面已经成为现代电脑的主要界面,然而这界面必定要透过在显示器的特定位置,以“各种美观、而不单调的视觉消息”提示用户“状态的改变”,势必得比简单的文字消息呈现,花上更多的电脑运算能力,计算“要改变显示器哪些光点,变成哪些颜色”,功能命令的设计也比较复杂,现代操作系统的图形复杂程度更远超早期的GUI。

3.QT

Qt是一个跨平台的C++应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,例如控制台工具和服务器。

Qt 被用于 OPIE、Skype、VLC media player、Adobe Photoshop Elements、VirtualBox与Mathematica以及被Autodesk、欧洲空间局、梦工厂、Google、HP、KDE、卢卡斯影业、西门子公司、沃尔沃集团,华特迪士尼动画制作公司、三星集团、飞利浦、Panasonic所使用。它是 Digia 公司的产品。

Qt使用标准的C++和特殊的代码生成扩展以及一些宏。通过语言绑定,其他的编程语言也可以使用Qt。 Qt是自由且开放源代码的软件,在GNU宽通用公共许可证(LGPL)条款下发布。所有版本都支持广泛的编译器,包括GCC的C++编译器和Visual Studio。

官方网站:Qt | Cross-platform software development for embedded & desktop

4.PyQT

PyQt 是一组用于Qt 公司的Qt 应用程序框架的 Python 绑定,可在 Qt支持的所有平台上运行,包括 Windows、macOS、Linux、iOS 和 Android。

PyQt6 支持 Qt v6,PyQt5 支持 Qt v5,PyQt4 支持 Qt v4。绑定是作为一组 Python 模块实现的,包含 1,000 多个类。

项目地址:PyQt5 · PyPI

二、项目目标

1.主要目标

编写一个拥有图形界面的数独游戏,功能包括:

  • 游戏主要界面、鼠标/键盘交互操作

  • 游戏过程控制(新建游戏、加载问题、重新开始、退出等)

  • 支持自动游戏求解

2.目标分解

  • 编写图像用户界面

  • 根据添加相关功能

三、技术选型

1.问题:图形界面框架如何选择?

Python常用第三方GUI图形界面框架如下,推荐使用PyQT、TKinter、PySimpleGUI来构建。

  • PyQT

  • TKinter

  • WxPython

  • PySide

  • Kivy

  • PySimpleGUI

2.问题:数独生成算法有那几种?

一般有两种数独生成算法:

  • 矩阵变换:对一个正确的终盘使用随机的矩阵变换,得到一个合乎规范的新终盘,此方法随机程度较差,结果与初始差别不大

  • 自动生成:利用求解算法,先随机填入一些初始格,后交给求解算法得到终盘

3.问题:数独求解算法有那几种?

目前,主流的数独求解算法有以下几种:

  • 暴力搜索:(效率低)

  • 舞蹈链算法:使用交叉链表优化搜索的算法

  • 基于约束满足问题的搜索算法:使用启发式函数优化搜索流程,使更快得解

  • 推理算法:使用逻辑推理的形式,推出问题内容,适用于简单数独求解,复杂数独将无法求解

四、课堂要求

1.提交项目结构

--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

main.py           项目执行主文件
README.md                   项目描述说明文档
requirements.txt    项目依赖包版本号(项目需要下载到本地执行,如果有第三方依赖包,必须填写)

2.标注核心算法函数位置

--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown

# 破解算法 位于main.py文件 第102行
def sudoku():pass

3.程序运行效果截图

编程大实践 数独破解 #Cilay #嵩天相关推荐

  1. 高德地图找房 # 编程大实践 # Python # 嵩天 # cilay

    高德地图找房 一.项目背景 1.高德开放平台 高德开放平台是国内技术领先的LBS服务提供商,拥有先进的数据融合技术和海量的数据处理能力. 服务超过三十万款移动应用,日均处理定位请求及路径规划数百亿次. ...

  2. 编程大实践 # python # 嵩天 # Cilay

    图像增强 一.项目背景 1.图像增强 图像增强是指增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合. 有目的地强调图像的整体或局部特性,将原来不清晰的 ...

  3. Spark综合大作业:RDD编程初级实践

    Spark综合大作业:RDD编程初级实践 实验配置:操作系统:Ubuntu16.04 | 环境:Spark版本:2.4.0 | 软件:Python版本:3.4.3. 文章目录 一.实验目的 二.实验平 ...

  4. 《网络编程综合实践》:高校爬虫(厦大,南理,华大)

    实验要求 用Python程序抓取一个或多个特定高校的历年录取分数线,并对抓取的数据格式化或存入sqllite或者mysql数据库. 选定高校 华侨大学https://zsc.hqu.edu.cn/ks ...

  5. Spark大数据分析与实战:Spark Streaming编程初级实践

    Spark Streaming编程初级实践 一.安装Hadoop和Spark 具体的安装过程在我以前的博客里面有,大家可以通过以下链接进入操作: Hadoop的安装:https://blog.csdn ...

  6. 编程大讲坛、坛坛是佳酿--编程大讲坛:C#核心开发技术从入门到精通

    [书名]编程大讲坛:C#核心开发技术从入门到精通 [作者]管西京 [ISBN] 978-7-121-09043-1 [出版社]电子工业出版社 [出版日期]2009年9月 [定  价]79.80元(含光 ...

  7. python录入学生信息网_干货满满 | Python趣味编程教学实践

    Python趣味编程教学实践 近几年间,Python 的火热有目共睹,在IEEE Spectrum 2020 编程语言 Top 10排行榜中,Python位居第一.这是因为Python 与人工智能.机 ...

  8. 编程大讲坛、坛坛是佳酿--编程大讲坛:Visual Basic核心开发技术从入门到精通...

    [书名]编程大讲坛:Visual Basic核心开发技术从入门到精通 [作者]薛小龙 [ISBN]978-7-121-09057-8 [出版社]电子工业出版社 [出版日期]2009年9月 [定  价] ...

  9. WCF与AJAX编程开发实践(1):AJAX基础概念和纯AJAX示例

    [0]开篇序言:     在<WCF分布式安全开发实践>系列文章之后,很想重新开启一个系列文章,来完善WCF的学习知识.思考很久,决定写一下WCF和AJAX学习的文章,取名为<WCF ...

最新文章

  1. 因用了Insert into select语句,美女同事被开除了!
  2. [Bash] Search for Text with `grep`
  3. 【转载】在对话框中加入属性页
  4. 由点到面(面试经验)
  5. 网站为什么要做优化?
  6. 第二章指南(4.2)添加 Controller
  7. Java进阶面试资料无偿分享!真香系列
  8. 详述白盒测试的逻辑覆盖法的条件判定覆盖及其优缺点
  9. pinpoint性能检测工具搭建(APM)
  10. Oracle AWR ASH
  11. win10虚拟内存怎么设置最好_想提高win10操作系统性能,设置合适的虚拟内存大小非常关键...
  12. k8s核心技术-集群安全机制(RBAC介绍)---K8S_Google工作笔记0039
  13. 如何编译并修改FBReader的package(安卓平台)
  14. 孔浩老师SpringMVC视频总结
  15. matlab求偏相关系数,计算皮尔逊相关系数t检验——Matlab
  16. 2018中国双态运维用户大会于1月13日在京举行
  17. 【计算机网络 (谢希仁) 习题题解】第5章 运输层 (5)——TCP的运输连接管理
  18. sql查询本月数据,当天数据
  19. 使用python定义简单工资扣税实际收入函数
  20. nedc和epa续航里程什么意思_NEDC、WLTP、EPA续航哪个才最靠谱?

热门文章

  1. [Eclipse]GEF入门系列(三、应用实例)
  2. java微信小程序支付-回调(Jsapi-APIv3)
  3. 已解决java.lang.Integer cannot be cast to java.lang.String异常的正确解决方法,亲测有效!!!
  4. Spark技能成长,CSDN就go了!
  5. 用python写一元二次方程_使用Python解一元二次方程!
  6. Design contains shelved or modified (but not repoured) polygons. The result of DRC is not correct.
  7. Apifox:详细使用教程,带你轻松拿捏
  8. 大学生课程设计 ------ Java Web课程设计(学生成绩管理系统03)
  9. 老牌安全公司CYBER ARK眼中的RPA部署安全问题
  10. 〖Python 数据库开发实战 - Python与MySQL交互篇⑰〗- 项目实战 - 实现用户管理 - 修改用户