dans mon exemple, les mahjong sont des TextBox.
j'en ai mis 100 donc 100 cases numérotées de 1 à 100, et disposées dans un rectangle de 10 sur 10.
pour créer le "Layout" il faut d'abord cliquer sur Command1.
j'ai simplifié les règles pour l'exemple, à toi d'adapter le code.
Dim Table() As Integer
Dim Pos() As Integer
Dim n As Integer
Dim i As Integer
Dim j As Integer
Dim sel As Integer
Dim ix As Integer
Dim jx As Integer
Private Sub Command1_Click()
Dim X As Integer
Dim Y As Integer
ReDim Table(100)
ReDim Pos(11, 11)
' recherche 100 nombres au hasard i 1: j 1
For n = 1 To 100
X = Int(Rnd * 100) + 1
If Table(X) = 0 Then
Table(X) = 1
Pos(i, j) = X i i + 1: If i > 10 Then i 1: j = j + 1
Else
n = n - 1
End If
Next
' affichage sur 10x10
n = 0
For j = 1 To 10
Y = j * 50
For i = 1 To 10
X = i * 50
n = n + 1
Load Text1(n)
Text1(n).Move X, Y
Text1(n).Text = Pos(i, j)
Text1(n).Visible = True
Next
Next
End Sub
Private Sub Text1_Click(Index As Integer)
Dim Droite As Integer
Dim Gauche As Integer
i = (Index - 1) Mod 10 + 1
j = (Index - 1) \ 10 + 1
n = Pos(i, j)
Droite = Pos(i - 1, j)
Gauche = Pos(i + 1, j)
' si Libre If Droite 0 Or Gauche 0 Then
' si pas sélectionné
If Table(Index) = 1 Then
Text1(Index).BackColor = vbRed
Table(Index) = 2
If sel = 0 Then sel Index: ix i: jx = j
Else
Unload Text1(Index)
Pos(i, j) = 0
Unload Text1(sel)
Pos(ix, jx) = 0
sel = 0
End If
Exit Sub
End If
' si déjà sélectionnée
If Table(Index) = 2 Then
Table(Index) = 1
Text1(sel).BackColor = vbWhite
Pos(ix, jx) = 0
sel = 0
End If
End If
End Sub