
16/02/2007, 11:37
|
| | Fecha de Ingreso: febrero-2007
Mensajes: 33
Antigüedad: 18 años, 2 meses Puntos: 0 | |
Solo Me Quedan Unos Ultimos Pasos Para Acabar El Sudoku Me Podeis Ayudar ?? Hola pues este es mi duda es que tengo que hacer un sudoku en visual basic 9x9 y cuando pulse el boton salga un sudoku completo mi primer problema es que mi sudoku tiene dos botones uno para crear y el otro para solucionar y queria saber como hacer para juntar el boton solucionar en el boton crear de forma que cunado pulse el boton crear se coloquen de forma aleatoria todo completo sin tocar el boton solucionar alguien de aqui sabe como se hace?
CODIGO SUDOKU
Const Gris As Long = &HFFFFFF
Private SolutionShown As Boolean
Private SudokuGrid(81) As Integer
Private SudokuTemp(81) As String
Private SudokuSolution(81) As String
--------------------------
Private Sub cmdGenerar_Click()
While Not CreateSudokuGrid()
Wend
lblDone.Visible = False
cmdSolucion.Enabled = True
cmdSolucion.Caption = "Show Solution"
SolutionShown = False
End Sub
------------------------------
Private Function CreateSudokuGrid() As Boolean
Dim i, j, k As Integer
Dim numRand As Integer
Dim ValIsOK(9) As Boolean
Dim valsOK As Integer
valsOK = 0
lblConfiguring.Visible = True
For i = 1 To 81
Text1(i).Text = ""
Text1(i).BackColor = Gris
Text1(i).Visible = False
SudokuSolution(i) = ""
Next i
lblConfiguring.Visible = True
lblConfiguring.Refresh
For i = 1 To 81
If True Then
valsOK = GetValidVals(i, ValIsOK)
If valsOK <= 0 Then
CreateSudokuGrid = False
End If
numRand = Int(Rnd(valsOK)) + 1
k = 0
For j = 1 To 9
If ValIsOK(j) Then
k = k + 1
If k = numRand Then
Exit For
End If
End If
Next j
Text1(i).Text = CStr(j)
Text1(i).BackColor = Gris
End If
Next i
lblConfiguring.Visible = False
For i = 1 To 81
SudokuSolution(i) = Text1(i).Text
numRand = Rnd(CInt(spnDifficulty.Text) + 1) + 1
If numRand > 1 Then
Text1(i).Text = ""
Text1(i).BackColor = Gris
Text1(i).Enabled = True
Else
Text1(i).Enabled = False
End If
Text1(i).Visible = True
Next i
CreateSudokuGrid = True
End Function
---------------------------------------
Private Function GetValidVals(ByVal Location As Integer, ByRef ValidVals() As Boolean) As Integer
Dim i, j, k As Integer
Dim row, col As Integer
Dim numStr As String
Dim numOK As Boolean
Dim retVal As Integer
retVal = 0
For i = 1 To 9
numOK = True
numStr = CStr(i)
For j = 1 To 9
k = (Int((Location - 1) / 9) * 9) + j
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
If numOK Then
For j = 1 To 9
k = (((Location - 1) Mod 9) + 1) + ((j - 1) * 9)
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
End If
If numOK Then
row = Int(Int((Location - 1) / 9) / 3)
col = Int(((Location - 1) Mod 9) / 3)
For j = 1 To 9
k = (((row * 3) + Int((j - 1) / 3)) * 9) + (col * 3) + ((j - 1) Mod 3) + 1
If Text1(k).Text = numStr Then
numOK = False
Exit For
End If
Next j
End If
ValidVals(i) = numOK
If numOK Then
retVal = retVal + 1
End If
Next i
GetValidVals = retVal
End Function
----------------------------------------
Private Sub cmdSolucion_Click()
Dim i As Integer
If SolutionShown Then
For i = 1 To 81
Text1(i).Text = SudokuTemp(i)
Next i
cmdSolucion.Caption = "Show Solution"
Else
For i = 1 To 81
SudokuTemp(i) = Text1(i).Text
Text1(i).Text = SudokuSolution(i)
Next i
cmdSolucion.Caption = "Hide Solution"
End If
SolutionShown = Not SolutionShown
End Sub
Última edición por mfc; 17/02/2007 a las 04:15 |