Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
2.0 kB
2
Indexable
Never
function verifieVictoire(couleur, colonne, cellule) {
  // couleur : un 1 ou un 2 (jaune ou rouge)

  let compteur = 0;
  // Horizontal : vérifier qu'on a au moins 4 pièces alignées

  let x = colonne;
  let y = cellule;

  // on regarde à droite

  /**
   * Récapitulons les étapes de vérification :
   * - Est ce que j'ai déjà 4 pions alignés ?
   * - Est ce que je suis sorti du tableau ?
   * - Est ce que sur la case actuelle il y a ma couleur ?
   */
  while (compteur < 4 && x < 7 && grille.value[x][y] === couleur) {
    x++;
    compteur++;
  }
  if (compteur > 3) return true;

  // on se replace et on regarde à gauche
  x = colonne - 1;
  while (compteur < 4 && x >= 0 && grille.value[x][y] === couleur) {
    x--;
    compteur++;
  }
  if (compteur > 3) return true;

  // Vertical

  compteur = 0;

  x = colonne;
  y = cellule;

  while (compteur < 4 && y < 6 && grille.value[x][y] === couleur) {
    y++;
    compteur++;
  }
  if (compteur > 3) return true;

  y = cellule - 1;

  while (compteur < 4 && y >= 0 && grille.value[x][y] === couleur) {
    y--;
    compteur++;
  }
  if (compteur > 3) return true;

  // Diagonale droite

  compteur = 0;

  x = colonne;
  y = cellule;

  while (compteur < 4 && y < 6 && x < 7 && grille.value[x][y] === couleur) {
    x++;
    y++;
    compteur++;
  }
  if (compteur > 3) return true;

  x = colonne - 1;
  y = cellule - 1;

  while (compteur < 4 && y >= 0 && x >= 0 && grille.value[x][y] === couleur) {
    x--;
    y--;
    compteur++;
  }
  if (compteur > 3) return true;


  // Diagonale gauche

  compteur = 0;

  x = colonne;
  y = cellule;

  while (compteur < 4 && y < 6 && x >=0 && grille.value[x][y] === couleur) {
    x--;
    y++;
    compteur++;
  }
  if (compteur > 3) return true;

  x = colonne + 1;
  y = cellule - 1;

  while (compteur < 4 && y >= 0 && x < 7 && grille.value[x][y] === couleur) {
    x++;
    y--;
    compteur++;
  }
  if (compteur > 3) return true;

  return false;
}
Leave a Comment