编程大实践 数独破解 #Cilay #嵩天
圖形界面數(shù)獨(dú)游戲
一、項(xiàng)目背景
1.數(shù)獨(dú)
**數(shù)獨(dú)(Sudoku)**是一種數(shù)學(xué)邏輯游戲,游戲由9×9個(gè)格子組成,玩家需要根據(jù)格子提供的數(shù)字推理出其他格子的數(shù)字。
這種游戲只需要邏輯思維能力,與數(shù)字運(yùn)算無(wú)關(guān),所以數(shù)學(xué)不好的人也很適合。
雖然玩法簡(jiǎn)單,但提供的數(shù)字卻千變?nèi)f化,所以不少教育者認(rèn)為數(shù)獨(dú)是鍛煉腦筋的好方法。
數(shù)獨(dú)游戲由美國(guó)自由拼圖發(fā)明者Howard Garns于1979年發(fā)明,日本出版商N(yùn)ikoli于1986年發(fā)展,意思為“每個(gè)格子只有一個(gè)數(shù)字”。
數(shù)獨(dú)規(guī)則:
數(shù)獨(dú)游戲由九個(gè)3*3的九宮格呈3*3排列,構(gòu)成9*9小格的矩陣,每個(gè)小格中只能填入1-9中的一個(gè)數(shù)字,對(duì)于數(shù)字的位置有如下限制:
-
?
矩陣的每一行包含1-9的每一個(gè)數(shù)字,且不能重復(fù)
-
?
矩陣每一列的數(shù)字不能重復(fù)(要求同行)
-
?
每一個(gè)3*3的九宮格內(nèi),數(shù)字不能重復(fù)
一個(gè)填好的9*9矩陣稱為終盤(Endgame),在終盤中去掉部分?jǐn)?shù)字,供解謎者填寫,稱為初盤。
2.圖形用戶界面
圖形用戶界面(Graphical User Interface,縮寫:GUI)是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。
與早期計(jì)算機(jī)使用的命令行界面相比,除了降低用戶的操作負(fù)擔(dān)之外,對(duì)于新用戶而言,圖形界面對(duì)于用戶來(lái)說(shuō)在視覺(jué)上更易于接受,學(xué)習(xí)成本大幅下降,也讓電腦的大眾化得以實(shí)現(xiàn)。
雖然圖形用戶界面已經(jīng)成為現(xiàn)代電腦的主要界面,然而這界面必定要透過(guò)在顯示器的特定位置,以“各種美觀、而不單調(diào)的視覺(jué)消息”提示用戶“狀態(tài)的改變”,勢(shì)必得比簡(jiǎn)單的文字消息呈現(xiàn),花上更多的電腦運(yùn)算能力,計(jì)算“要改變顯示器哪些光點(diǎn),變成哪些顏色”,功能命令的設(shè)計(jì)也比較復(fù)雜,現(xiàn)代操作系統(tǒng)的圖形復(fù)雜程度更遠(yuǎn)超早期的GUI。
3.QT
Qt是一個(gè)跨平臺(tái)的C++應(yīng)用程序開發(fā)框架。廣泛用于開發(fā)GUI程序,這種情況下又被稱為部件工具箱。也可用于開發(fā)非GUI程序,例如控制臺(tái)工具和服務(wù)器。
Qt 被用于 OPIE、Skype、VLC media player、Adobe Photoshop Elements、VirtualBox與Mathematica以及被Autodesk、歐洲空間局、夢(mèng)工廠、Google、HP、KDE、盧卡斯影業(yè)、西門子公司、沃爾沃集團(tuán),華特迪士尼動(dòng)畫制作公司、三星集團(tuán)、飛利浦、Panasonic所使用。它是 Digia 公司的產(chǎn)品。
Qt使用標(biāo)準(zhǔn)的C++和特殊的代碼生成擴(kuò)展以及一些宏。通過(guò)語(yǔ)言綁定,其他的編程語(yǔ)言也可以使用Qt。 Qt是自由且開放源代碼的軟件,在GNU寬通用公共許可證(LGPL)條款下發(fā)布。所有版本都支持廣泛的編譯器,包括GCC的C++編譯器和Visual Studio。
官方網(wǎng)站:Qt | Cross-platform software development for embedded & desktop
4.PyQT
PyQt 是一組用于Qt 公司的Qt 應(yīng)用程序框架的 Python 綁定,可在 Qt支持的所有平臺(tái)上運(yùn)行,包括 Windows、macOS、Linux、iOS 和 Android。
PyQt6 支持 Qt v6,PyQt5 支持 Qt v5,PyQt4 支持 Qt v4。綁定是作為一組 Python 模塊實(shí)現(xiàn)的,包含 1,000 多個(gè)類。
項(xiàng)目地址:PyQt5 · PyPI
二、項(xiàng)目目標(biāo)
1.主要目標(biāo)
編寫一個(gè)擁有圖形界面的數(shù)獨(dú)游戲,功能包括:
-
?
游戲主要界面、鼠標(biāo)/鍵盤交互操作
-
?
游戲過(guò)程控制(新建游戲、加載問(wèn)題、重新開始、退出等)
-
?
支持自動(dòng)游戲求解
2.目標(biāo)分解
-
?
編寫圖像用戶界面
-
?
根據(jù)添加相關(guān)功能
三、技術(shù)選型
1.問(wèn)題:圖形界面框架如何選擇?
Python常用第三方GUI圖形界面框架如下,推薦使用PyQT、TKinter、PySimpleGUI來(lái)構(gòu)建。
-
?
PyQT
-
?
TKinter
-
?
WxPython
-
?
PySide
-
?
Kivy
-
?
PySimpleGUI
2.問(wèn)題:數(shù)獨(dú)生成算法有那幾種?
一般有兩種數(shù)獨(dú)生成算法:
-
?
矩陣變換:對(duì)一個(gè)正確的終盤使用隨機(jī)的矩陣變換,得到一個(gè)合乎規(guī)范的新終盤,此方法隨機(jī)程度較差,結(jié)果與初始差別不大
-
?
自動(dòng)生成:利用求解算法,先隨機(jī)填入一些初始格,后交給求解算法得到終盤
3.問(wèn)題:數(shù)獨(dú)求解算法有那幾種?
目前,主流的數(shù)獨(dú)求解算法有以下幾種:
-
?
暴力搜索:(效率低)
-
?
舞蹈鏈算法:使用交叉鏈表優(yōu)化搜索的算法
-
?
基于約束滿足問(wèn)題的搜索算法:使用啟發(fā)式函數(shù)優(yōu)化搜索流程,使更快得解
-
?
推理算法:使用邏輯推理的形式,推出問(wèn)題內(nèi)容,適用于簡(jiǎn)單數(shù)獨(dú)求解,復(fù)雜數(shù)獨(dú)將無(wú)法求解
四、課堂要求
1.提交項(xiàng)目結(jié)構(gòu)
--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
main.py 項(xiàng)目執(zhí)行主文件 README.md 項(xiàng)目描述說(shuō)明文檔 requirements.txt 項(xiàng)目依賴包版本號(hào)(項(xiàng)目需要下載到本地執(zhí)行,如果有第三方依賴包,必須填寫)2.標(biāo)注核心算法函數(shù)位置
--javascripttypescriptbashsqljsonhtmlcssccppjavarubypythongorustmarkdown
# 破解算法 位于main.py文件 第102行 def sudoku():pass3.程序運(yùn)行效果截圖
?
總結(jié)
以上是生活随笔為你收集整理的编程大实践 数独破解 #Cilay #嵩天的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Tipask,Tipask建站,Tipa
- 下一篇: 空气净化器哪个品牌口碑好 空气净化器除甲