changes
This commit is contained in:
parent
0d42134d88
commit
e3eda3a457
BIN
bin/fr/iut_fbleau/but3/dev6_2/Chessboard.class
Normal file
BIN
bin/fr/iut_fbleau/but3/dev6_2/Chessboard.class
Normal file
Binary file not shown.
BIN
bin/fr/iut_fbleau/but3/dev6_2/EightQueensSolver.class
Normal file
BIN
bin/fr/iut_fbleau/but3/dev6_2/EightQueensSolver.class
Normal file
Binary file not shown.
BIN
bin/fr/iut_fbleau/but3/dev6_2/Position.class
Normal file
BIN
bin/fr/iut_fbleau/but3/dev6_2/Position.class
Normal file
Binary file not shown.
@ -4,36 +4,38 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class Chessboard {
|
public class Chessboard {
|
||||||
private static final int SIZE = 8;
|
public static final int SIZE = 8;
|
||||||
private final int[][] gameBoard = new int[SIZE][SIZE];
|
private final int[][] gameBoard = new int[SIZE][SIZE];
|
||||||
|
|
||||||
private final List<Position> queensPosition = new ArrayList<>();
|
private final List<Position> queensPosition = new ArrayList<>();
|
||||||
|
|
||||||
public Chessboard() {
|
public Chessboard() {
|
||||||
|
// Constructeur vide
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void placeQueen(int x, int y) {
|
public void placeQueen(int x, int y) {
|
||||||
gameBoard[x][y] = 1;
|
gameBoard[x][y] = 1;
|
||||||
queensPosition.add(new Position(x, y));
|
queensPosition.add(new Position(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void removeQueen(int x, int y) {
|
||||||
|
gameBoard[x][y] = 0;
|
||||||
|
queensPosition.removeIf(pos -> pos.x() == x && pos.y() == y); // Utilise removeIf pour supprimer l'objet correspondant
|
||||||
|
}
|
||||||
|
|
||||||
public Boolean VerifAccessible(int x, int y) {
|
public Boolean VerifAccessible(int x, int y) {
|
||||||
for (int i = 0; i < SIZE; i++) {
|
for (int i = 0; i < SIZE; i++) {
|
||||||
int DigonaleAscendante = y - (x - i);
|
int diagonaleAscendante = y - (x - i);
|
||||||
int DigonaleDescendante = y + (x - i);
|
int diagonaleDescendante = y + (x - i);
|
||||||
if (gameBoard[i][y] != 0) {
|
if (gameBoard[i][y] != 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (gameBoard[x][i] != 0) {
|
if (gameBoard[x][i] != 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (DigonaleAscendante >= 0 && DigonaleAscendante < SIZE && gameBoard[i][DigonaleAscendante] == 1) {
|
if (diagonaleAscendante >= 0 && diagonaleAscendante < SIZE && gameBoard[i][diagonaleAscendante] == 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (DigonaleDescendante >= 0 && DigonaleAscendante < SIZE && gameBoard[i][DigonaleDescendante] == 1) {
|
if (diagonaleDescendante >= 0 && diagonaleDescendante < SIZE && gameBoard[i][diagonaleDescendante] == 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,28 @@ public class EightQueensSolver {
|
|||||||
private Chessboard chessboard = new Chessboard();
|
private Chessboard chessboard = new Chessboard();
|
||||||
|
|
||||||
public EightQueensSolver() {
|
public EightQueensSolver() {
|
||||||
F
|
System.out.println(Solver());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Boolean Solver() {
|
||||||
|
if (chessboard.getNumberOfQueen() == 8) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < Chessboard.SIZE * Chessboard.SIZE; i++) {
|
||||||
|
int x = i % Chessboard.SIZE;
|
||||||
|
int y = i / Chessboard.SIZE;
|
||||||
|
if (chessboard.VerifAccessible(x, y)) {
|
||||||
|
chessboard.placeQueen(x, y);
|
||||||
|
if (!Solver()) {
|
||||||
|
chessboard.removeQueen(x, y);
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public Chessboard getChessboard() {
|
public Chessboard getChessboard() {
|
||||||
return chessboard;
|
return chessboard;
|
||||||
|
Loading…
Reference in New Issue
Block a user