Skip to content
Snippets Groups Projects
Commit 5ef87f8b authored by Yanis O's avatar Yanis O
Browse files

[Ajout] Méthode pour calculer les entités d'une classe donnée les plus proche

parent db0a2852
No related branches found
No related tags found
No related merge requests found
......@@ -8,6 +8,7 @@ import java.util.Random;
import util.Matrix;
import util.Position;
import util.PositionUtil;
public class FireFighterScenario extends EntityScenario implements Board<Entity> {
......@@ -63,7 +64,6 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou
}
}
public Entity getState(Position position) {
if (position.x() > matrix.size() || position.y() > matrix.size()) {
throw new IllegalArgumentException(
......@@ -101,18 +101,46 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou
Iterator<Entity> iterator = matrix.iterator();
while (iterator.hasNext()) {
Entity e = iterator.next();
if(e instanceof EmptySquare) continue;
if (e instanceof EmptySquare)
continue;
System.out.println("found age : " + e.getAge() + " current age : " + step);
if (e.getAge() == 0) {
e.incrementAge();
continue;
};
}
;
List<Position> entityUpdatedPositions = e.nextTurn(this);
changedPositions.addAll(entityUpdatedPositions);
}
return changedPositions;
}
public Position getNearestEntity(Position fromPos, Class<?> entityType) {
int rows = matrix.getRows();
int cols = matrix.getColumns();
Position nearestPosition = null;
// Définir la distance maximale possible
int maxDistance = rows + cols;
// Parcourir les distances croissantes à partir de 1
for (int distance = 1; distance < maxDistance; distance++) {
List<Position> positionsAtDistance = PositionUtil.getPositionsAtManhattanDistance(fromPos, distance, rows, cols);
for (Position currentPos : positionsAtDistance) {
Entity currentEntity = matrix.get(currentPos.x(), currentPos.y());
if (entityType.isInstance(currentEntity)) {
// Dès qu'une entité est trouvée à cette distance, elle est la plus proche
// possible
return currentPos;
}
}
}
return nearestPosition; // Retourne null si aucune entité n'est trouvée
}
public void reset() {
matrix.clear();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment