Un parcours diagonal à partir des deux coins haut d'un tableau (n,m), ça doit donner un truc comme ça :
pour i=0; i<max(n,m); i++
pour j=0; j<i+1; j++
x1 = i-j
x2 = n-(x1)
if x1 < n && j < m : tab[i-j][j]
if x2 >=0 && j < m : tab[n -(i-j)][j]
finpour
finpour
« La stratégie du parcours du tableau à chaque coup réaliser par un joueur - 3 parcours complets du tableau (horizontale, puis verticale puis diagonale dans les 2 sens) - est certes très coûteuse, mais je n'ai qu'un seul test de comparaison. Là où je pourrai en avoir plus si je ne fais pas de boucle.
En même temps, on ne joue pas sur une grille d'un million ... »
Haha, ce bobard.
fonction test_victoire(tab,x,y,c):
hor=0
ver=0
dia1=0
dia2=0
pour i=-3, i<4, i++:
xinbounds = x+i>0 && x+i<n
yinbounds = y+i>0 && y+i<n
ryinbounds = y-i>0 && y-i<n
if xinbounds && tab[x+i][y]==c : hor++
else : hor=0
if yinbounds && tab[x][y+i]==c : ver++
else : ver=0
if xinbounds && yinbounds && tab[x+i][y+i]==c : dia1++
else : dia1=0
if xinbounds && ryinbounds && tab[x+i][y-i]==c : dia2++
else : dia2=0
if hor>3 || ver>3 || dia1>3 || dia2>3 : return True
finpour