diff --git a/.gradle/8.4/executionHistory/executionHistory.bin b/.gradle/8.4/executionHistory/executionHistory.bin index 1b9f8fbd468ce72efa20e531dcbccf6fc9c93588..890726ca24b67bc996fb6ba6710d2478c220c32d 100644 Binary files a/.gradle/8.4/executionHistory/executionHistory.bin and b/.gradle/8.4/executionHistory/executionHistory.bin differ diff --git a/.gradle/8.4/executionHistory/executionHistory.lock b/.gradle/8.4/executionHistory/executionHistory.lock index 3ad2f8137f4dd9953229e800ab30840e189d45e5..6e7254dff416c1282e363eb60aff371e15496928 100644 Binary files a/.gradle/8.4/executionHistory/executionHistory.lock and b/.gradle/8.4/executionHistory/executionHistory.lock differ diff --git a/.gradle/8.4/fileHashes/fileHashes.bin b/.gradle/8.4/fileHashes/fileHashes.bin index 93297f489ce7c0dc7a0f241d17d3d933d010ac00..c5726a2eda9592c3d19f99286cd3d924a22fdf93 100644 Binary files a/.gradle/8.4/fileHashes/fileHashes.bin and b/.gradle/8.4/fileHashes/fileHashes.bin differ diff --git a/.gradle/8.4/fileHashes/fileHashes.lock b/.gradle/8.4/fileHashes/fileHashes.lock index 7f6a2d812e3bfbee3147cc2985e35216a647fc87..de14264c78d0fcca541794779cdbc82e240751f8 100644 Binary files a/.gradle/8.4/fileHashes/fileHashes.lock and b/.gradle/8.4/fileHashes/fileHashes.lock differ diff --git a/.gradle/8.4/fileHashes/resourceHashesCache.bin b/.gradle/8.4/fileHashes/resourceHashesCache.bin index b6256803b0f11f9d905dc80febe26d03a3c9629a..f07316dcb181bc4ce1181c65d6d59da90898321c 100644 Binary files a/.gradle/8.4/fileHashes/resourceHashesCache.bin and b/.gradle/8.4/fileHashes/resourceHashesCache.bin differ diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock index 1f7191f3ec063b0e7aa6a3e9c8002b0984d63547..93d013839980d107e7e1773eefd8c0af8af92f38 100644 Binary files a/.gradle/buildOutputCleanup/buildOutputCleanup.lock and b/.gradle/buildOutputCleanup/buildOutputCleanup.lock differ diff --git a/.gradle/file-system.probe b/.gradle/file-system.probe index 177b638e36f899ff65fdfbdf0fb2b363a7f6029f..0b3866e8d86aeea5717cc9afd2d4313e988a8876 100644 Binary files a/.gradle/file-system.probe and b/.gradle/file-system.probe differ diff --git a/build/classes/java/main/app/SimulatorApplication.class b/build/classes/java/main/app/SimulatorApplication.class index 710b7e449b80cc57d3fca16a1745b5d38726aa73..0c2201dd16cef43b342c37c68917a4746ce613f5 100644 Binary files a/build/classes/java/main/app/SimulatorApplication.class and b/build/classes/java/main/app/SimulatorApplication.class differ diff --git a/build/classes/java/main/controller/SettingsController.class b/build/classes/java/main/controller/SettingsController.class deleted file mode 100644 index 1b434a4e40460f52ce64d262cb01216682f498ff..0000000000000000000000000000000000000000 Binary files a/build/classes/java/main/controller/SettingsController.class and /dev/null differ diff --git a/build/classes/java/main/controller/controllerMenu.class b/build/classes/java/main/controller/controllerMenu.class index ed9af87af0de6df99351facf1f1c637eee16495f..a5941003c47022cf1f31bf237a79d37b1e74d406 100644 Binary files a/build/classes/java/main/controller/controllerMenu.class and b/build/classes/java/main/controller/controllerMenu.class differ diff --git a/build/classes/java/main/controller/fireFigther/ControllerFireFigtherBord.class b/build/classes/java/main/controller/fireFigther/ControllerFireFigtherBord.class deleted file mode 100644 index f488ab73b0d3a83ae71afcf7d32b537b4091b18c..0000000000000000000000000000000000000000 Binary files a/build/classes/java/main/controller/fireFigther/ControllerFireFigtherBord.class and /dev/null differ diff --git a/build/classes/java/main/controller/fireFigther/PersistentToggleGroup.class b/build/classes/java/main/controller/fireFigther/PersistentToggleGroup.class deleted file mode 100644 index 2e4bfd31af0cd5e71a813e7d3a4392cf9643e118..0000000000000000000000000000000000000000 Binary files a/build/classes/java/main/controller/fireFigther/PersistentToggleGroup.class and /dev/null differ diff --git a/build/classes/java/main/model/FirefighterBoard.class b/build/classes/java/main/model/FirefighterBoard.class index 22c5e7237e4ea669a27d68a9ab99bb1dd1ffa5f4..0221dd6af6afbf4b7fdb9a91c10ec2f82c2bf860 100644 Binary files a/build/classes/java/main/model/FirefighterBoard.class and b/build/classes/java/main/model/FirefighterBoard.class differ diff --git a/build/resources/main/view/Settings.fxml b/build/resources/main/view/Settings.fxml deleted file mode 100644 index 71254c0a3ee78ade5fa70ae154f1f8f02aec4d14..0000000000000000000000000000000000000000 --- a/build/resources/main/view/Settings.fxml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.Spinner?> -<?import javafx.scene.layout.GridPane?> - -<GridPane xmlns:fx="http://javafx.com/fxml" - fx:controller="controller.SettingsController" alignment="center" hgap="10" vgap="10" padding="20"> - <Label text="Settings" style="-fx-font-size: 16;" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> - - <!-- Row Count --> - <Label text="Row Count:" GridPane.columnIndex="0" GridPane.rowIndex="1"/> - <Spinner fx:id="rowCountSpinner" value="10" min="1" max="100" GridPane.columnIndex="1" GridPane.rowIndex="1"/> - - <!-- Column Count --> - <Label text="Column Count:" GridPane.columnIndex="0" GridPane.rowIndex="2"/> - <Spinner fx:id="columnCountSpinner" value="10" min="1" max="100" GridPane.columnIndex="1" GridPane.rowIndex="2"/> -</GridPane> diff --git a/build/resources/main/view/fireFigtherView/fireFigtherBord.fxml b/build/resources/main/view/fireFigtherView/fireFigtherBord.fxml deleted file mode 100644 index 7e1c179c34759e686122a03577556f25d189aece..0000000000000000000000000000000000000000 --- a/build/resources/main/view/fireFigtherView/fireFigtherBord.fxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.Button?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import view.FirefighterGrid?> - -<?import javafx.scene.control.ToggleButton?> -<?import javafx.scene.control.Separator?> -<?import javafx.scene.control.Label?> -<HBox styleClass="background" stylesheets="@DarkTheme.css" - xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" - fx:controller="controller.fireFigther.ControllerFireFigtherBord"> - <VBox> - <Separator maxHeight="-Infinity" maxWidth="-Infinity" - prefHeight="24.0" prefWidth="200.0"/> - <Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0" - text="Generation number"/> - <Label fx:id="generationNumberLabel" alignment="CENTER" contentDisplay="TEXT_ONLY" - maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> - <Separator maxHeight="-Infinity" maxWidth="-Infinity" - prefHeight="24.0" prefWidth="200.0"/> - <Button fx:id="restartButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#restartButtonAction" prefHeight="24.0" prefWidth="200.0" - text="Restart"/> - <Button fx:id="oneStepButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#oneStepButtonAction" prefHeight="24.0" prefWidth="200.0" - text="One step"/> - <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0" - prefWidth="200.0" styleClass="button" text="Play"/> - <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" - prefWidth="200.0" styleClass="button" text="Pause"/> - </VBox> - <FirefighterGrid fx:id="grid" width="1000.0" height="1000.0" - xmlns="http://javafx.com/javafx" - xmlns:fx="http://javafx.com/fxml"> - </FirefighterGrid> -</HBox> diff --git a/build/resources/main/view/fireFigtherView/putElementCount.fxml b/build/resources/main/view/fireFigtherView/putElementCount.fxml deleted file mode 100644 index 3d8003d6466fe273c17056ff7be7d0abc7d6f623..0000000000000000000000000000000000000000 --- a/build/resources/main/view/fireFigtherView/putElementCount.fxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.*?> -<?import javafx.scene.image.*?> -<?import javafx.scene.layout.*?> - -<AnchorPane fx:id="putElementCount" fx:controller="controller.fireFigther.ControllerPutElementCountController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="434.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <Spinner fx:id="fire" editable="true" layoutX="106.0" layoutY="31.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100" /> - <Label layoutX="265.0" layoutY="14.0" text="Fire" /> - <Label layoutX="245.0" layoutY="64.0" text="Fire Fighter" /> - <Spinner fx:id="firefighter" layoutX="106.0" layoutY="82.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100"/> - <Spinner fx:id="Cloud" layoutX="102.0" layoutY="134.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100" /> - <Spinner fx:id="MotorisedFireFighter" layoutX="106.0" layoutY="186.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100" /> - <Spinner fx:id="Mountain" layoutX="102.0" layoutY="234.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100"/> - <Spinner fx:id="Road" layoutX="101.0" layoutY="286.0" prefHeight="25.0" prefWidth="355.0" value="10" min="1" max="100"/> - <Spinner fx:id="Rockerie" layoutX="100.0" layoutY="335.0" prefHeight="25.0" prefWidth="355.0" value="10" min="1" max="100"/> - <Button layoutX="229.0" layoutY="376.0" mnemonicParsing="false" prefHeight="55.0" prefWidth="92.0" text="Button" /> - <Label layoutX="259.0" layoutY="116.0" text="Cloud" /> - <Label layoutX="215.0" layoutY="169.0" text="Motorised Fire Fighter" /> - <Label layoutX="249.0" layoutY="217.0" text="Mountain" /> - <Label layoutX="260.0" layoutY="269.0" text="Road" /> - <Label layoutX="251.0" layoutY="318.0" text="Rockerie" /> - <ImageView fitHeight="62.0" fitWidth="102.0" layoutX="223.0" layoutY="373.0" pickOnBounds="true" preserveRatio="true" /> - </children> -</AnchorPane> diff --git a/build/resources/main/view/menu.fxml b/build/resources/main/view/menu.fxml index e974135e404bb15ad97b487aec3080719a8f7dc3..801d37f6d36cd94a1166ca094238783591e5f85d 100644 --- a/build/resources/main/view/menu.fxml +++ b/build/resources/main/view/menu.fxml @@ -3,11 +3,10 @@ <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> -<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.controllerMenu"> +<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.ControllerMenu"> <children> - <Button fx:id="FireFighter" layoutX="36.0" layoutY="119.0" mnemonicParsing="false" onAction="#FireFighter" prefHeight="106.0" prefWidth="259.0" text="firefiter" /> + <Button fx:id="FireFighter" layoutX="36.0" layoutY="119.0" mnemonicParsing="false" onAction="#FireFighter" prefHeight="106.0" prefWidth="259.0" text="FireFighter" /> <Button fx:id="Virus" layoutX="321.0" layoutY="119.0" mnemonicParsing="false" onAction="#Virus" prefHeight="106.0" prefWidth="259.0" text="virus" /> - <Button fx:id="Settings" layoutX="541.0" layoutY="14.0" mnemonicParsing="false" onAction="#Settings" prefHeight="41.0" prefWidth="45.0" text="setting" /> - <Button layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onAction="#exit" prefHeight="35.0" prefWidth="96.0" text="exit" /> + <Button layoutX="14.0" layoutY="14.0" mnemonicParsing="false" prefHeight="35.0" prefWidth="96.0" text="exit" onAction="#exit" /> </children> </AnchorPane> diff --git a/build/tmp/compileJava/previous-compilation-data.bin b/build/tmp/compileJava/previous-compilation-data.bin index 0794c21f5857e1712377974470c887937b65a54f..71c8af93e6b47cab67d4982b842e2084b12ebf32 100644 Binary files a/build/tmp/compileJava/previous-compilation-data.bin and b/build/tmp/compileJava/previous-compilation-data.bin differ diff --git a/src/Diagramme de classe.png b/src/Diagramme de classe.png new file mode 100644 index 0000000000000000000000000000000000000000..a611011c6751cf7faf9545441f5147539ec381ce Binary files /dev/null and b/src/Diagramme de classe.png differ diff --git a/src/descriptif du projet.txt b/src/descriptif du projet.txt new file mode 100644 index 0000000000000000000000000000000000000000..95f7e39d8ec6ba1ab88774b2350934f680f9f701 --- /dev/null +++ b/src/descriptif du projet.txt @@ -0,0 +1,28 @@ +décrit le projet + le projet vise a faire une simulation tout enrespectant les principes SOLID +quand on lance progrme on atterie sur un meun qui nous permet de choisir le mode de jeu + si on choisi fire Fighter on dois selectionner le nombre d element qui sera dans notre grille + si on choisi virus on sera amener a une simuation de virus + sinon on clique sur exit et le programme se ferme + +expliqué les différents jeux + fire Fighter + le feu se propage sur tout les case vide et les case rocaille + le pompier etain les 4 case autour de lui + le nuage se balade sur la grille et etain le feu en desous de lui + le pompier motoriser etain les 4 case autour de lui et se deplace de 2 case + la monatin le pompier , le feu et le pompier motoriser ne peuvent pas aller sur cette case + la route le feu ne peut pas de propager sur cette case + virus + le virus transphorme l humain en virus + le humain se balade sur le grille + le medecin le medecin elimine le virus + +expliqué comment on a structuré notre code + tout les element sur la grie implement l interface model element compose de 2 metode update qui gere les deplacement et getviewelement + au lieu de faire 2 liste dans le pojet fourni j ai prefere faire une map avec les positions comme cle et une liste de model element + j ai une class tool dans utile avec des methode staique que je reutlise partout qui ont pour but de eviter la duplication de code j ai essayer de respeter le plus le open close principer en faisant ces methodes + +parlé des difficultés rencontrées +diffuclter a gere les scenes +diffuculter a faire les pompier motorise \ No newline at end of file diff --git a/src/main/java/app/SimulatorApplication.java b/src/main/java/app/SimulatorApplication.java index 9ff1a94dd60cecea170ff69707c0a32cb35c7948..070407ddb9ab1379687e902ef157834850565a1c 100644 --- a/src/main/java/app/SimulatorApplication.java +++ b/src/main/java/app/SimulatorApplication.java @@ -1,6 +1,8 @@ package app; -import controller.fireFigther.ControllerFireFigtherBord; +import controller.ControllerBord; +import controller.ControllerMenu; +import controller.ControllerPutElementCount; import javafx.application.Platform; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; @@ -14,11 +16,11 @@ import java.net.URL; import java.util.Map; public class SimulatorApplication extends javafx.application.Application { - private static final String VIEW_RESOURCE_PATH = "/view/fireFigtherView/fireFigtherBord.fxml"; + private static final String VIEW_RESOURCE_PATH = "/view/menu.fxml"; private static final String APP_NAME = "Firefighter simulator"; - private static final int ROW_COUNT = 20; - private static final int COLUMN_COUNT = 20; + private static int ROW_COUNT = 20; + private static int COLUMN_COUNT = 20; private static final int SQUARE_WIDTH = 40; private static final int SQUARE_HEIGHT = 40; private Map<ModelElement,Integer> INITIAL_ELEMENTS_COUNT; @@ -38,20 +40,10 @@ public class SimulatorApplication extends javafx.application.Application { @Override public void start(Stage primaryStage) throws IOException { initializePrimaryStage(primaryStage); - initializeInitialElementCount(); initializeView(); showScene(); } - private void initializeInitialElementCount() { - INITIAL_ELEMENTS_COUNT = new HashMap<>(); - INITIAL_ELEMENTS_COUNT.put(new Fire(), 10); - INITIAL_ELEMENTS_COUNT.put(new FireFigther(), 10); - INITIAL_ELEMENTS_COUNT.put(new Cloud(), 10); - INITIAL_ELEMENTS_COUNT.put(new MotorisedFirefigther(), 10); - INITIAL_ELEMENTS_COUNT.put(new Mountain(), 10); - INITIAL_ELEMENTS_COUNT.put(new Road(), 10); - INITIAL_ELEMENTS_COUNT.put(new Rockerie(), 10); - } + private void initializeView() throws IOException { @@ -59,9 +51,6 @@ public class SimulatorApplication extends javafx.application.Application { URL location = SimulatorApplication.class.getResource(VIEW_RESOURCE_PATH); loader.setLocation(location); view = loader.load(); - ControllerFireFigtherBord controller = loader.getController(); - controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT,INITIAL_ELEMENTS_COUNT - ); } private void showScene() { diff --git a/src/main/java/controller/fireFigther/ControllerFireFigtherBord.java b/src/main/java/controller/ControllerBord.java similarity index 94% rename from src/main/java/controller/fireFigther/ControllerFireFigtherBord.java rename to src/main/java/controller/ControllerBord.java index 7577440bc4e149bea00c875aa2574963dbc7d44d..154911f5a8a670271ffb40d1b2ce80932294e657 100644 --- a/src/main/java/controller/fireFigther/ControllerFireFigtherBord.java +++ b/src/main/java/controller/ControllerBord.java @@ -1,6 +1,6 @@ -package controller.fireFigther; +package controller; -import controller.fireFigther.PersistentToggleGroup; +import controller.PersistentToggleGroup; import javafx.animation.Animation; import javafx.animation.KeyFrame; import javafx.animation.Timeline; @@ -26,7 +26,7 @@ import java.util.Map; import static java.util.Objects.requireNonNull; -public class ControllerFireFigtherBord { +public class ControllerBord { public static final int PERIOD_IN_MILLISECONDS = 50; @FXML @@ -97,7 +97,7 @@ public class ControllerFireFigtherBord { private void initializeTimeline() { - Duration duration = new Duration(ControllerFireFigtherBord.PERIOD_IN_MILLISECONDS); + Duration duration = new Duration(ControllerBord.PERIOD_IN_MILLISECONDS); EventHandler<ActionEvent> eventHandler = event -> updateBoard(); KeyFrame keyFrame = new KeyFrame(duration, eventHandler); diff --git a/src/main/java/controller/ControllerMenu.java b/src/main/java/controller/ControllerMenu.java new file mode 100644 index 0000000000000000000000000000000000000000..ca173c1be7bedabc0bac133ca736d0e15e5543aa --- /dev/null +++ b/src/main/java/controller/ControllerMenu.java @@ -0,0 +1,63 @@ +package controller; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.stage.Stage; + +import java.net.URL; + +public class ControllerMenu { + @FXML + private Button FireFighter; + @FXML + private Button Virus; + + + @FXML + public void exit() { + System.exit(0); + } + + public void FireFighter() { + try { + FXMLLoader loader = new FXMLLoader(); + URL location = getClass().getResource("/view/putElementCount.fxml"); + loader.setLocation(location); + Parent parent = loader.load(); + + + Stage stage = new Stage(); + stage.setTitle("Put Element Count"); + stage.setScene(new Scene(parent)); + Stage currentStage = (Stage) FireFighter.getScene().getWindow(); + currentStage.close(); + stage.show(); + } catch (Exception e) { + e.printStackTrace(); + + } + } + + public void Virus() { + try { + FXMLLoader loader = new FXMLLoader(); + URL location = getClass().getResource("/view/virusElementCount.fxml"); + loader.setLocation(location); + Parent parent = loader.load(); + + + Stage stage = new Stage(); + stage.setTitle("Put Element Count"); + stage.setScene(new Scene(parent)); + Stage currentStage = (Stage) Virus.getScene().getWindow(); + currentStage.close(); + stage.show(); + } catch (Exception e) { + e.printStackTrace(); + + } + } + +} diff --git a/src/main/java/controller/ControllerPutElementCount.java b/src/main/java/controller/ControllerPutElementCount.java new file mode 100644 index 0000000000000000000000000000000000000000..1dc0b3eff56b1a3f1e3c28179bc7ff6078b0b666 --- /dev/null +++ b/src/main/java/controller/ControllerPutElementCount.java @@ -0,0 +1,102 @@ +package controller; + +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.stage.Stage; +import model.Element.*; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +public class ControllerPutElementCount { + private static final int ROW_COUNT = 20; + private static final int COLUMN_COUNT = 20; + private static final int SQUARE_WIDTH = 40; + private static final int SQUARE_HEIGHT = 40; + + @FXML + private TextField fire; + + @FXML + private TextField firefighter; + + @FXML + private TextField cloud; + + @FXML + private TextField motorisedFireFighter; + + @FXML + private TextField mountain; + + @FXML + private TextField road; + + @FXML + private TextField rockerie; + + @FXML + private Button button; + + + @FXML + private void initialize() { + Map<ModelElement, Integer> INITIAL_ELEMENTS_COUNT = new HashMap<>(); + + int fireCount = parseIntOrDefault(fire.getText()); + int firefighterCount = parseIntOrDefault(firefighter.getText()); + int cloudCount = parseIntOrDefault(cloud.getText()); + int motorisedFirefighterCount = parseIntOrDefault(motorisedFireFighter.getText()); + int mountainCount = parseIntOrDefault(mountain.getText()); + int roadCount = parseIntOrDefault(road.getText()); + int rockerieCount = parseIntOrDefault(rockerie.getText()); + + INITIAL_ELEMENTS_COUNT.put(new Fire(), fireCount); + INITIAL_ELEMENTS_COUNT.put(new FireFigther(), firefighterCount); + INITIAL_ELEMENTS_COUNT.put(new Cloud(), cloudCount); + INITIAL_ELEMENTS_COUNT.put(new MotorisedFirefigther(), motorisedFirefighterCount); + INITIAL_ELEMENTS_COUNT.put(new Mountain(), mountainCount); + INITIAL_ELEMENTS_COUNT.put(new Road(), roadCount); + INITIAL_ELEMENTS_COUNT.put(new Rockerie(), rockerieCount); + + loadScene(INITIAL_ELEMENTS_COUNT); + } + + private int parseIntOrDefault(String input) { + try { + return input.isEmpty() ? 0 : Integer.parseInt(input); + } catch (NumberFormatException e) { + return 0; + } + } + + + + @FXML + private void loadScene(Map<ModelElement, Integer> initialElementCount) { + try { + FXMLLoader loader = new FXMLLoader(); + URL location = getClass().getResource("/view/viewBord.fxml"); + loader.setLocation(location); + Parent parent = loader.load(); + ControllerBord controller = loader.getController(); + controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT, initialElementCount); + + Stage currentStage = (Stage) fire.getScene().getWindow(); + currentStage.close(); + + Stage newStage = new Stage(); + newStage.setTitle("Fire Fighter"); + newStage.setScene(new Scene(parent)); + newStage.show(); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/controller/ControllerVirusElementCount.java b/src/main/java/controller/ControllerVirusElementCount.java new file mode 100644 index 0000000000000000000000000000000000000000..3ca4222d7874fa6384fc800f772a74dd8e04d65a --- /dev/null +++ b/src/main/java/controller/ControllerVirusElementCount.java @@ -0,0 +1,64 @@ +package controller; + +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.stage.Stage; +import model.Element.*; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + +public class ControllerVirusElementCount { + private static final int ROW_COUNT = 20; + private static final int COLUMN_COUNT = 20; + private static final int SQUARE_WIDTH = 40; + private static final int SQUARE_HEIGHT = 40; + + @FXML + private TextField doctorsTextField; + @FXML + private TextField virusesTextField; + @FXML + private TextField humansTextField; + @FXML + private Button button; + + + @FXML + private void validate() { + Map<ModelElement, Integer> INITIAL_ELEMENTS_COUNT = new HashMap<>(); + INITIAL_ELEMENTS_COUNT.put(new Doctor(), Integer.parseInt(doctorsTextField.getText())); + INITIAL_ELEMENTS_COUNT.put(new Virus(), Integer.parseInt(virusesTextField.getText())); + INITIAL_ELEMENTS_COUNT.put(new Humain(), Integer.parseInt(humansTextField.getText())); + + loadScene(INITIAL_ELEMENTS_COUNT); + } + + + @FXML + private void loadScene(Map<ModelElement, Integer> initialElementCount) { + try { + FXMLLoader loader = new FXMLLoader(); + URL location = getClass().getResource("/view/virusBoard.fxml"); + loader.setLocation(location); + Parent parent = loader.load(); + ControllerBord controller = loader.getController(); + controller.initialize(SQUARE_WIDTH, SQUARE_HEIGHT, COLUMN_COUNT, ROW_COUNT,initialElementCount); + + Stage currentStage = (Stage) doctorsTextField.getScene().getWindow(); + currentStage.close(); + + Stage stage = new Stage(); + stage.setTitle("Virus"); + stage.setScene(new Scene(parent)); + stage.show(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/controller/fireFigther/PersistentToggleGroup.java b/src/main/java/controller/PersistentToggleGroup.java similarity index 96% rename from src/main/java/controller/fireFigther/PersistentToggleGroup.java rename to src/main/java/controller/PersistentToggleGroup.java index 30ba8b2b05d3c5df1a832142a8483eb7c6b04139..7c2c4b5c79d6ff65e0bfbe53c2fb7e9fd5944a1b 100644 --- a/src/main/java/controller/fireFigther/PersistentToggleGroup.java +++ b/src/main/java/controller/PersistentToggleGroup.java @@ -1,4 +1,4 @@ -package controller.fireFigther; +package controller; import javafx.collections.ListChangeListener.Change; import javafx.scene.control.Toggle; diff --git a/src/main/java/controller/SettingsController.java b/src/main/java/controller/SettingsController.java deleted file mode 100644 index 1f601978aaee01b0b677c3119e212466a35b048f..0000000000000000000000000000000000000000 --- a/src/main/java/controller/SettingsController.java +++ /dev/null @@ -1,21 +0,0 @@ -package controller; - -import javafx.fxml.FXML; -import javafx.scene.control.Spinner; - -public class SettingsController { - - @FXML - private Spinner<Integer> rowCountSpinner; - - @FXML - private Spinner<Integer> columnCountSpinner; - - public int getRowCount() { - return rowCountSpinner.getValue(); - } - - public int getColumnCount() { - return columnCountSpinner.getValue(); - } -} diff --git a/src/main/java/controller/controllerMenu.java b/src/main/java/controller/controllerMenu.java deleted file mode 100644 index e496355801f11a6ab5ba89774a7667ae97b6fe12..0000000000000000000000000000000000000000 --- a/src/main/java/controller/controllerMenu.java +++ /dev/null @@ -1,31 +0,0 @@ -package controller; - -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.scene.control.Button; - - -public class controllerMenu { - @FXML - private Button fireFighter; - - - @FXML - public void exit(ActionEvent actionEvent) { - System.exit(0); - - } - public void FireFighter(ActionEvent actionEvent){ - - - - } - public void Virus(ActionEvent actionEvent){ - - } - public void Settings(ActionEvent actionEvent){ - - - } - -} diff --git a/src/main/java/controller/fireFigther/ControllerPutElementCountController.java b/src/main/java/controller/fireFigther/ControllerPutElementCountController.java deleted file mode 100644 index a309dce886ad8ae15da8991b270e905dc708b69e..0000000000000000000000000000000000000000 --- a/src/main/java/controller/fireFigther/ControllerPutElementCountController.java +++ /dev/null @@ -1,62 +0,0 @@ -package controller.fireFigther; - -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.Spinner; -import javafx.scene.image.ImageView; - -public class ControllerPutElementCountController { - - @FXML - private Spinner<Integer> fire; - - @FXML - private Spinner<Integer> firefighter; - - @FXML - private Spinner<Integer> cloud; - - @FXML - private Spinner<Integer> motorisedFireFighter; - - @FXML - private Spinner<Integer> mountain; - - @FXML - private Spinner<Integer> road; - - @FXML - private Spinner<Integer> rockerie; - - @FXML - private Button button; - - @FXML - private Label cloudLabel; - - @FXML - private Label motorisedFireFighterLabel; - - @FXML - private Label mountainLabel; - - @FXML - private Label roadLabel; - - @FXML - private Label rockerieLabel; - - @FXML - private ImageView imageView; - - @FXML - private void initialize() { - } - - @FXML - private void handleButtonClick(ActionEvent event) { - System.out.println("Button clicked!"); - } -} diff --git a/src/main/java/model/Element/Doctor.java b/src/main/java/model/Element/Doctor.java index cce6d07472b464735cc2727984a7dea411c40fd7..c2d4a0886d7d895ed590bb49f32ca13396bd85f1 100644 --- a/src/main/java/model/Element/Doctor.java +++ b/src/main/java/model/Element/Doctor.java @@ -16,6 +16,7 @@ public class Doctor implements ModelElement { removeElement(position, board, new Doctor()); addElement(newPositionStep, board, new Doctor()); extinguishneighbor(newPositionStep,board,new Virus(),rowCount,columnCount); + } } diff --git a/src/main/java/model/Element/Virus.java b/src/main/java/model/Element/Virus.java index d125bff0f488606b0b7dffd7d2edfdae9d288f5f..960c038ec7792df6b93146f5a886c23f74d1b2f3 100644 --- a/src/main/java/model/Element/Virus.java +++ b/src/main/java/model/Element/Virus.java @@ -9,17 +9,25 @@ import java.util.Random; import static util.Tools.*; -public class Virus implements ModelElement{ +public class Virus implements ModelElement { + @Override public void update(Position position, Map<Position, List<ModelElement>> board, int step, int columnCount, int rowCount) { List<Position> neighbors = neighbors(position, rowCount, columnCount); + if (!neighbors.isEmpty()) { Random nextCloud = new Random(); Position randomNeighbor = neighbors.get(nextCloud.nextInt(neighbors.size())); - if (board.get(randomNeighbor).contains(new Humain())) { - removeElement(randomNeighbor,board,new Humain()); - addElement(randomNeighbor, board, new Virus()); + + if (board.containsKey(randomNeighbor)) { + List<ModelElement> elementsAtRandomNeighbor = board.get(randomNeighbor); + + if (elementsAtRandomNeighbor.contains(new Humain())) { + removeElement(randomNeighbor, board, new Humain()); + addElement(randomNeighbor, board, new Virus()); + } } + addElement(randomNeighbor, board, new Virus()); } diff --git a/build/resources/main/view/fireFigtherView/DarkTheme.css b/src/main/resources/view/DarkTheme.css similarity index 100% rename from build/resources/main/view/fireFigtherView/DarkTheme.css rename to src/main/resources/view/DarkTheme.css diff --git a/src/main/resources/view/Settings.fxml b/src/main/resources/view/Settings.fxml deleted file mode 100644 index 71254c0a3ee78ade5fa70ae154f1f8f02aec4d14..0000000000000000000000000000000000000000 --- a/src/main/resources/view/Settings.fxml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.Label?> -<?import javafx.scene.control.Spinner?> -<?import javafx.scene.layout.GridPane?> - -<GridPane xmlns:fx="http://javafx.com/fxml" - fx:controller="controller.SettingsController" alignment="center" hgap="10" vgap="10" padding="20"> - <Label text="Settings" style="-fx-font-size: 16;" GridPane.columnIndex="0" GridPane.rowIndex="0" GridPane.columnSpan="2"/> - - <!-- Row Count --> - <Label text="Row Count:" GridPane.columnIndex="0" GridPane.rowIndex="1"/> - <Spinner fx:id="rowCountSpinner" value="10" min="1" max="100" GridPane.columnIndex="1" GridPane.rowIndex="1"/> - - <!-- Column Count --> - <Label text="Column Count:" GridPane.columnIndex="0" GridPane.rowIndex="2"/> - <Spinner fx:id="columnCountSpinner" value="10" min="1" max="100" GridPane.columnIndex="1" GridPane.rowIndex="2"/> -</GridPane> diff --git a/src/main/resources/view/fireFigtherView/DarkTheme.css b/src/main/resources/view/fireFigtherView/DarkTheme.css deleted file mode 100644 index 46b78aaf90972dd435399466c9fd861ca73fc59f..0000000000000000000000000000000000000000 --- a/src/main/resources/view/fireFigtherView/DarkTheme.css +++ /dev/null @@ -1,142 +0,0 @@ -.background { - -fx-background-color: #1d1d1d; -} - -.label { - -fx-font-size: 11pt; - -fx-font-family: "Segoe UI Semibold"; - -fx-text-fill: white; - -fx-opacity: 0.6; -} - -.label-bright { - -fx-font-size: 11pt; - -fx-font-family: "Segoe UI Semibold"; - -fx-text-fill: white; - -fx-opacity: 1; -} - -.label-header { - -fx-font-size: 32pt; - -fx-font-family: "Segoe UI Light"; - -fx-text-fill: white; - -fx-opacity: 1; -} - -.table-view { - -fx-base: #1d1d1d; - -fx-control-inner-background: #1d1d1d; - -fx-background-color: #1d1d1d; - -fx-table-cell-border-color: transparent; - -fx-table-header-border-color: transparent; - -fx-padding: 5; -} - -.table-view .column-header-background { - -fx-background-color: transparent; -} - -.table-view .column-header, .table-view .filler { - -fx-border-width: 0 0 1 0; - -fx-background-color: transparent; - -fx-border-color: - transparent - transparent - derive(-fx-base, 80%) - transparent; - -fx-border-insets: 0 10 1 0; -} - -.table-view .column-header .label { - -fx-font-size: 20pt; - -fx-font-family: "Segoe UI Light"; - -fx-text-fill: white; - -fx-alignment: center-left; - -fx-opacity: 1; -} - -.table-view:focused .table-row-cell:filled:focused:selected { - -fx-background-color: -fx-focus-color; -} - -.split-pane:horizontal > .split-pane-divider { - -fx-border-color: transparent #1d1d1d transparent #1d1d1d; - -fx-background-color: transparent, derive(#1d1d1d,20%); -} - -.split-pane { - -fx-padding: 1 0 0 0; -} - -.menu-bar { - -fx-background-color: derive(#1d1d1d,20%); -} - -.context-menu { - -fx-background-color: derive(#1d1d1d,50%); -} - -.menu-bar .label { - -fx-font-size: 14pt; - -fx-font-family: "Segoe UI Light"; - -fx-text-fill: white; - -fx-opacity: 0.9; -} - -.menu .left-container { - -fx-background-color: black; -} - -.text-field { - -fx-font-size: 12pt; - -fx-font-family: "Segoe UI Semibold"; -} - -/* - * Metro style Push Button - * Author: Pedro Duque Vieira - * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/ - */ -.button { - -fx-padding: 5 22 5 22; - -fx-border-color: #e2e2e2; - -fx-border-width: 2; - -fx-background-radius: 0; - -fx-background-color: #1d1d1d; - -fx-font-family: "Segoe UI", Helvetica, Arial, sans-serif; - -fx-font-size: 11pt; - -fx-text-fill: #d8d8d8; - -fx-background-insets: 0 0 0 0, 0, 1, 2; -} - -.button:hover { - -fx-background-color: #3a3a3a; -} - -.button:pressed, .button:default:hover:pressed { - -fx-background-color: white; - -fx-text-fill: #1d1d1d; -} - -.button:focused { - -fx-border-color: white, white; - -fx-border-width: 1, 1; - -fx-border-style: solid; - -fx-border-radius: 0, 0; - -fx-border-insets: 1 1 1 1, 0; -} - -.button:disabled, .button:default:disabled { - -fx-opacity: 0.4; - -fx-background-color: #1d1d1d; - -fx-text-fill: white; -} - -.button:default { - -fx-background-color: -fx-focus-color; - -fx-text-fill: #ffffff; -} - -.button:default:hover { - -fx-background-color: derive(-fx-focus-color,30%); -} \ No newline at end of file diff --git a/src/main/resources/view/fireFigtherView/fireFigtherBord.fxml b/src/main/resources/view/fireFigtherView/fireFigtherBord.fxml deleted file mode 100644 index 7e1c179c34759e686122a03577556f25d189aece..0000000000000000000000000000000000000000 --- a/src/main/resources/view/fireFigtherView/fireFigtherBord.fxml +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.Button?> -<?import javafx.scene.layout.HBox?> -<?import javafx.scene.layout.VBox?> -<?import view.FirefighterGrid?> - -<?import javafx.scene.control.ToggleButton?> -<?import javafx.scene.control.Separator?> -<?import javafx.scene.control.Label?> -<HBox styleClass="background" stylesheets="@DarkTheme.css" - xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" - fx:controller="controller.fireFigther.ControllerFireFigtherBord"> - <VBox> - <Separator maxHeight="-Infinity" maxWidth="-Infinity" - prefHeight="24.0" prefWidth="200.0"/> - <Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0" - text="Generation number"/> - <Label fx:id="generationNumberLabel" alignment="CENTER" contentDisplay="TEXT_ONLY" - maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> - <Separator maxHeight="-Infinity" maxWidth="-Infinity" - prefHeight="24.0" prefWidth="200.0"/> - <Button fx:id="restartButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#restartButtonAction" prefHeight="24.0" prefWidth="200.0" - text="Restart"/> - <Button fx:id="oneStepButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#oneStepButtonAction" prefHeight="24.0" prefWidth="200.0" - text="One step"/> - <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0" - prefWidth="200.0" styleClass="button" text="Play"/> - <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" - mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" - prefWidth="200.0" styleClass="button" text="Pause"/> - </VBox> - <FirefighterGrid fx:id="grid" width="1000.0" height="1000.0" - xmlns="http://javafx.com/javafx" - xmlns:fx="http://javafx.com/fxml"> - </FirefighterGrid> -</HBox> diff --git a/src/main/resources/view/fireFigtherView/putElementCount.fxml b/src/main/resources/view/fireFigtherView/putElementCount.fxml deleted file mode 100644 index 3d8003d6466fe273c17056ff7be7d0abc7d6f623..0000000000000000000000000000000000000000 --- a/src/main/resources/view/fireFigtherView/putElementCount.fxml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<?import javafx.scene.control.*?> -<?import javafx.scene.image.*?> -<?import javafx.scene.layout.*?> - -<AnchorPane fx:id="putElementCount" fx:controller="controller.fireFigther.ControllerPutElementCountController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="434.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1"> - <children> - <Spinner fx:id="fire" editable="true" layoutX="106.0" layoutY="31.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100" /> - <Label layoutX="265.0" layoutY="14.0" text="Fire" /> - <Label layoutX="245.0" layoutY="64.0" text="Fire Fighter" /> - <Spinner fx:id="firefighter" layoutX="106.0" layoutY="82.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100"/> - <Spinner fx:id="Cloud" layoutX="102.0" layoutY="134.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100" /> - <Spinner fx:id="MotorisedFireFighter" layoutX="106.0" layoutY="186.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100" /> - <Spinner fx:id="Mountain" layoutX="102.0" layoutY="234.0" prefHeight="25.0" prefWidth="363.0" value="10" min="1" max="100"/> - <Spinner fx:id="Road" layoutX="101.0" layoutY="286.0" prefHeight="25.0" prefWidth="355.0" value="10" min="1" max="100"/> - <Spinner fx:id="Rockerie" layoutX="100.0" layoutY="335.0" prefHeight="25.0" prefWidth="355.0" value="10" min="1" max="100"/> - <Button layoutX="229.0" layoutY="376.0" mnemonicParsing="false" prefHeight="55.0" prefWidth="92.0" text="Button" /> - <Label layoutX="259.0" layoutY="116.0" text="Cloud" /> - <Label layoutX="215.0" layoutY="169.0" text="Motorised Fire Fighter" /> - <Label layoutX="249.0" layoutY="217.0" text="Mountain" /> - <Label layoutX="260.0" layoutY="269.0" text="Road" /> - <Label layoutX="251.0" layoutY="318.0" text="Rockerie" /> - <ImageView fitHeight="62.0" fitWidth="102.0" layoutX="223.0" layoutY="373.0" pickOnBounds="true" preserveRatio="true" /> - </children> -</AnchorPane> diff --git a/src/main/resources/view/menu.fxml b/src/main/resources/view/menu.fxml index e974135e404bb15ad97b487aec3080719a8f7dc3..801d37f6d36cd94a1166ca094238783591e5f85d 100644 --- a/src/main/resources/view/menu.fxml +++ b/src/main/resources/view/menu.fxml @@ -3,11 +3,10 @@ <?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> -<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.controllerMenu"> +<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.ControllerMenu"> <children> - <Button fx:id="FireFighter" layoutX="36.0" layoutY="119.0" mnemonicParsing="false" onAction="#FireFighter" prefHeight="106.0" prefWidth="259.0" text="firefiter" /> + <Button fx:id="FireFighter" layoutX="36.0" layoutY="119.0" mnemonicParsing="false" onAction="#FireFighter" prefHeight="106.0" prefWidth="259.0" text="FireFighter" /> <Button fx:id="Virus" layoutX="321.0" layoutY="119.0" mnemonicParsing="false" onAction="#Virus" prefHeight="106.0" prefWidth="259.0" text="virus" /> - <Button fx:id="Settings" layoutX="541.0" layoutY="14.0" mnemonicParsing="false" onAction="#Settings" prefHeight="41.0" prefWidth="45.0" text="setting" /> - <Button layoutX="14.0" layoutY="14.0" mnemonicParsing="false" onAction="#exit" prefHeight="35.0" prefWidth="96.0" text="exit" /> + <Button layoutX="14.0" layoutY="14.0" mnemonicParsing="false" prefHeight="35.0" prefWidth="96.0" text="exit" onAction="#exit" /> </children> </AnchorPane> diff --git a/src/main/resources/view/putElementCount.fxml b/src/main/resources/view/putElementCount.fxml new file mode 100644 index 0000000000000000000000000000000000000000..8d5b2e6fb42035ca40cbb6f7864c70056e674b13 --- /dev/null +++ b/src/main/resources/view/putElementCount.fxml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> + +<AnchorPane xmlns="http://javafx.com/javafx" + xmlns:fx="http://javafx.com/fxml" + fx:controller="controller.ControllerPutElementCount" + prefHeight="400.0" prefWidth="600.0"> + + <VBox alignment="CENTER" spacing="20"> + + <Label text="Enter the Number of Elements" /> + + <HBox spacing="10"> + <Label text="Fire:" /> + <TextField fx:id="fire" text="3" /> + </HBox> + + <HBox spacing="10"> + <Label text="FireFighter:" /> + <TextField fx:id="firefighter" text="5" /> + </HBox> + + <HBox spacing="10"> + <Label text="Motorised FireFighter:" /> + <TextField fx:id="motorisedFireFighter" text="7" /> + </HBox> + + <HBox spacing="10"> + <Label text="Mountain:" /> + <TextField fx:id="mountain" text="5"/> + </HBox> + + <HBox spacing="10"> + <Label text="Cloud:" /> + <TextField fx:id="cloud" text="5" /> + </HBox> + + <HBox spacing="10"> + <Label text="Road:" /> + <TextField fx:id="road" text="5" /> + </HBox> + + <HBox spacing="10"> + <Label text="Rockerie:" /> + <TextField fx:id="rockerie" text="5" /> + </HBox> + + <Button text="Validate" onAction="#initialize" /> + + </VBox> + +</AnchorPane> diff --git a/src/main/resources/view/viewBord.fxml b/src/main/resources/view/viewBord.fxml new file mode 100644 index 0000000000000000000000000000000000000000..4cb6ca2d2163ccc40b2b8441370cbd68667caec9 --- /dev/null +++ b/src/main/resources/view/viewBord.fxml @@ -0,0 +1,59 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Button?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> +<?import view.FirefighterGrid?> + +<?import javafx.scene.control.ToggleButton?> +<?import javafx.scene.control.Separator?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.layout.StackPane?> +<?import javafx.scene.shape.Rectangle?> + +<HBox styleClass="background" stylesheets="@DarkTheme.css" + xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" + fx:controller="controller.ControllerBord"> + <VBox spacing="5"> <!-- Added spacing to VBox --> + <Separator maxHeight="-Infinity" maxWidth="-Infinity" + prefHeight="24.0" prefWidth="200.0"/> + <Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0" + text="Generation number"/> + <Label fx:id="generationNumberLabel" alignment="CENTER" contentDisplay="TEXT_ONLY" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Separator maxHeight="-Infinity" maxWidth="-Infinity" + prefHeight="24.0" prefWidth="200.0"/> + <Button fx:id="restartButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#restartButtonAction" prefHeight="24.0" prefWidth="200.0" + text="Restart"/> + <Button fx:id="oneStepButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#oneStepButtonAction" prefHeight="24.0" prefWidth="200.0" + text="One step"/> + <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0" + prefWidth="200.0" styleClass="button" text="Play"/> + <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" + prefWidth="200.0" styleClass="button" text="Pause"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="Légende :" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="rouge = fire" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="bleu = firefighter" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="gris = cloud" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="noir = road" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="orange = motorisedFireFighter" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="marron = mountain" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="gris clair = rockerie" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + </VBox> + <FirefighterGrid fx:id="grid" width="1000.0" height="1000.0" + xmlns="http://javafx.com/javafx" + xmlns:fx="http://javafx.com/fxml"> + </FirefighterGrid> +</HBox> diff --git a/src/main/resources/view/virusBoard.fxml b/src/main/resources/view/virusBoard.fxml new file mode 100644 index 0000000000000000000000000000000000000000..6ddb08070ea423798f9d474fc4eb78a0a31f9c92 --- /dev/null +++ b/src/main/resources/view/virusBoard.fxml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.Button?> +<?import javafx.scene.layout.HBox?> +<?import javafx.scene.layout.VBox?> +<?import view.FirefighterGrid?> + +<?import javafx.scene.control.ToggleButton?> +<?import javafx.scene.control.Separator?> +<?import javafx.scene.control.Label?> +<?import javafx.scene.layout.StackPane?> +<?import javafx.scene.shape.Rectangle?> + +<HBox styleClass="background" stylesheets="@DarkTheme.css" + xmlns="http://javafx.com/javafx" xmlns:fx="http://javafx.com/fxml" + fx:controller="controller.ControllerBord"> + <VBox spacing="5"> <!-- Added spacing to VBox --> + <Separator maxHeight="-Infinity" maxWidth="-Infinity" + prefHeight="24.0" prefWidth="200.0"/> + <Label maxHeight="-Infinity" maxWidth="-Infinity" alignment="CENTER" prefHeight="24.0" prefWidth="200.0" + text="Generation number"/> + <Label fx:id="generationNumberLabel" alignment="CENTER" contentDisplay="TEXT_ONLY" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Separator maxHeight="-Infinity" maxWidth="-Infinity" + prefHeight="24.0" prefWidth="200.0"/> + <Button fx:id="restartButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#restartButtonAction" prefHeight="24.0" prefWidth="200.0" + text="Restart"/> + <Button fx:id="oneStepButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#oneStepButtonAction" prefHeight="24.0" prefWidth="200.0" + text="One step"/> + <ToggleButton fx:id="playToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#playToggleButtonAction" prefHeight="24.0" + prefWidth="200.0" styleClass="button" text="Play"/> + <ToggleButton fx:id="pauseToggleButton" maxHeight="-Infinity" maxWidth="-Infinity" + mnemonicParsing="false" onAction="#pauseToggleButtonAction" prefHeight="24.0" + prefWidth="200.0" styleClass="button" text="Pause"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="Légende :" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="mauve = virus" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="bleu clair = doctor" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + <Label alignment="CENTER" contentDisplay="TEXT_ONLY" text="noir = humain" + maxHeight="-Infinity" maxWidth="-Infinity" prefHeight="24.0" prefWidth="200.0"/> + </VBox> + <FirefighterGrid fx:id="grid" width="1000.0" height="1000.0" + xmlns="http://javafx.com/javafx" + xmlns:fx="http://javafx.com/fxml"> + </FirefighterGrid> +</HBox> diff --git a/src/main/resources/view/virusElementCount.fxml b/src/main/resources/view/virusElementCount.fxml new file mode 100644 index 0000000000000000000000000000000000000000..651f3df09e792f39b56b00016c6c123e94bbd98e --- /dev/null +++ b/src/main/resources/view/virusElementCount.fxml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> + +<AnchorPane xmlns="http://javafx.com/javafx" + xmlns:fx="http://javafx.com/fxml" + fx:controller="controller.ControllerVirusElementCount" + prefHeight="400.0" prefWidth="600.0"> + + <VBox alignment="CENTER" spacing="20"> + + <Label text="Enter the Number of Elements" /> + + <HBox spacing="10"> + <Label text="Doctors:" /> + <TextField fx:id="doctorsTextField" text="3"/> + </HBox> + + <HBox spacing="10"> + <Label text="Viruses:" /> + <TextField fx:id="virusesTextField" text="3" /> + </HBox> + + <HBox spacing="10"> + <Label text="Humans:" /> + <TextField fx:id="humansTextField" text="10" /> + </HBox> + + <Button text="Validate" onAction="#validate" /> + + </VBox> + +</AnchorPane>