// 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++; } }
// 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 }