1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| int est_direction_possible(plateau p, int x, int y, int dir, int couleur) {
int trouve=0;
switch (dir) {
case 1: // A droite
// Traitement des pions suivants (qui quoi qu'il arrive, ne dépasseront pas 7)
for (unsigned short i=1; i < 8; i++) {
// Si on atteind le bord du jeu ou une case vide, alors le retournement n'est pas possible
if (y+i >= 8 || p[x][y+i] == VIDE) return 0;
// A partir d'ici, on sait qu'on est sur une case licite (dans les limites) et contenant un pion (donc pas vide)
// Si le pion testé est de la même couleur que le pion initial
if (p[x][y+i] == couleur) {
// Le retournement ne sera possible que si on a trouvé des pions adverses entre temps (et qu'on n'est pas sorti avant évidemment !!!)
return trouve;
}
// Le pion testé n'est de la même couleur que le pion initial, la case n'est pas vide, on n'a pas dépassé les limites => il s'agit d'un pion adverse
trouve=1;
}
break;
case 2: // A gauche
... (même principe mais là la limite du jeu sera y-i < 0)
... (etc jusqu'à 8)
}
// Ici cas extrème (pion posé en début de direction) on a testé toute la direction quelle qu'elle soit et on n'a pas trouvé de situation qui autorise le retournement => retournement impossible
return 0;
} |