數(shù)獨(dú)游戲小程序
數(shù)獨(dú)的游戲規(guī)則很簡(jiǎn)單:在九個(gè)九宮格里,填入1到9的數(shù)字,讓每個(gè)數(shù)字在每個(gè)行、列及九宮格里都 只出現(xiàn)一次就可以過關(guān)了!?雖然游戲的規(guī)則十分簡(jiǎn)單,但很多人在沒有計(jì)算機(jī)輔助時(shí),常常會(huì)不小心造成違規(guī)狀況。
下面是我做的一個(gè)數(shù)獨(dú)小程序 1.0 版本,目前功能如下:
選擇外觀;
數(shù)獨(dú)自動(dòng)出題;
數(shù)獨(dú)自動(dòng)解題;
游戲計(jì)時(shí)功能;
開啟解答輔助功能,出錯(cuò)提示;
開啟解答輔助功能,輔助線;
程序基于Java Swing,運(yùn)行需要JRE1.6以上版本。
?
可雙擊執(zhí)行的JAR包,點(diǎn)此下載。(Napkin的LookAndFeel蠻好玩,我就一起弄在里面了)
程序的源碼,點(diǎn)此下載。(有興趣修改源碼的朋友可以DIY出自己喜歡的版本。)
或者也可以從 http://groups.google.com/group/afun?這個(gè)group的files里面找到上面的兩個(gè)文件。
或者也可以從 http://groups.google.com/group/afun?這個(gè)group的files里面找到上面的兩個(gè)文件。
對(duì)數(shù)獨(dú)有興趣的朋友可以玩一下這個(gè)小工具,歡迎留下寶貴意見,讓這個(gè)小程序更完善。
可能我會(huì)另開一篇日志說一下Source Code相關(guān)的東西。
?
Figure: 填值的出錯(cuò)提示
演示如何使用輔助線功能:
首先選中Enable help system選項(xiàng),
然后選擇按鈕 1 ,這時(shí)候關(guān)于 1 的輔助線開啟,把不能填1的單元格都畫了線,畫線規(guī)則是,1所在的行畫桃紅色橫線,1所在的列畫橙色豎線,1所在的九宮格畫粉色X線,如下圖,這時(shí)候我們發(fā)現(xiàn),在第五行只有第二列這一單元格格沒有被畫上線,那么這一個(gè)肯定只能填上1。
這時(shí)候我們就可以把1填入到 第五行第二列,這時(shí)輔助線會(huì)自動(dòng)更新。如下圖,此時(shí)沒有可以確定填入1的單元格了,我們可以換一個(gè)數(shù)看輔助線。
填入3之后的圖如下:
自動(dòng)解答功能可能出現(xiàn)的異常情況
當(dāng)題目比較復(fù)雜的時(shí)候,可能會(huì)彈出如下的提示異常的對(duì)話框,這是因?yàn)榻獯饠?shù)獨(dú)用了遞歸的解法,難度大時(shí)遞歸深度很深,導(dǎo)致棧溢出,可以通過運(yùn)行JVM時(shí)指定線程棧大小的方法來解決這個(gè)問題。