九宮格數獨遊戲

2021-09-17 23:36:40 字數 1430 閱讀 8955

乙個九宮格數獨遊戲,以下是思路和html檔案,由於水平有限沒有使用什麼比較高階的語法,都是一些基礎的東西,所以**比較長。

思路是把數獨理解成乙個二維陣列,只要每次遊戲開始隨機生成乙個符合九宮格規則的9*9二維陣列即可。(如果不隨機就可以記答案,遊戲就沒意思了)

1.1輸入原型陣列,這個陣列要符合規則

1.2打亂這個陣列生成答案陣列:使用能保持陣列符合規則的打亂方式。比如我用的是1-3,4-6,7-9列以豎排為單位先各自內部打亂,再1-3,4-6,7-9,三個豎排為單位換位置,行的打亂方式也是同理。這種打亂方式可以讓原陣列的乙個位置的數,可能出現在答案陣列的任何乙個位置,同時每次變換後,陣列都符合九宮格規則

兩個問題:一是如何確定顯示哪些已知數,二是以何種方式顯示在網頁中

2.1選已知數:其實可以理解為隨機的選一些位置(數獨遊戲的已知數字置是可以變得),並將位置對應的答案陣列中的數顯示出來。這裡我使用了9*9的控制陣列,控制陣列打亂後,凡是為1的位置,對應答案陣列的數就要顯示

2.1.1生成控制陣列

例[0,1,0,0]

[0,1,0,1]

[1,0,1,0]

[0,0,0,1]

這只乙個4*4的例子而已,可以根據難度的需要調節1的數量

2.1.2打亂控制陣列生成實際控制陣列(目的是使已知數顯示位置隨機,且不會集聚)

使用1.2的打亂方式,只要初始控制陣列每個單元格都有1,這個方式就不會出現1的位置聚在一起的情況。

2.2顯示方式

2.2.1框架

我使用了在**(table)中巢狀文字框的形式,這樣的好處是後面容易獲取填寫的資料參與正誤判斷,且**容易實現九宮格的效果,我無需新增許多css樣式。

2.2.2已知數顯示

控制陣列為1的位置對應的**位置內的文字框,value值設為對應答案陣列值的,同時將這個文字框設為唯讀,這樣文字框可以顯示固定的已知值,玩家不能修改那個單元格

限制只能輸入乙個數字1-9

實現:先正規表示式限制數字以外的東西,一旦輸入onkeyup呼叫函式將value刷回為空

然後將輸入數字parseint,若為0,刷回空字元,若大於9,則%10取餘

我使用getelementid等方法,獲取文字框的value,然後生成乙個玩家陣列,和答案陣列進行是否相等的方式比較

具體實現:兩個for迴圈,以及正誤控制變數k,初始化為0,如果有乙個位置數不相等,將k賦值為1,若迴圈結束後,k為1,則顯示答錯了,若k仍為0則顯示恭喜答對了

功能:這個功能是按下乙個按鈕後,所有文字框會顯示答案,原理是呼叫onclick啟用乙個函式,用兩個for迴圈,將9*9的答案刷如文字框的value

6.2難度選擇功能,使用隱藏部分div,來實現四宮格和九宮格的各自出現

困難模式

規則:根據已給的數字,將所有空格填上數字,要求每行每列以及九個小九宮格內都要有1-9

數獨遊戲九宮格

初步定義 使用資料結構的方式實現九宮格數獨遊戲 include stdio.h 標準輸入輸出標頭檔案 include conio.h 包含getch 的標頭檔案 include stdlib.h 包含rand 的標頭檔案 include assert.h 包含assert 的標頭檔案 include...

數獨 九宮格 破解

說到數獨,或者九宮格,我想大家一定都不陌生,初中高中看的各種雜誌上都有這種益智遊戲,現在的智慧型手機上也有人寫出了這種遊戲,閒暇時候玩玩也能活躍一下腦子。還有看 模仿遊戲 這部電影裡面,圖靈在選拔隊友的時候好像出的也是數獨的題目。我本來對數獨不是太感興趣,但是乙個偶然的機會看到朋友在玩這個遊戲,就想...

遊戲九宮格

數獨的初始化 數獨行列的檢驗 void clssd 初始化函式,所有位置設為0 int line int line,int value 檢驗行 return 1 int row int row,int value 檢驗列 return 1 int square int line,int row,in...