Final commit

This commit is contained in:
Simon CATANESE 2024-06-29 00:47:26 +02:00
parent da0baa0a2a
commit b6314f7fd8
3 changed files with 31 additions and 26 deletions

View File

@ -21,6 +21,11 @@ public class Chessboard {
currentSize = size;
}
public Position[] getQueensPositions(){
Position[] a = new Position[queensPosition.size()];
return queensPosition.toArray(a);
}
public int getTile(int x,int y){
return gameBoard[x][y];
}
@ -79,9 +84,4 @@ public class Chessboard {
}
System.out.println("\n\n");
}
public Position[] getQueensPositions() {
Position[] a = new Position[queensPosition.size()];
return queensPosition.toArray(a);
}
}

View File

@ -3,10 +3,6 @@ package fr.iut_fbleau.but3.dev6_2.steps;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.HashSet;
import java.util.Set;
import fr.iut_fbleau.but3.dev6_2.Chessboard;
import fr.iut_fbleau.but3.dev6_2.EightQueensSolver;
@ -109,25 +105,36 @@ public class EightQueensSolverSteps {
@Then("toutes les lignes doivent avoir une reine")
public void toutes_les_lignes_doivent_avoir_une_reine() {
Set<Integer> lignes = new HashSet<>();
for (Position position : solver.getChessboard().getQueensPositions()) {
lignes.add(position.x());
for (int row = 0; row < Chessboard.SIZE; row++) {
int queenCount = 0;
for (int col = 0; col < Chessboard.SIZE; col++) {
if (solver.getChessboard().getTile(row, col) == 1) {
queenCount++;
}
// Vérifie que toutes les lignes de 0 à n-1 ont une reine
for (int i = 0; i < Chessboard.SIZE; i++) {
assert lignes.contains(i) : "La ligne " + i + " n'a pas de reine";
}
assertTrue(1 == queenCount, "La ligne " + row + " n'a pas exactement une reine");
}
}
@Then("toutes les colonnes doivent avoir une reine")
public void toutes_les_colonnes_doivent_avoir_une_reine() {
Set<Integer> colonnes = new HashSet<>();
for (Position position : solver.getChessboard().getQueensPositions()) {
colonnes.add(position.x());
for (int col = 0; col < Chessboard.SIZE; col++) {
int queenCount = 0;
for (int row = 0; row < Chessboard.SIZE; row++) {
if (solver.getChessboard().getTile(row, col) == 1) {
queenCount++;
}
// Vérifie que toutes les colonnes de 0 à n-1 ont une reine
for (int i = 0; i < Chessboard.SIZE; i++) {
assert colonnes.contains(i) : "La colonne " + i + " n'a pas de reine";
}
assertTrue(1 == queenCount, "La colonne " + col + " n'a pas exactement une reine");
}
}
@Then("aucune reine ne doit être menacée par une autre")
public void aucune_reine_ne_doit_être_menacée_par_une_autre() {
for(Position pos : this.solver.getChessboard().getQueensPositions()){
this.solver.getChessboard().removeQueen(pos.x(), pos.y());
assertTrue(this.solver.getChessboard().VerifAccessible(pos.x(), pos.y()), "La case (" + pos.x() + ", " + pos.y() + ") est capturée mais ne devrait pas l'être.");
this.solver.getChessboard().placeQueen(pos.x(), pos.y());
}
}

View File

@ -3,15 +3,13 @@ Feature: Résoudre le problème
Scenario: Vérification de la résolution du problème par le solveur de Simon
Given un echiquier vide
When le solveur Sim termine de résoudre le problème
Then chaque reine est placée sur une case différente
And aucune reine ne doit être menacée par une autre
Then aucune reine ne doit être menacée par une autre
And toutes les lignes doivent avoir une reine
And toutes les colonnes doivent avoir une reine
Scenario: Vérification de la résolution du problème par le solveur de Victor
Given un echiquier vide
When le solveur Vic termine de résoudre le problème
Then chaque reine est placée sur une case différente
And aucune reine ne doit être menacée par une autre
Then aucune reine ne doit être menacée par une autre
And toutes les lignes doivent avoir une reine
And toutes les colonnes doivent avoir une reine