English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

請問:數獨的VB程式要怎麼寫?
一定要VB程式碼喔!
數獨 是在一個9×9的方格內填1~9的數字的遊戲,其中,這81個方格又被分成了9個「九宮格的區域」,規則是:

1.同一行不能有一樣的數字

2.同一列不能有一樣的數字

3.同一個九宮格內不能有一樣的數字

4.要把81個格子完全填滿

之前爬過文,有大大用VB寫出來,
但是當我看到他放了820個LABEL~
我的臉當場變成~~~~~~~~"囧"

我希望能用81個TEXTBOX當輸入數字的空格,
用一個COMMAND BUTTEN 當確定,按下去出現答案
另外用一個COMMAND BUTTEN當清除空格。

PS:我是企管系學生,不知道為什麼教授要我們寫那麼難的程式,
所以拜託各位大大了!。・゚゚・(>_<;)・゚゚・。 

2005-12-12 10:46:33 · 6 個解答 · 發問者 燃燒吧!小宇宙 1 in 電腦與網際網路 程式設計

教授是要我們用EXCEL的VBA分析工具箱做的
感覺跟VB一模一樣
但是功能沒有VB好......= =a

2005-12-12 16:55:57 · update #1

請下面的"零"大大,
能不能把執行檔和FRM檔給在下,
非常感謝你!

2005-12-20 13:01:05 · update #2

6 個解答

Option Explicit: DefLng A-Z
Dim 宮格(-1 To 81), 檢查(81 * 30), 狀態$, 步驟, 過關, doEv
Private Sub Command1_Click()
 Call 準備: Call 處裡: Call 秀出
End Sub
Sub 準備()
 Dim 格, 數, X, Y, X1, Y1, 列, 行, 內列, 內行
 For 數 = 0 To 81 * 30: 檢查(數) = -1: Next
 For 格 = 0 To 80: 數 = 0
  X = 格 Mod 9: Y = 格 \ 9
  For 列 = 0 To Y - 1
   檢查(格 * 30 + 數) = 列 * 9 + X: 數 = 數 + 1
  Next
  For 行 = 0 To X - 1
   檢查(格 * 30 + 數) = Y * 9 + 行: 數 = 數 + 1
  Next
  '--------------------------------
  X1 = X Mod 3: Y1 = Y Mod 3
  For 內列 = 0 To Y1
   For 內行 = 0 To 2
    If 內列 < Y1 Or 內行 < X1 Then
     If 內列 <> Y1 And 內行 <> X1 Then
      檢查(格 * 30 + 數) = ((Y \ 3) * 3 + 內列) * 9 + (X \ 3) * 3 + 內行
      數 = 數 + 1
     End If
    End If
   Next
  Next
 Next
 步驟 = -1: 狀態 = "下一步驟"
End Sub
Sub 處裡()
 Do
  Select Case 狀態
   Case "下一步驟"
    步驟 = 步驟 + 1
    If 步驟 >= 81 Then
     狀態 = "找到答案"
    Else
     宮格(步驟) = 0: 狀態 = "下一個數"
    End If
   Case "下一個數"
    宮格(步驟) = 宮格(步驟) + 1:
    If 宮格(步驟) > 9 Then
     狀態 = "上一步驟"
    Else
     Call 條件檢查: If 過關 Then 狀態 = "下一步驟"
    End If
   Case "上一步驟"
    步驟 = 步驟 - 1:
    If 步驟 < 0 Then 狀態 = "運算完畢" Else 狀態 = "下一個數"
  End Select
 Loop Until 狀態 = "找到答案" Or 狀態 = "運算完畢"
End Sub
Sub 秀出()
 Dim 格, 數, 列, 行
 Cls
 For 列 = 0 To 8
  For 行 = 0 To 8
   Print 宮格(列 * 9 + 行);
  Next: Print
 Next
End Sub
Sub 條件檢查()
 Dim 數
 過關 = True
 For 數 = 步驟 * 30 To 步驟 * 30 + 29
  If 宮格(步驟) = 宮格(檢查(數)) Then 過關 = False: 數 = 步驟 * 30 + 30
 Next
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
 End
End Sub

2005-12-25 12:35:27 補充:
燃燒吧!小宇宙 ,我不知道要怎樣貼上執行檔和FRM檔,請教我,或說明你執行上遇到什麼問題.

2005-12-26 13:47:12 補充:
燃燒吧!小宇宙 ,我以寄出執行檔,表單只要一個Command1,表單的屬性AutoRedraw = true
執行時按Command1,表單左上角就出現答案
1 2 3 4 5 6 7 8 9 
4 5 6 7 8 9 1 2 3 
7 8 9 1 2 3 4 5 6 
2 1 4 3 6 5 8 9 7 
3 6 5 8 9 7 2 1 4 
8 9 7 2 1 4 3 6 5 
5 3 1 6 4 2 9 7 8 
6 4 2 9 7 8 5 3 1 
9 7 8 5 3 1 6 4 2 

2005-12-19 20:13:24 · answer #1 · answered by ? 2 · 0 0

能給我整個專案擋嗎??
great497@yahoo.com.tw

2011-12-21 16:36:03 · answer #2 · answered by 小卡 1 · 0 0

我也要執行檔hpsno1@yahoo.com.tw

2006-05-27 23:47:21 · answer #3 · answered by ? 1 · 0 0

我也要執行檔n4224132@yahoo.com.tw

2006-01-09 13:22:28 · answer #4 · answered by ? 1 · 0 0

用電子信箱寄給我就好了
我的信箱:
n124248997008@yahoo.com.tw
我有做過幾遍,但是按下確定都沒反應,謝謝零大大了。

2005-12-26 03:39:42 · answer #5 · answered by 燃燒吧!小宇宙 1 · 0 0

我之前在微風論壇有做過此題目,基本上是使用暴力法跟聯集法解題,類似走迷宮方式讓他從1跑到9,一直去測試,如果錯誤再返回,不過我是用MSFlexGrid來建立方格,並自動建立資料庫來儲存題目,你不妨參考看看:
http://bbs.wefong.com/viewthread.php?tid=533628

2005-12-12 12:09:20 · answer #6 · answered by W.J.S. 7 · 0 0

fedest.com, questions and answers