Skip to content
Snippets Groups Projects
Commit 81458836 authored by Yanis O's avatar Yanis O Committed by melizzzz
Browse files

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

parent 7d1683b7
No related branches found
No related tags found
No related merge requests found
...@@ -8,6 +8,7 @@ import java.util.Random; ...@@ -8,6 +8,7 @@ import java.util.Random;
import util.Matrix; import util.Matrix;
import util.Position; import util.Position;
import util.PositionUtil;
public class FireFighterScenario extends EntityScenario implements Board<Entity> { public class FireFighterScenario extends EntityScenario implements Board<Entity> {
...@@ -63,7 +64,6 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou ...@@ -63,7 +64,6 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou
} }
} }
public Entity getState(Position position) { public Entity getState(Position position) {
if (position.x() > matrix.size() || position.y() > matrix.size()) { if (position.x() > matrix.size() || position.y() > matrix.size()) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
...@@ -101,18 +101,46 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou ...@@ -101,18 +101,46 @@ private void placeInitialActors(int initialFireCount, int initialFireFightersCou
Iterator<Entity> iterator = matrix.iterator(); Iterator<Entity> iterator = matrix.iterator();
while (iterator.hasNext()) { while (iterator.hasNext()) {
Entity e = iterator.next(); Entity e = iterator.next();
if(e instanceof EmptySquare) continue; if (e instanceof EmptySquare)
continue;
System.out.println("found age : " + e.getAge() + " current age : " + step); System.out.println("found age : " + e.getAge() + " current age : " + step);
if (e.getAge() == 0) { if (e.getAge() == 0) {
e.incrementAge(); e.incrementAge();
continue; continue;
}; }
;
List<Position> entityUpdatedPositions = e.nextTurn(this); List<Position> entityUpdatedPositions = e.nextTurn(this);
changedPositions.addAll(entityUpdatedPositions); changedPositions.addAll(entityUpdatedPositions);
} }
return changedPositions; 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() { public void reset() {
matrix.clear(); matrix.clear();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment