Hola, estoy haciendo un sudoku. Me falta la parte para comprobar que un número "x" , no se repita en su cuadro de 3x3, me imagino que sabrán a que me refiero, aquellos que lo sepan jugar. He logrado hacer la comprobación por filas y columnas.
La parte que está comentada es la supuesta búsqueda pero mal hecha.
La parte de la definición de la matriz cuadros correponde a los elementos que se encuentran en cada cuadro de 3x3.
Alguna ayuda?
Dim cuadros(9, 9) As Integer
Private Sub Cmd_Comprobar_Click()
For i = 0 To 80
fila = i \ 9
columna = i Mod 9
For j = fila * 9 To (fila * 9) + 8
If i <> j Then
If Command1(j).Caption = Command1(i).Caption Then
Command1(i).FontBold = True
End If
End If
Next
For j = columna To 72 + columna Step 9
If i <> j Then
If Command1(j).Caption = Command1(i).Caption Then
Command1(i).FontBold = True
End If
End If
Next
'For k = i\3 To i\3
' For j = 0 To 8
' If cuadros(k, j) <> cuadros(fila, columna) Then
' If (Command1(cuadros(k, j)).Caption = Command1(i).Caption) And (Command1(cuadros(k, j)).Caption <> "") Then
' Command1(cuadros(k, j)).FontBold = True
' End If
' End If
'Next
'Next
Next
End Sub
Private Sub Cmd_LimpiarN_Click()
For i = 0 To 80
Command1(i).FontBold = False
Next
End Sub
Private Sub Command1_Click(Index As Integer)
Dim valor As Integer
Command1(Index).FontBold = False
valor = Val(InputBox("Ingresa numero", "Sudoku", ""))
If valor > 0 And valor < 10 Then
Command1(Index).Caption = valor
Else
Command1(Index).Caption = ""
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 80
Command1(i).Caption = ""
Next
Cmd_Comprobar.Caption = "Comprobar"
Cmd_LimpiarN.Caption = "Limpiar comprobación"
cuadros(0, 0) = 0
cuadros(0, 1) = 1
cuadros(0, 2) = 2
cuadros(0, 3) = 9
cuadros(0, 4) = 10
cuadros(0, 5) = 11
cuadros(0, 6) = 18
cuadros(0, 7) = 19
cuadros(0, 8) = 20
cuadros(1, 0) = 3
cuadros(1, 1) = 4
cuadros(1, 2) = 5
cuadros(1, 3) = 12
cuadros(1, 4) = 13
cuadros(1, 5) = 14
cuadros(1, 6) = 21
cuadros(1, 7) = 22
cuadros(1, 8) = 23
cuadros(2, 0) = 6
cuadros(2, 1) = 7
cuadros(2, 2) = 8
cuadros(2, 3) = 15
cuadros(2, 4) = 16
cuadros(2, 5) = 17
cuadros(2, 6) = 24
cuadros(2, 7) = 25
cuadros(2, 8) = 26
cuadros(3, 0) = 27
cuadros(3, 1) = 28
cuadros(3, 2) = 29
cuadros(3, 3) = 36
cuadros(3, 4) = 37
cuadros(3, 5) = 38
cuadros(3, 6) = 45
cuadros(3, 7) = 46
cuadros(3, 8) = 47
cuadros(4, 0) = 30
cuadros(4, 1) = 31
cuadros(4, 2) = 32
cuadros(4, 3) = 39
cuadros(4, 4) = 40
cuadros(4, 5) = 41
cuadros(4, 6) = 48
cuadros(4, 7) = 49
cuadros(4, 8) = 50
cuadros(5, 0) = 33
cuadros(5, 1) = 34
cuadros(5, 2) = 35
cuadros(5, 3) = 42
cuadros(5, 4) = 43
cuadros(5, 5) = 44
cuadros(5, 6) = 51
cuadros(5, 7) = 52
cuadros(5, 8) = 53
cuadros(6, 0) = 54
cuadros(6, 1) = 55
cuadros(6, 2) = 56
cuadros(6, 3) = 63
cuadros(6, 4) = 64
cuadros(6, 5) = 65
cuadros(6, 6) = 72
cuadros(6, 7) = 73
cuadros(6, 8) = 74
cuadros(7, 0) = 57
cuadros(7, 1) = 58
cuadros(7, 2) = 59
cuadros(7, 3) = 66
cuadros(7, 4) = 67
cuadros(7, 5) = 68
cuadros(7, 6) = 75
cuadros(7, 7) = 76
cuadros(7, 8) = 77
cuadros(8, 0) = 60
cuadros(8, 1) = 61
cuadros(8, 2) = 62
cuadros(8, 3) = 69
cuadros(8, 4) = 70
cuadros(8, 5) = 71
cuadros(8, 6) = 78
cuadros(8, 7) = 79
cuadros(8, 8) = 80
End Sub