From 758815af2b62619c5bc93f9cbc592e58eb1c2fce Mon Sep 17 00:00:00 2001 From: koz01 <koz01@PCFEIB213-100.msad.vsb.cz> Date: Wed, 26 Oct 2022 09:59:02 +0200 Subject: [PATCH] Controller, GameView --- src/main/java/lab/App.java | 16 ++++++------ src/main/java/lab/GameController.java | 20 ++++++++++++--- src/main/resources/lab/GameView.fxml | 36 +++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 13 deletions(-) create mode 100644 src/main/resources/lab/GameView.fxml diff --git a/src/main/java/lab/App.java b/src/main/java/lab/App.java index fc4398c..f16a4d9 100644 --- a/src/main/java/lab/App.java +++ b/src/main/java/lab/App.java @@ -1,9 +1,9 @@ package lab; import javafx.application.Application; -import javafx.scene.Group; +import javafx.fxml.FXMLLoader; import javafx.scene.Scene; -import javafx.scene.canvas.Canvas; +import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import javafx.stage.WindowEvent; @@ -17,25 +17,23 @@ public class App extends Application { launch(args); } - private Canvas canvas; private GameController controller; + @Override public void start(Stage primaryStage) { try { //Construct a main window with a canvas. - - Group root = new Group(); - canvas = new Canvas(800, 600); - root.getChildren().add(canvas); + FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("GameView.fxml")); + BorderPane root = fxmlLoader.load(); Scene scene = new Scene(root); - + controller = fxmlLoader.getController(); primaryStage.setScene(scene); primaryStage.resizableProperty().set(false); primaryStage.setTitle("Java 1 - 5th laboratory"); primaryStage.show(); - controller = new GameController(canvas); + controller.startGame(); //Exit program when main window is closed primaryStage.setOnCloseRequest(this::exitProgram); diff --git a/src/main/java/lab/GameController.java b/src/main/java/lab/GameController.java index 5385570..ec3ebdc 100644 --- a/src/main/java/lab/GameController.java +++ b/src/main/java/lab/GameController.java @@ -1,17 +1,29 @@ package lab; import javafx.animation.AnimationTimer; +import javafx.fxml.FXML; import javafx.scene.canvas.Canvas; +import javafx.scene.control.Button; +import javafx.scene.control.Slider; public class GameController { private World world; + + @FXML private Canvas canvas; - private AnimationTimer animationTimer; - public GameController(Canvas canvas) { - this.canvas = canvas; - } + @FXML + private Slider angleSlider; + + @FXML + private Button fireButton; + + @FXML + private Slider forceSlider; + + + private AnimationTimer animationTimer; public void startGame() { this.world = new World(canvas.getWidth(), canvas.getHeight()); diff --git a/src/main/resources/lab/GameView.fxml b/src/main/resources/lab/GameView.fxml new file mode 100644 index 0000000..8b34857 --- /dev/null +++ b/src/main/resources/lab/GameView.fxml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import javafx.geometry.Insets?> +<?import javafx.scene.canvas.Canvas?> +<?import javafx.scene.control.Button?> +<?import javafx.scene.control.Slider?> +<?import javafx.scene.layout.BorderPane?> +<?import javafx.scene.layout.HBox?> + + +<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="lab.GameController"> + <center> + <Canvas fx:id="canvas" height="400.0" width="600.0" BorderPane.alignment="CENTER" /> + </center> + <bottom> + <HBox BorderPane.alignment="CENTER"> + <children> + <Slider fx:id="angleSlider" max="90.0" showTickLabels="true" showTickMarks="true" HBox.hgrow="ALWAYS"> + <padding> + <Insets bottom="11.0" left="13.0" right="13.0" top="11.0" /> + </padding> + </Slider> + <Button fx:id="fireButton" mnemonicParsing="false" text="Fire" HBox.hgrow="ALWAYS"> + <padding> + <Insets bottom="11.0" left="13.0" right="13.0" top="11.0" /> + </padding> + </Button> + <Slider fx:id="forceSlider" max="200.0" min="10.0" showTickLabels="true" showTickMarks="true" HBox.hgrow="ALWAYS"> + <HBox.margin> + <Insets bottom="11.0" left="13.0" right="13.0" top="11.0" /> + </HBox.margin> + </Slider> + </children> + </HBox> + </bottom> +</BorderPane> -- GitLab