Un truc assez simple et qui décorèle le data path du cotrol path :
tu fais un tableau contenant les configurations gagantes, puis tu le parcours pour voir si il y a un truc qui matche...
Ca clarifie le code, et il est facile de changer les fonctionnement du truc
inline int lire_plateau(coord c)
{
return plateau[c.x][c.y];
}
typdef struct _coord
{
x : int;
y: int;
} coord;
int NB_COUPS_GAGANTS = 8;
coord [8][3] =
{
{ {0,0}, {0,1}, {0,2} }, //première ligne horizontale
{ {1,0}, {1,1}, {1,2} }, //ligne 2 horizontale
{ {0,0}, {0,1}, {0,2} }, //ligne 3 horizontale
{ {0,0}, {1,0}, {2,0} }, //ligne 1 verticale
... //ajoute les deux lignes restatnes + les deux diagonales
};
for (int ii = 0 ; ii < NB_COUPS_GAGNANTS ; ii ++)
{
if (
(lire_plateau(coord[ii][0]) == lire_plateau(coord[ii][1]))
&&(lire_plateau(coord[ii][1]) == lire_plateau(coord[ii][2]))
)
return lire_plateau(coord[ii][0]);
}
return VIDE;
# Re: Optimisation des tests pour un morpion.
Posté par Obi MO (site web personnel) . En réponse au journal Optimisation des tests pour un morpion.. Évalué à 1.
tu fais un tableau contenant les configurations gagantes, puis tu le parcours pour voir si il y a un truc qui matche...
Ca clarifie le code, et il est facile de changer les fonctionnement du truc
inline int lire_plateau(coord c)
{
return plateau[c.x][c.y];
}
typdef struct _coord
{
x : int;
y: int;
} coord;
int NB_COUPS_GAGANTS = 8;
coord [8][3] =
{
{ {0,0}, {0,1}, {0,2} }, //première ligne horizontale
{ {1,0}, {1,1}, {1,2} }, //ligne 2 horizontale
{ {0,0}, {0,1}, {0,2} }, //ligne 3 horizontale
{ {0,0}, {1,0}, {2,0} }, //ligne 1 verticale
... //ajoute les deux lignes restatnes + les deux diagonales
};
for (int ii = 0 ; ii < NB_COUPS_GAGNANTS ; ii ++)
{
if (
(lire_plateau(coord[ii][0]) == lire_plateau(coord[ii][1]))
&&(lire_plateau(coord[ii][1]) == lire_plateau(coord[ii][2]))
)
return lire_plateau(coord[ii][0]);
}
return VIDE;