我想写一个数独计算器,但不知道应怎样写计算部分,收集数字部分已经写好了,不一定要完整的代码,求那位给我个思路,谢谢。
其他部分代码如下Option Explicit
Dim Num(1 To 9, 1 To 9, 1 To 9) As Integer, Able(1 To 9, 1 To 9, 1 To 9) As Boolean
Dim Out(1 To 9) As Integer ‘用来确定有几个这个数
'找最多的数
Function Most(a) As Integer
Dim i As Integer, t As Integer
For i = 1 To 8
If Out(i) >= t Then t = i
Next i
Most = t
End FunctionPrivate Sub CmdOk_Click()
Dim i As Integer, j As Integer, k As Integer
Dim X As Integer, Y As Integer, Z As Integer
'变量清零
For i = 1 To 9
Out(i) = 0
For j = 1 To 9
For k = 1 To 9
Num(i, j, k) = 0
Able(i, j, k) = False
Next k
Next j
Next i
'从Num读值,并设置Able
For i = 1 To 81
X = i Mod 9: Y = i \ 9 + 1
If X = 0 Then X = 9
If Y = 10 Then Y = 9
Select Case X
Case 1 To 3
If Y <= 3 Then Z = 1
If Y >= 4 And Y <= 6 Then Z = 4
If Y >= 7 Then Z = 7
Case 4 To 6
If Y <= 3 Then Z = 2
If Y >= 4 And Y <= 6 Then Z = 5
If Y >= 7 Then Z = 8
Case 7 To 9
If Y <= 3 Then Z = 3
If Y >= 4 And Y <= 6 Then Z = 6
If Y >= 7 Then Z = 9
End Select
Num(X, Y, Z) = Val(NumIn(i).Text)
Able(X, Y, Z) = True
If Num(X, Y, Z) <> 0 Then
Able(X, Y, Z) = False
Out(Num(X, Y, Z)) = Out(Num(X, Y, Z)) + 1
End If
Next i
'计算
Most (1)
End SubPrivate Sub Form_Load()
'以下用来产生格子
Dim MyTop As Integer, MyLeft As Integer 'MyTop,MyLeft
Dim i As Integer, j As Integer, k As Integer, n As Integer 'i,j,k
MyTop = 200
For i = 1 To 9
MyLeft = 200
For j = 1 To 9
k = (i - 1) * 9 + j
Load NumIn(k)
NumIn(k).Text = NumIn(0).Text
For n = 1 To 9
NumIn(k).AddItem (Str(n))
Next n
NumIn(k).Top = MyTop
NumIn(k).Left = MyLeft
NumIn(k).Visible = True
NumIn(k).Enabled = True
NumIn(k).Locked = False
MyLeft = MyLeft + 600
Next j
MyTop = MyTop + 500
Next i
End Sub这有一点数独的简介,大家可以看一下
数独的游戏规则很简单,9x9个格子里,已有若干数字,其它宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字,使得每一行与每一列都有1到9的数字,每个小九宫格里也有1到9的数字,并且一个数字在每个行列及每个小九宫格里都只能出现一次。
其他部分代码如下Option Explicit
Dim Num(1 To 9, 1 To 9, 1 To 9) As Integer, Able(1 To 9, 1 To 9, 1 To 9) As Boolean
Dim Out(1 To 9) As Integer ‘用来确定有几个这个数
'找最多的数
Function Most(a) As Integer
Dim i As Integer, t As Integer
For i = 1 To 8
If Out(i) >= t Then t = i
Next i
Most = t
End FunctionPrivate Sub CmdOk_Click()
Dim i As Integer, j As Integer, k As Integer
Dim X As Integer, Y As Integer, Z As Integer
'变量清零
For i = 1 To 9
Out(i) = 0
For j = 1 To 9
For k = 1 To 9
Num(i, j, k) = 0
Able(i, j, k) = False
Next k
Next j
Next i
'从Num读值,并设置Able
For i = 1 To 81
X = i Mod 9: Y = i \ 9 + 1
If X = 0 Then X = 9
If Y = 10 Then Y = 9
Select Case X
Case 1 To 3
If Y <= 3 Then Z = 1
If Y >= 4 And Y <= 6 Then Z = 4
If Y >= 7 Then Z = 7
Case 4 To 6
If Y <= 3 Then Z = 2
If Y >= 4 And Y <= 6 Then Z = 5
If Y >= 7 Then Z = 8
Case 7 To 9
If Y <= 3 Then Z = 3
If Y >= 4 And Y <= 6 Then Z = 6
If Y >= 7 Then Z = 9
End Select
Num(X, Y, Z) = Val(NumIn(i).Text)
Able(X, Y, Z) = True
If Num(X, Y, Z) <> 0 Then
Able(X, Y, Z) = False
Out(Num(X, Y, Z)) = Out(Num(X, Y, Z)) + 1
End If
Next i
'计算
Most (1)
End SubPrivate Sub Form_Load()
'以下用来产生格子
Dim MyTop As Integer, MyLeft As Integer 'MyTop,MyLeft
Dim i As Integer, j As Integer, k As Integer, n As Integer 'i,j,k
MyTop = 200
For i = 1 To 9
MyLeft = 200
For j = 1 To 9
k = (i - 1) * 9 + j
Load NumIn(k)
NumIn(k).Text = NumIn(0).Text
For n = 1 To 9
NumIn(k).AddItem (Str(n))
Next n
NumIn(k).Top = MyTop
NumIn(k).Left = MyLeft
NumIn(k).Visible = True
NumIn(k).Enabled = True
NumIn(k).Locked = False
MyLeft = MyLeft + 600
Next j
MyTop = MyTop + 500
Next i
End Sub这有一点数独的简介,大家可以看一下
数独的游戏规则很简单,9x9个格子里,已有若干数字,其它宫位留白,玩家需要自己按照逻辑推敲出剩下的空格里是什么数字,使得每一行与每一列都有1到9的数字,每个小九宫格里也有1到9的数字,并且一个数字在每个行列及每个小九宫格里都只能出现一次。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货