' controleer of een bepaalde zet vier op een rij maakt
Function checkWin(ByVal deRij As Integer, ByVal deKolom As Integer, ByVal kleur As Integer) As Boolean
Dim i, x As Integer
' Verticale controle
If deRij > 2 Then
Dim verticaal As Integer
i = deRij - 1
While i >= 0 AndAlso _veld(i, deKolom) = kleur
i -= 1
verticaal += 1
End While
If verticaal >= 3 Then ' vier op een rij !
_winnaar = kleur
_winRichting = SpeelVeld.Verticaal
Return True
End If
End If
' Horizontale controle
Dim horizontaal As Integer
i = deKolom - 1
While i >= 0 AndAlso _veld(deRij, i) = kleur ' links
i -= 1
horizontaal += 1
End While
i = deKolom + 1
While i < kols AndAlso _veld(deRij, i) = kleur ' rechts
i += 1
horizontaal += 1
End While
If horizontaal >= 3 Then ' vier op een rij !
_winnaar = kleur
_winRichting = SpeelVeld.Horizontaal
Return True
End If
' Diagonaal(stijgend)
Dim diagStijgend As Integer
i = deRij - 1
x = deKolom - 1
While i >= 0 And x >= 0 AndAlso _veld(i, x) = kleur ' links
i -= 1
x -= 1
diagStijgend += 1
End While
i = deRij + 1
x = deKolom + 1
While i < rows And x < kols AndAlso _veld(i, x) = kleur ' rechts
i += 1
x += 1
diagStijgend += 1
End While
If diagStijgend >= 3 Then ' vier op een rij !
_winnaar = kleur
_winRichting = SpeelVeld.DiagonaalStijgend
Return True
End If
'Diagonaal(dalend)
Dim diagDalend As Integer
i = deRij + 1
x = deKolom - 1
While i < rows And x >= 0 AndAlso _veld(i, x) = kleur ' links
i += 1
x -= 1
diagDalend += 1
End While
i = deRij - 1
x = deKolom + 1
While i >= 0 And x < kols AndAlso _veld(i, x) = kleur ' rechts
i -= 1
x += 1
diagDalend += 1
End While
If diagDalend >= 3 Then ' vier op een rij !
_winnaar = kleur
_winRichting = SpeelVeld.DiagonaalDalend
Return True
End If
' geen vier op een rij
Return False
End Function