Skip to content
Snippets Groups Projects
Commit 107b9b6e authored by AREZKI Celia's avatar AREZKI Celia
Browse files

delete of unused classes

parent cfd778da
Branches main
No related tags found
No related merge requests found
package model;
import util.Position;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ClassicFireFighter extends FirefighterManager{
public ClassicFireFighter(List<Position> firefighterPositions) {
super(firefighterPositions);
}
@Override
public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) {
List<Position> modifiedPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
Position newFirefighterPosition = moveToTarget(firefighterPosition, fireManager.getFirePosition(), neighbors);
setFirefighterPosition(firefighterPosition, newFirefighterPosition);
if (fireManager.isOnFire(newFirefighterPosition)) {
extinguishFire(newFirefighterPosition);
}
modifiedPositions.add(firefighterPosition);
modifiedPositions.add(newFirefighterPosition);
}
return modifiedPositions;
}
}
package model;
import util.Position;
import java.util.List;
import java.util.Map;
public interface FireBehavior {
public List<Position> updateFires(int step, Map<Position, List<Position>> neighbors);
void extinguishFire(Position position);
}
package model;
import util.Position;
import view.ViewElement;
import java.util.*;
public class FireManager implements FireBehavior, FireProperties{
private Set<Position> firePositions;
private FirefighterManager firefighterManager;
public FireManager(Set<Position> firePositions,FirefighterManager firefighterManager) {
this.firePositions = firePositions;
this.firefighterManager=firefighterManager;
}
// Initialize fire positions randomly
public void initializeFires(int fireCount, int rowCount, int columnCount, Random random) {
firePositions.clear();
for (int i = 0; i < fireCount; i++) {
firePositions.add(new Position(random.nextInt(rowCount), random.nextInt(columnCount)));
}
}
@Override
public List<Position> updateFires(int step, Map<Position, List<Position>> neighbors) {
List<Position> newFirePositions = new ArrayList<>();
if (step % 2 == 0) { // Le feu se propage tous les deux pas
for (Position fire : firePositions) {
for (Position neighbor : neighbors.get(fire)) {
// Vérifier si le voisin est déjà en feu ou s'il y a un pompier
if (!firePositions.contains(neighbor) && !firefighterManager.getFirefighterPositions().contains(neighbor)) {
newFirePositions.add(neighbor);
}
}
}
firePositions.addAll(newFirePositions);
}
return newFirePositions;
}
public void spreadFire(ViewElement[][] grid) {
int rows = grid.length;
int columns = grid[0].length;
// Créez un tableau pour suivre les tours avant que le feu se propage sur les rocailles
int[][] fireCooldown = new int[rows][columns];
// Initialisation du tableau de cooldown des rocailles à 0
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (grid[i][j] == ViewElement.ROCKY) {
fireCooldown[i][j] = 4; // Le feu prend 4 tours pour se propager sur les rocailles
} else {
fireCooldown[i][j] = 0; // Aucune attente pour les autres cases
}
}
}
ViewElement[][] newGrid = new ViewElement[rows][columns];
for (int i = 0; i < rows; i++) {
System.arraycopy(grid[i], 0, newGrid[i], 0, columns);
}
// Propagation du feu
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (grid[i][j] == ViewElement.FIRE) {
// Propager le feu sur les voisins si possible
for (Position neighbor : getNeighbors(i, j, rows, columns)) {
if (grid[neighbor.row()][neighbor.column()] == ViewElement.EMPTY) {
newGrid[neighbor.row()][neighbor.column()] = ViewElement.FIRE;
}
// Empêcher la propagation sur les montagnes
if (grid[neighbor.row()][neighbor.column()] == ViewElement.MOUNTAIN) {
newGrid[neighbor.row()][neighbor.column()] = ViewElement.MOUNTAIN;
}
// Propagation du feu sur les rocailles après 4 tours
if (grid[neighbor.row()][neighbor.column()] == ViewElement.ROCKY && fireCooldown[neighbor.row()][neighbor.column()] == 0) {
newGrid[neighbor.row()][neighbor.column()] = ViewElement.FIRE;
}
}
}
}
}
// Mise à jour de la grille après propagation
for (int i = 0; i < rows; i++) {
System.arraycopy(newGrid[i], 0, grid[i], 0, columns);
}
// Décrémenter le cooldown des rocailles chaque tour
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (fireCooldown[i][j] > 0) {
fireCooldown[i][j]--; // Décrémenter le compteur de cooldown
}
}
}
}
private List<Position> getNeighbors(int row, int column, int rows, int columns) {
List<Position> neighbors = new ArrayList<>();
if (row > 0) neighbors.add(new Position(row - 1, column));
if (row < rows - 1) neighbors.add(new Position(row + 1, column));
if (column > 0) neighbors.add(new Position(row, column - 1));
if (column < columns - 1) neighbors.add(new Position(row, column + 1));
return neighbors;
}
// Extinguish a fire at a specific position
@Override
public void extinguishFire(Position position) {
firePositions.remove(position);
}
// Query if a position is on fire
@Override
public boolean isOnFire(Position position) {
return firePositions.contains(position);
}
@Override
public Set<Position> getFirePosition()
{ return new HashSet<>(firePositions);}
}
package model;
import util.Position;
import java.util.Set;
public interface FireProperties {
public boolean isOnFire(Position position);
Set<Position> getFirePosition();
}
package model;
import util.Position;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public interface FirefighterBehavior {
Position moveToTarget(Position currentPosition, Collection<Position> firePositions,
Map<Position, List<Position>> neighbors); // Déplacer un pompier vers une cible.
void extinguishFire(Position firePosition); // Éteindre un feu à une position donnée.
// public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors);
}
package model;
import util.Position;
import util.TargetStrategy;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public abstract class FirefighterManager implements FirefighterBehavior, FirefighterProperties {
protected List<Position> firefighterPositions;
FireManager fireManager;
public void setFireManager(FireManager fireManager) {
this.fireManager = fireManager;
}
public FirefighterManager(List<Position> firefighterPositions) {
this.firefighterPositions = firefighterPositions;
}
@Override
public Position moveToTarget(Position currentPosition, Collection<Position> firePositions, Map<Position, List<Position>> neighbors) {
TargetStrategy targetStrategy = new TargetStrategy();
return targetStrategy.neighborClosestToTarget(currentPosition, firePositions, neighbors);
}
@Override
public void extinguishFire(Position firePosition) {
fireManager.extinguishFire(firePosition);
}
@Override
public List<Position> getFirefighterPositions() {
return firefighterPositions;
}
@Override
public void setFirefighterPosition(Position oldPosition, Position newPosition) {
firefighterPositions.remove(oldPosition);
firefighterPositions.add(newPosition);
}
public abstract List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) ;
}
package model;
import util.Position;
import java.util.List;
public interface FirefighterProperties {
List<Position> getFirefighterPositions();
void setFirefighterPosition(Position oldPosition, Position newPosition);
}
package model;
import util.Position;
import java.util.*;
public class MotorizedFirefighter extends FirefighterManager {
private Random random =new Random();
public MotorizedFirefighter(List<Position> firefighterPositions) {
super(firefighterPositions);
}
@Override
public List<Position> updateFirefighters(int step, Map<Position, List<Position>> neighbors) {
List<Position> modifiedPositions = new ArrayList<>();
for (Position firefighterPosition : firefighterPositions) {
// Déplacement motorisé, on se déplace de deux cases
Position newFirefighterPosition = moveToTarget(firefighterPosition, fireManager.getFirePosition(), neighbors);
setFirefighterPosition(firefighterPosition, newFirefighterPosition);
// Vérifier si un feu est à la nouvelle position et l'éteindre
if (fireManager.isOnFire(newFirefighterPosition)) {
extinguishFire(newFirefighterPosition);
}
modifiedPositions.add(firefighterPosition);
modifiedPositions.add(newFirefighterPosition);
}
return modifiedPositions;
}
@Override
public Position moveToTarget(Position currentPosition, Collection<Position> firePositions, Map<Position, List<Position>> neighbors) {
// Logique spécifique pour le déplacement motorisé (deux cases)
List<Position> possibleMoves = new ArrayList<>();
for (Position neighbor : neighbors.get(currentPosition)) {
for (Position secondNeighbor : neighbors.get(neighbor)) {
if (!secondNeighbor.equals(currentPosition)) {
possibleMoves.add(secondNeighbor);
}
}
}
if (!possibleMoves.isEmpty()) {
return possibleMoves.get(random.nextInt(possibleMoves.size()));
} else {
return currentPosition;
}
}
}
package util;
import java.util.Collection;
import java.util.List;
import java.util.Map;
public class MotorizedStrategy implements Strategy{
@Override
public Position neighborClosestToTarget(Position position, Collection<Position> targets, Map<Position, List<Position>> neighbors) {
TargetStrategy normalStrategy = new TargetStrategy();
Position firstMove = normalStrategy.neighborClosestToTarget(position, targets, neighbors);
// Si un premier mouvement est trouvé, on simule un second déplacement
if (firstMove != null && neighbors.containsKey(firstMove)) {
return normalStrategy.neighborClosestToTarget(firstMove, targets, neighbors);
}
return position;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment