Skip to content
Snippets Groups Projects
Commit 20e24e55 authored by Yanis OUALAN's avatar Yanis OUALAN
Browse files

Merge branch 'melissa' of etulab.univ-amu.fr:o22010261/firefighterstarter into melissa

parents 5060d1ac d8a3bf45
No related branches found
No related tags found
No related merge requests found
Pipeline #39136 failed
gradlew 100755 → 100644
File mode changed from 100755 to 100644
...@@ -19,6 +19,7 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -19,6 +19,7 @@ public class SimulatorApplication extends javafx.application.Application {
private static final int BOX_HEIGHT = 25; private static final int BOX_HEIGHT = 25;
public static final int INITIAL_FIRE_COUNT = 3; public static final int INITIAL_FIRE_COUNT = 3;
public static final int INITIAL_FIREFIGHTER_COUNT = 6; public static final int INITIAL_FIREFIGHTER_COUNT = 6;
public static final int INITIAL_CLOUD_COUNT = 6;
private Stage primaryStage; private Stage primaryStage;
private Parent view; private Parent view;
...@@ -44,7 +45,7 @@ public class SimulatorApplication extends javafx.application.Application { ...@@ -44,7 +45,7 @@ public class SimulatorApplication extends javafx.application.Application {
view = loader.load(); view = loader.load();
Controller controller = loader.getController(); Controller controller = loader.getController();
controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT, controller.initialize(BOX_WIDTH, BOX_HEIGHT, COLUMN_COUNT, ROW_COUNT,
INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT); INITIAL_FIRE_COUNT, INITIAL_FIREFIGHTER_COUNT, INITIAL_CLOUD_COUNT);
} }
private void showScene() { private void showScene() {
......
...@@ -5,6 +5,11 @@ import static java.util.Objects.*; ...@@ -5,6 +5,11 @@ import static java.util.Objects.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static java.util.Objects.*;
import java.util.ArrayList;
import java.util.List;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
import javafx.animation.Timeline; import javafx.animation.Timeline;
......
...@@ -4,6 +4,8 @@ import java.util.List; ...@@ -4,6 +4,8 @@ import java.util.List;
import util.Position; import util.Position;
import util.Position;
/** /**
* This interface represents a generic board for modeling various state-based * This interface represents a generic board for modeling various state-based
* systems. * systems.
......
package model;
import java.util.ArrayList;
import java.util.List;
import javafx.scene.paint.Color;
import util.Position;
public class EmptySquare implements Entity{
private Position position;
private final Color viewColor = Color.WHITE;
private int age;
public EmptySquare(Position p){
this.position = p;
this.age = -999;
}
public EmptySquare(Position p, int age){
this.position = p;
this.age = age;
}
@Override
public List<Position> nextTurn(Board<Entity> board) {
return new ArrayList<Position>();
}
@Override
public Position getPosition() {
return position;
}
@Override
public void setPosition(Position p) {
this.position = p;
}
public Color getViewColor(){
return this.viewColor;
}
@Override
public int getAge() {
return this.age;
}
@Override
public void incrementAge() {
age = age + 1;
}
}
...@@ -5,6 +5,11 @@ import java.util.List; ...@@ -5,6 +5,11 @@ import java.util.List;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import util.Position; import util.Position;
import java.util.List;
import javafx.scene.paint.Color;
import util.Position;
public interface Entity { public interface Entity {
/** /**
* Exécute un tour de jeu, en vérifiant les cases adjacentes pour des instances de Fire. * Exécute un tour de jeu, en vérifiant les cases adjacentes pour des instances de Fire.
......
...@@ -6,6 +6,7 @@ import java.util.List; ...@@ -6,6 +6,7 @@ import java.util.List;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import util.Position; import util.Position;
import util.PositionUtil; import util.PositionUtil;
import util.PositionUtil;
public class Fire implements Entity { public class Fire implements Entity {
Board<Square> b; Board<Square> b;
......
...@@ -6,6 +6,7 @@ import java.util.List; ...@@ -6,6 +6,7 @@ import java.util.List;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import util.Position; import util.Position;
import util.PositionUtil; import util.PositionUtil;
import util.PositionUtil;
public class FireFighter implements Entity { public class FireFighter implements Entity {
private int age; private int age;
......
...@@ -3,12 +3,16 @@ package model; ...@@ -3,12 +3,16 @@ package model;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.Collections;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.Random;
import util.Matrix; import util.Matrix;
import util.Position; import util.Position;
import util.PositionUtil; import util.PositionUtil;
import util.PositionUtil;
public class FireFighterScenario extends EntityScenario implements Board<Square> { public class FireFighterScenario extends EntityScenario implements Board<Square> {
...@@ -116,6 +120,9 @@ public class FireFighterScenario extends EntityScenario implements Board<Square> ...@@ -116,6 +120,9 @@ public class FireFighterScenario extends EntityScenario implements Board<Square>
return matrix.getRows(); return matrix.getRows();
} }
public int columnCount() {
return matrix.getColumns();
public int columnCount() { public int columnCount() {
return matrix.getColumns(); return matrix.getColumns();
} }
......
...@@ -3,5 +3,9 @@ package model; ...@@ -3,5 +3,9 @@ package model;
import util.Matrix; import util.Matrix;
public interface Scenario { public interface Scenario {
<<<<<<< HEAD
public void initScenario(Matrix<Square> matrix); public void initScenario(Matrix<Square> matrix);
=======
public void initScenario(Matrix<Entity> matrix);
>>>>>>> d8a3bf456f5b3471a26e38f4c2d9f5ccef27b158
} }
package model;
import javafx.scene.paint.Color;
import util.Position;
import util.PositionUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class cloud implements Entity{
private int age;
private final Color viewColor = Color.GREY;
private Position position;
Board<Entity> b;
public cloud (Position position, Board<Entity> b, int age){
this.age = age;
this.position = position;
this.b = b;
}
@Override
public List<Position> nextTurn(Board<Entity> b) {
List<Position> positions = new ArrayList<>();
// Générer les positions adjacentes valides
List<Position> possibleMoves = PositionUtil.generateAllAdjacentPositions(position, b);
// Sélectionner une position aléatoire parmi les mouvements possibles
Position next_pos = possibleMoves.get(new Random().nextInt(possibleMoves.size()));
// Vérifier l'état de la nouvelle position
ArrayList<Entity> nextEntities = b.getState(next_pos);
positions.add(position);
positions.add(next_pos);
// Si la nouvelle position contient un feu, éteindre le feu
if (nextEntities.contains(Fire.class)) {
extinguish(List.of(next_pos), b);
}
b.setState(this, next_pos);
// Retourner la position mise à jour pour affichage ou suivi
return positions;
}
private List<Position> extinguish(List<Position> next_pos, Board<Entity> b) {
List<Position> extinguishedPositions = new ArrayList<>();
if (b.getState(next_pos.get(0)).contains(Fire.class)) {
b.clearCase(next_pos.get(0));
extinguishedPositions.add(next_pos.get(0));
}
return extinguishedPositions;
}
@Override
public Position getPosition() {
return position;
}
@Override
public void setPosition(Position p) {
this.position = p;
}
@Override
public int getAge() {
return this.age;
}
@Override
public void incrementAge() {
this.age += 1;
}
@Override
public Color getViewColor() {
return viewColor;
}
}
...@@ -2,6 +2,7 @@ module firefighter { ...@@ -2,6 +2,7 @@ module firefighter {
requires javafx.controls; requires javafx.controls;
requires javafx.fxml; requires javafx.fxml;
requires javafx.graphics; requires javafx.graphics;
requires java.sql;
opens controller to javafx.fxml; opens controller to javafx.fxml;
exports app; exports app;
opens app to javafx.fxml; opens app to javafx.fxml;
......
package util; package util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment