예제 #1
0
  // Detection des confilts pour en déduire un score
  public void score(Echiquier echiquier) {
    // 2 : position des dames, 0 : pour les emplacement libres
    int[][] positionsDames = new int[8][8];
    int i = 0;
    int j = 0;

    // Reinitialisation des scores pour partir de 50 à chaque fois
    echiquier.setScore(50);

    // on parcours les colonnes de l'echiquier pour réaliser une matrice ayant pour valeur 2 à
    // l'emplacement des dames
    // et 0 pour un emplacement libre
    for (ArrayList<Case> key : echiquier.EnsembleEchiquier) {
      j = 0;
      // On parcours les cases d'une colonne
      for (Case key2 : key) {
        // Si la case est occupée par une dame on initialise le tableau à la valeur 2
        if (key2.getOccupe()) {
          positionsDames[i][j] = 2;
          break;
        }
        // Si la case est libre on l'initialise à 0
        positionsDames[i][j] = 0;
        j++;
      }
      i++;
    }

    i = 0;
    // Pour chaque dame on vérifie le nombre de conflit
    for (ArrayList<Case> key : echiquier.EnsembleEchiquier) {
      j = 0;
      // On parcours les cases d'une colonne
      for (Case key2 : key) {
        if (key2.getOccupe()) {
          positionsDeplacements(i, j, positionsDames, echiquier);
          break;
        }
        j++;
      }
      i++;
    }
  }
예제 #2
0
  // A chaque fois qu'une dame rencontre une autre dame sur ses trajectoires (la valeur 2) on
  // diminue son score de 1
  public void positionsDeplacements(
      int colonne, int ligne, int[][] positionsDames, Echiquier echiquier) {

    int i = 0, j = 0;
    // diagonale 1
    for (i = colonne, j = ligne; i >= 0 && j < 8; i--, j++) {
      if (positionsDames[i][j] == 2 && colonne != i) {
        echiquier.setScore(echiquier.getScore() - 1);
      }
    }
    // diagonale 2
    for (i = colonne, j = ligne; i >= 0 && j >= 0; i--, j--) {
      if (positionsDames[i][j] == 2 && colonne != i) {
        echiquier.setScore(echiquier.getScore() - 1);
      }
    }
    // diagonale 3
    for (i = colonne, j = ligne; i < 8 && j >= 0; i++, j--) {
      if (positionsDames[i][j] == 2 && colonne != i) {
        echiquier.setScore(echiquier.getScore() - 1);
      }
    }
    // diagonale 4
    for (i = colonne, j = ligne; i < 8 && j < 8; i++, j++) {
      if (positionsDames[i][j] == 2 && colonne != i) {
        echiquier.setScore(echiquier.getScore() - 1);
      }
    }
    // ligne en avant
    for (i = colonne, j = ligne; i < 8; i++) {
      if (positionsDames[i][j] == 2 && colonne != i) {
        echiquier.setScore(echiquier.getScore() - 1);
      }
    }
    // ligne en arrière
    for (i = colonne, j = ligne; i >= 0; i--) {
      if (positionsDames[i][j] == 2 && colonne != i) {
        echiquier.setScore(echiquier.getScore() - 1);
      }
    }
    // pas de vérification sur la colonne car on place une dame par colonne
  }