j´allais te conseiller d´enlever tamarge de sécurité, mais je me suis aperçu en regardant comment j´avais résolu le problème à l´époque que j´avais aussi une marge.
seulement elle ne fait qu´une case.
pourquoi ? c´est simple comme il n´y a jamais de pion dedans dès que mon algo le ragarde il voit qu´il n´y a plus besoin d´aller plus loin et s´arrète.
bon, je te montre ce que j´avais si ça peut t´aider.
Function IsP4(ByVal NbJou As Byte) As Boolean
IsP4 = False
For I = 1 To NbCol
For J = 1 To NbLigne
If jeu(I, J) = NbJou Then
For L = -1 To 1
For M = -1 To 1
If M = 0 And L = 0 Then M = 1
For k = 1 To 3
If jeu(I + ( k * L), J + ( k * M)) < > NbJou Then Exit For
If k = 3 Then
LineP4.BorderColor = CoulPlayer(NbJou)
LineP4.X1 = LogX(I) + ( LargCol / 2) - DifLarg
LineP4.Y1 = LogY(J) + ( HautCol / 2) - DifHaut
LineP4.X2 = LogX(I + ( k * L)) + ( LargCol / 2) - DifLarg
LineP4.Y2 = LogY(J + ( k * M)) + ( HautCol / 2) - DifHaut
IsP4 = True
Exit Function
End If
Next k
Next M
Next L
End If
Next J
Next I
End Function
NbJou c´est le numéro 1 ou 2 du joueur dont on veut vérifier qu´il ai gagné.
bon, j´ai écrit ça ya plusieurs année, dont je ne sais pas trop ce qu´il vaut, on fait certainement mieux.
avec jeu déclaré comme tel :
Public Const NbCol As Byte = 7
Public Const NbLigne As Byte = 6
Public jeu(0 To NbCol + 1, 0 To NbLigne + 1) As Byte ´la liste des pièce