From 993308a9c31446bf0486dbf134df78da12474cb7 Mon Sep 17 00:00:00 2001 From: jez04 <david.jezek@post.cz> Date: Thu, 6 Mar 2025 01:11:17 +0100 Subject: [PATCH] feat: lab03 assignment --- java2-lab02-common-v3/.gitignore | 16 ---- java2-lab02-common-v3/pom.xml | 79 --------------- .../src/main/java/module-info.java | 5 - .../java/cz/vsb/fei/java2/lab01/AppTest.java | 19 ---- java2-lab02-db-v3/.gitignore | 16 ---- java2-lab02-db-v3/pom.xml | 90 ------------------ .../src/main/java/module-info.java | 11 --- .../src/main/resources/log4j2.xml | 13 --- java2-lab02-file-v3/.gitignore | 16 ---- java2-lab02-file-v3/pom.xml | 84 ---------------- .../src/main/java/module-info.java | 9 -- java2-lab02-v3/.gitignore | 1 - java2-lab02-v3/scores.csv | 3 - .../main/java/lab/ScoreStorageFactory.java | 39 -------- java2-lab02-v3/pom.xml => pom.xml | 21 ++-- src/main/java/lab/Config.java | 69 ++++++++++++++ .../main/java/lab/data}/Score.java | 2 +- .../main/java/lab/game/Background.java | 0 .../src => src}/main/java/lab/game/Boat.java | 23 +++-- .../main/java/lab/game/Collisionable.java | 0 .../main/java/lab/game/DeadListener.java | 0 .../main/java/lab/game/Difficult.java | 0 .../main/java/lab/game/DrawableSimulable.java | 0 .../main/java/lab/game/DrawingThread.java | 0 .../main/java/lab/game/LochNess.java | 13 ++- .../src => src}/main/java/lab/game/Rock.java | 0 .../main/java/lab/game/Routines.java | 0 .../src => src}/main/java/lab/game/Scene.java | 6 +- .../main/java/lab/game/WorldEntity.java | 0 .../src => src}/main/java/lab/gui/App.java | 2 + .../main/java/lab/gui/GameController.java | 10 +- .../java/lab/gui/MainScreenController.java | 14 +-- .../main/java/lab/storage}/DbConnector.java | 6 +- .../main/java/lab/storage}/FileStorage.java | 5 +- .../lab/storage}/ScoreStorageInterface.java | 4 +- .../src => src}/main/java/module-info.java | 9 +- .../main/resources/lab/game/LochNess.gif | Bin .../main/resources/lab/game/cityclose400.png | Bin .../main/resources/lab/game/cityfar400.png | Bin .../main/resources/lab/game/citymid400.png | Bin .../resources/lab/game/cityreflection400.png | Bin .../main/resources/lab/game/ship-boat.gif | Bin .../main/resources/lab/gui/application.css | 0 .../main/resources/lab/gui/gameWindow.fxml | 2 +- .../resources/lab/gui/lochness-background.jpg | Bin .../main/resources/lab/gui/mainScreen.fxml | 0 .../structure/test/ClassStructureTest.java | 0 .../jez04/structure/test/StructureHelper.java | 0 48 files changed, 130 insertions(+), 457 deletions(-) delete mode 100644 java2-lab02-common-v3/.gitignore delete mode 100644 java2-lab02-common-v3/pom.xml delete mode 100644 java2-lab02-common-v3/src/main/java/module-info.java delete mode 100644 java2-lab02-common-v3/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java delete mode 100644 java2-lab02-db-v3/.gitignore delete mode 100644 java2-lab02-db-v3/pom.xml delete mode 100644 java2-lab02-db-v3/src/main/java/module-info.java delete mode 100644 java2-lab02-db-v3/src/main/resources/log4j2.xml delete mode 100644 java2-lab02-file-v3/.gitignore delete mode 100644 java2-lab02-file-v3/pom.xml delete mode 100644 java2-lab02-file-v3/src/main/java/module-info.java delete mode 100644 java2-lab02-v3/.gitignore delete mode 100644 java2-lab02-v3/scores.csv delete mode 100644 java2-lab02-v3/src/main/java/lab/ScoreStorageFactory.java rename java2-lab02-v3/pom.xml => pom.xml (90%) create mode 100644 src/main/java/lab/Config.java rename {java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common => src/main/java/lab/data}/Score.java (98%) rename {java2-lab02-v3/src => src}/main/java/lab/game/Background.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/Boat.java (54%) rename {java2-lab02-v3/src => src}/main/java/lab/game/Collisionable.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/DeadListener.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/Difficult.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/DrawableSimulable.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/DrawingThread.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/LochNess.java (81%) rename {java2-lab02-v3/src => src}/main/java/lab/game/Rock.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/Routines.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/game/Scene.java (94%) rename {java2-lab02-v3/src => src}/main/java/lab/game/WorldEntity.java (100%) rename {java2-lab02-v3/src => src}/main/java/lab/gui/App.java (97%) rename {java2-lab02-v3/src => src}/main/java/lab/gui/GameController.java (91%) rename {java2-lab02-v3/src => src}/main/java/lab/gui/MainScreenController.java (84%) rename {java2-lab02-db-v3/src/main/java/cz/vsb/fei/java2/lab02/db => src/main/java/lab/storage}/DbConnector.java (92%) rename {java2-lab02-file-v3/src/main/java/cz/vsb/fei/file => src/main/java/lab/storage}/FileStorage.java (91%) rename {java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common => src/main/java/lab/storage}/ScoreStorageInterface.java (78%) rename {java2-lab02-v3/src => src}/main/java/module-info.java (53%) rename {java2-lab02-v3/src => src}/main/resources/lab/game/LochNess.gif (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/game/cityclose400.png (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/game/cityfar400.png (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/game/citymid400.png (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/game/cityreflection400.png (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/game/ship-boat.gif (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/gui/application.css (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/gui/gameWindow.fxml (95%) rename {java2-lab02-v3/src => src}/main/resources/lab/gui/lochness-background.jpg (100%) rename {java2-lab02-v3/src => src}/main/resources/lab/gui/mainScreen.fxml (100%) rename {java2-lab02-v3/src => src}/test/java/jez04/structure/test/ClassStructureTest.java (100%) rename {java2-lab02-v3/src => src}/test/java/jez04/structure/test/StructureHelper.java (100%) diff --git a/java2-lab02-common-v3/.gitignore b/java2-lab02-common-v3/.gitignore deleted file mode 100644 index 98b99a5..0000000 --- a/java2-lab02-common-v3/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# Eclipse -.classpath -.project -.settings/ - -# Intellij -.idea/ -*.iml -*.iws - -# Mac -.DS_Store - -# Maven -log/ -target/ diff --git a/java2-lab02-common-v3/pom.xml b/java2-lab02-common-v3/pom.xml deleted file mode 100644 index b171bf2..0000000 --- a/java2-lab02-common-v3/pom.xml +++ /dev/null @@ -1,79 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-common-v3</artifactId> - <version>0.0.1-SNAPSHOT</version> - - <name>java2-lab02-common-v3</name> - - <packaging>jar</packaging> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.compiler.release>21</maven.compiler.release> - <JUnit.version>5.11.0</JUnit.version> - <log4j.version>2.23.1</log4j.version> - <lombok.version>1.18.34</lombok.version> - </properties> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.junit</groupId> - <artifactId>junit-bom</artifactId> - <version>${JUnit.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - - <dependencies> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>${lombok.version}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.13.0</version> - <configuration> - <annotationProcessorPaths> - <path> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>${lombok.version}</version> - </path> - </annotationProcessorPaths> - </configuration> - </plugin> - <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>3.5.0</version> - </plugin> - </plugins> - </build> - -</project> diff --git a/java2-lab02-common-v3/src/main/java/module-info.java b/java2-lab02-common-v3/src/main/java/module-info.java deleted file mode 100644 index e9edf40..0000000 --- a/java2-lab02-common-v3/src/main/java/module-info.java +++ /dev/null @@ -1,5 +0,0 @@ -module cz.vsb.fei.java2.lab02.common_module { - requires static lombok; - requires org.apache.logging.log4j; - exports cz.vsb.fei.java2.lab02.common; -} \ No newline at end of file diff --git a/java2-lab02-common-v3/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java b/java2-lab02-common-v3/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java deleted file mode 100644 index 9102a3a..0000000 --- a/java2-lab02-common-v3/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java +++ /dev/null @@ -1,19 +0,0 @@ -package cz.vsb.fei.java2.lab01; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -import org.junit.jupiter.api.Test; - -/** - * Unit test for simple App. - */ -class AppTest { - - /** - * Rigorous Test :-) - */ - @Test - void shouldAnswerWithTrue() { - assertTrue(true); - } -} diff --git a/java2-lab02-db-v3/.gitignore b/java2-lab02-db-v3/.gitignore deleted file mode 100644 index 98b99a5..0000000 --- a/java2-lab02-db-v3/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# Eclipse -.classpath -.project -.settings/ - -# Intellij -.idea/ -*.iml -*.iws - -# Mac -.DS_Store - -# Maven -log/ -target/ diff --git a/java2-lab02-db-v3/pom.xml b/java2-lab02-db-v3/pom.xml deleted file mode 100644 index d3fb125..0000000 --- a/java2-lab02-db-v3/pom.xml +++ /dev/null @@ -1,90 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-db-v3</artifactId> - <version>0.0.1-SNAPSHOT</version> - - <name>java2-lab02-db-v3</name> - - <packaging>jar</packaging> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.compiler.release>21</maven.compiler.release> - <JUnit.version>5.11.0</JUnit.version> - <log4j.version>2.23.1</log4j.version> - <lombok.version>1.18.34</lombok.version> - </properties> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.junit</groupId> - <artifactId>junit-bom</artifactId> - <version>${JUnit.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - - <dependencies> - <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-common-v3</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>com.h2database</groupId> - <artifactId>h2</artifactId> - <version>2.3.232</version> - </dependency> - - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>${lombok.version}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.13.0</version> - <configuration> - <annotationProcessorPaths> - <path> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>${lombok.version}</version> - </path> - </annotationProcessorPaths> - </configuration> - </plugin> - <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>3.5.0</version> - </plugin> - </plugins> - </build> - -</project> diff --git a/java2-lab02-db-v3/src/main/java/module-info.java b/java2-lab02-db-v3/src/main/java/module-info.java deleted file mode 100644 index b10ea8f..0000000 --- a/java2-lab02-db-v3/src/main/java/module-info.java +++ /dev/null @@ -1,11 +0,0 @@ -import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface; -import cz.vsb.fei.java2.lab02.db.DbConnector; - -module cz.vsb.fei.java2.lab02.db_module { - requires static lombok; - requires org.apache.logging.log4j; - requires transitive cz.vsb.fei.java2.lab02.common_module; - requires java.sql; - exports cz.vsb.fei.java2.lab02.db; - provides ScoreStorageInterface with cz.vsb.fei.java2.lab02.db.DbConnector; -} \ No newline at end of file diff --git a/java2-lab02-db-v3/src/main/resources/log4j2.xml b/java2-lab02-db-v3/src/main/resources/log4j2.xml deleted file mode 100644 index acb3514..0000000 --- a/java2-lab02-db-v3/src/main/resources/log4j2.xml +++ /dev/null @@ -1,13 +0,0 @@ -<Configuration> - <Appenders> - <Console name="Console"> - <PatternLayout - pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> - </Console> - </Appenders> - <Loggers> - <Root level="info"> - <AppenderRef ref="Console"></AppenderRef> - </Root> - </Loggers> -</Configuration> diff --git a/java2-lab02-file-v3/.gitignore b/java2-lab02-file-v3/.gitignore deleted file mode 100644 index 98b99a5..0000000 --- a/java2-lab02-file-v3/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -# Eclipse -.classpath -.project -.settings/ - -# Intellij -.idea/ -*.iml -*.iws - -# Mac -.DS_Store - -# Maven -log/ -target/ diff --git a/java2-lab02-file-v3/pom.xml b/java2-lab02-file-v3/pom.xml deleted file mode 100644 index 667061c..0000000 --- a/java2-lab02-file-v3/pom.xml +++ /dev/null @@ -1,84 +0,0 @@ -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-file-v3</artifactId> - <version>1.0-SNAPSHOT</version> - - <name>java2-lab02-file-v3</name> - - <packaging>jar</packaging> - - <properties> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.compiler.release>21</maven.compiler.release> - <JUnit.version>5.11.0</JUnit.version> - <log4j.version>2.23.1</log4j.version> - <lombok.version>1.18.34</lombok.version> - </properties> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.junit</groupId> - <artifactId>junit-bom</artifactId> - <version>${JUnit.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - - <dependencies> - <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-common-v3</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.junit.jupiter</groupId> - <artifactId>junit-jupiter</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-api</artifactId> - <version>${log4j.version}</version> - </dependency> - <dependency> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>${lombok.version}</version> - <scope>provided</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.13.0</version> - <configuration> - <annotationProcessorPaths> - <path> - <groupId>org.projectlombok</groupId> - <artifactId>lombok</artifactId> - <version>${lombok.version}</version> - </path> - </annotationProcessorPaths> - </configuration> - </plugin> - <plugin> - <artifactId>maven-surefire-plugin</artifactId> - <version>3.5.0</version> - </plugin> - </plugins> - </build> - -</project> diff --git a/java2-lab02-file-v3/src/main/java/module-info.java b/java2-lab02-file-v3/src/main/java/module-info.java deleted file mode 100644 index cff2f09..0000000 --- a/java2-lab02-file-v3/src/main/java/module-info.java +++ /dev/null @@ -1,9 +0,0 @@ -import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface; - -module cz.vsb.fei.file_module { - requires static lombok; - requires org.apache.logging.log4j; - requires transitive cz.vsb.fei.java2.lab02.common_module; - exports cz.vsb.fei.file; - provides ScoreStorageInterface with cz.vsb.fei.file.FileStorage; -} \ No newline at end of file diff --git a/java2-lab02-v3/.gitignore b/java2-lab02-v3/.gitignore deleted file mode 100644 index b83d222..0000000 --- a/java2-lab02-v3/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target/ diff --git a/java2-lab02-v3/scores.csv b/java2-lab02-v3/scores.csv deleted file mode 100644 index 290f751..0000000 --- a/java2-lab02-v3/scores.csv +++ /dev/null @@ -1,3 +0,0 @@ -RobotRanger;280 -PixelPioneer;82 -DigitalDynamo;58 diff --git a/java2-lab02-v3/src/main/java/lab/ScoreStorageFactory.java b/java2-lab02-v3/src/main/java/lab/ScoreStorageFactory.java deleted file mode 100644 index b613d07..0000000 --- a/java2-lab02-v3/src/main/java/lab/ScoreStorageFactory.java +++ /dev/null @@ -1,39 +0,0 @@ -package lab; - -import java.util.ArrayList; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.Random; -import java.util.ServiceLoader; - -import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface; -import javafx.scene.control.Alert; -import javafx.scene.control.ButtonType; -import javafx.stage.Modality; -import javafx.scene.control.Alert.AlertType; - -public class ScoreStorageFactory { - - private static ScoreStorageInterface instance; - - private ScoreStorageFactory() { - /* hide public one constructor */ - } - - public static ScoreStorageInterface getInstance() { - if (instance == null) { - List<ScoreStorageInterface> availableImplementations = new ArrayList<>(); - ServiceLoader.load(ScoreStorageInterface.class).forEach(availableImplementations::add); - if (availableImplementations.isEmpty()) { - throw new NoSuchElementException( - "Service loader did not find any implementation of interface ScoreStorageInterface."); - } - instance = availableImplementations.get(new Random().nextInt(availableImplementations.size())); - Alert info = new Alert(AlertType.INFORMATION, - String.format("Storage %s selected.", instance.getClass().getName()), ButtonType.OK); - info.initModality(Modality.WINDOW_MODAL); - info.showAndWait(); - } - return instance; - } -} diff --git a/java2-lab02-v3/pom.xml b/pom.xml similarity index 90% rename from java2-lab02-v3/pom.xml rename to pom.xml index b82a9f7..37f2c28 100644 --- a/java2-lab02-v3/pom.xml +++ b/pom.xml @@ -3,10 +3,10 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-v3</artifactId> + <artifactId>java2-lab03-v3</artifactId> <version>0.0.1-SNAPHOST</version> <packaging>jar</packaging> - <name>java2-lab02-v3</name> + <name>java2-lab03-v3</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>21</maven.compiler.source> @@ -14,19 +14,10 @@ </properties> <dependencies> <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-common-v3</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-db-v3</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-file-v3</artifactId> - <version>1.0-SNAPSHOT</version> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + <version>2.3.232</version> + <scope>runtime</scope> </dependency> <dependency> diff --git a/src/main/java/lab/Config.java b/src/main/java/lab/Config.java new file mode 100644 index 0000000..8505d32 --- /dev/null +++ b/src/main/java/lab/Config.java @@ -0,0 +1,69 @@ +package lab; + +import lab.storage.DbConnector; +import lab.storage.ScoreStorageInterface; + +public class Config { + + private static Config instance; + + private ScoreStorageInterface scoreStorageInterface = new DbConnector(); + private double lochnessMinXPopsition = 0.5; + private double lochnessMinYPopsition = 0.5; + private double lochnessMinSpeed = 50; + private double lochnessMaxSpeed = 150; + private int lochnessMultiplier = 1; + private double boatCollisionHeight = 0.25; + private double boatHitPulseX = 20; + private double boatHitPulseYMin = 50; + private double boatHitPulseYMax = 100; + + public static void configure(Config setting) { + instance = setting; + } + + public static Config getInstance() { + return instance; + } + + public ScoreStorageInterface getScoreStorageInterface() { + return scoreStorageInterface; + } + + public double getBoatCollisionHeight() { + return boatCollisionHeight; + } + + public double getBoatHitPulseX() { + return boatHitPulseX; + } + + public double getBoatHitPulseYMin() { + return boatHitPulseYMin; + } + + public double getBoatHitPulseYMax() { + return boatHitPulseYMax; + } + + public int getLochnessMultiplier() { + return lochnessMultiplier; + } + + public double getLochnessMinXPopsition() { + return lochnessMinXPopsition; + } + + public double getLochnessMinYPopsition() { + return lochnessMinYPopsition; + } + + public double getLochnessMinSpeed() { + return lochnessMinSpeed; + } + + public double getLochnessMaxSpeed() { + return lochnessMaxSpeed; + } + +} diff --git a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/Score.java b/src/main/java/lab/data/Score.java similarity index 98% rename from java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/Score.java rename to src/main/java/lab/data/Score.java index cb962bd..01dc746 100644 --- a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/Score.java +++ b/src/main/java/lab/data/Score.java @@ -1,4 +1,4 @@ -package cz.vsb.fei.java2.lab02.common; +package lab.data; import java.util.Random; diff --git a/java2-lab02-v3/src/main/java/lab/game/Background.java b/src/main/java/lab/game/Background.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/Background.java rename to src/main/java/lab/game/Background.java diff --git a/java2-lab02-v3/src/main/java/lab/game/Boat.java b/src/main/java/lab/game/Boat.java similarity index 54% rename from java2-lab02-v3/src/main/java/lab/game/Boat.java rename to src/main/java/lab/game/Boat.java index a5e088d..c16b1ef 100644 --- a/java2-lab02-v3/src/main/java/lab/game/Boat.java +++ b/src/main/java/lab/game/Boat.java @@ -6,6 +6,7 @@ import javafx.geometry.Point2D; import javafx.geometry.Rectangle2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; +import lab.Config; public class Boat extends WorldEntity implements Collisionable { @@ -22,7 +23,8 @@ public class Boat extends WorldEntity implements Collisionable { @Override public void drawInternal(GraphicsContext gc) { gc.drawImage(image, position.getX(), position.getY()); - gc.strokeRect(position.getX(), position.getY(), image.getWidth(), image.getHeight()); + Rectangle2D rec = getBoundingBox(); + gc.strokeRect(rec.getMinX(), rec.getMinY(), rec.getWidth(), rec.getHeight()); } @Override @@ -33,7 +35,9 @@ public class Boat extends WorldEntity implements Collisionable { @Override public Rectangle2D getBoundingBox() { - return new Rectangle2D(position.getX(), position.getY(), image.getWidth(), image.getHeight()); + return new Rectangle2D(position.getX(), + position.getY() + image.getHeight() * (1 - Config.getInstance().getBoatCollisionHeight()), + image.getWidth(), image.getHeight() * Config.getInstance().getBoatCollisionHeight()); } @Override @@ -43,16 +47,19 @@ public class Boat extends WorldEntity implements Collisionable { @Override public void hitBy(Collisionable another) { - if(another instanceof LochNess lochNess) { - int direction = RANDOM.nextBoolean()?-1:1; - speed = new Point2D(-20, direction * RANDOM.nextDouble(50, 100)); + if (another instanceof LochNess lochNess) { + int direction = RANDOM.nextBoolean() ? -1 : 1; + speed = new Point2D(-Config.getInstance().getBoatHitPulseX(), + direction * RANDOM.nextDouble(Config.getInstance().getBoatHitPulseYMin(), + Config.getInstance().getBoatHitPulseYMax())); } } public void setPosInPercentage(double doubleValue) { - position = new Point2D( - position.getX(), - scene.getSize().getHeight()*doubleValue/100); + double colisionHeight = getBoundingBox().getHeight(); + double posFromBottom = (scene.getSize().getHeight()-colisionHeight)*doubleValue/100; + position = new Point2D(position.getX(), + (scene.getSize().getHeight()-image.getHeight() -posFromBottom)); } } diff --git a/java2-lab02-v3/src/main/java/lab/game/Collisionable.java b/src/main/java/lab/game/Collisionable.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/Collisionable.java rename to src/main/java/lab/game/Collisionable.java diff --git a/java2-lab02-v3/src/main/java/lab/game/DeadListener.java b/src/main/java/lab/game/DeadListener.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/DeadListener.java rename to src/main/java/lab/game/DeadListener.java diff --git a/java2-lab02-v3/src/main/java/lab/game/Difficult.java b/src/main/java/lab/game/Difficult.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/Difficult.java rename to src/main/java/lab/game/Difficult.java diff --git a/java2-lab02-v3/src/main/java/lab/game/DrawableSimulable.java b/src/main/java/lab/game/DrawableSimulable.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/DrawableSimulable.java rename to src/main/java/lab/game/DrawableSimulable.java diff --git a/java2-lab02-v3/src/main/java/lab/game/DrawingThread.java b/src/main/java/lab/game/DrawingThread.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/DrawingThread.java rename to src/main/java/lab/game/DrawingThread.java diff --git a/java2-lab02-v3/src/main/java/lab/game/LochNess.java b/src/main/java/lab/game/LochNess.java similarity index 81% rename from java2-lab02-v3/src/main/java/lab/game/LochNess.java rename to src/main/java/lab/game/LochNess.java index 19769fb..65ab277 100644 --- a/java2-lab02-v3/src/main/java/lab/game/LochNess.java +++ b/src/main/java/lab/game/LochNess.java @@ -9,6 +9,7 @@ import javafx.geometry.Point2D; import javafx.geometry.Rectangle2D; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; +import lab.Config; public class LochNess extends WorldEntity implements Collisionable { @@ -22,9 +23,13 @@ public class LochNess extends WorldEntity implements Collisionable { super(scene, new Point2D(0, 0), 90); this.scene = scene; image = new Image(LochNess.class.getResourceAsStream("LochNess.gif")); - position = new Point2D(RANDOM.nextDouble(scene.getSize().getWidth() * 0.3, scene.getSize().getWidth()), - RANDOM.nextDouble(scene.getSize().getHeight() * 0.5, scene.getSize().getHeight() - image.getHeight())); - speed = new Point2D(-RANDOM.nextDouble(50, 150), 0); + position = new Point2D( + RANDOM.nextDouble(scene.getSize().getWidth() * Config.getInstance().getLochnessMinXPopsition(), + scene.getSize().getWidth()), + RANDOM.nextDouble(scene.getSize().getHeight() * Config.getInstance().getLochnessMinYPopsition(), + scene.getSize().getHeight() - image.getHeight())); + speed = new Point2D(-RANDOM.nextDouble(Config.getInstance().getLochnessMinSpeed(), + Config.getInstance().getLochnessMaxSpeed()), 0); } @Override @@ -76,7 +81,7 @@ public class LochNess extends WorldEntity implements Collisionable { public boolean removeDeadListener(DeadListener o) { return deadListeners.remove(o); } - + private void fireLochNessDead() { for (DeadListener deadListener : deadListeners) { deadListener.lochnessDead(); diff --git a/java2-lab02-v3/src/main/java/lab/game/Rock.java b/src/main/java/lab/game/Rock.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/Rock.java rename to src/main/java/lab/game/Rock.java diff --git a/java2-lab02-v3/src/main/java/lab/game/Routines.java b/src/main/java/lab/game/Routines.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/Routines.java rename to src/main/java/lab/game/Routines.java diff --git a/java2-lab02-v3/src/main/java/lab/game/Scene.java b/src/main/java/lab/game/Scene.java similarity index 94% rename from java2-lab02-v3/src/main/java/lab/game/Scene.java rename to src/main/java/lab/game/Scene.java index c81a796..ded5e72 100644 --- a/java2-lab02-v3/src/main/java/lab/game/Scene.java +++ b/src/main/java/lab/game/Scene.java @@ -7,6 +7,7 @@ import java.util.List; import javafx.geometry.Dimension2D; import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; +import lab.Config; public class Scene { @@ -28,7 +29,7 @@ public class Scene { sceneEntitites.add(background); sceneEntitites.add(rock); sceneEntitites.add(boat); - for (int i = 0; i < numberOfMonsters; i++) { + for (int i = 0; i < numberOfMonsters * Config.getInstance().getLochnessMultiplier(); i++) { sceneEntitites.add(new LochNess(this)); } } @@ -77,10 +78,11 @@ public class Scene { public Background getBackground() { return background; } - + public void add(DrawableSimulable entity) { entititesToAdd.add(entity); } + public void remove(DrawableSimulable entity) { entititesToRemove.add(entity); } diff --git a/java2-lab02-v3/src/main/java/lab/game/WorldEntity.java b/src/main/java/lab/game/WorldEntity.java similarity index 100% rename from java2-lab02-v3/src/main/java/lab/game/WorldEntity.java rename to src/main/java/lab/game/WorldEntity.java diff --git a/java2-lab02-v3/src/main/java/lab/gui/App.java b/src/main/java/lab/gui/App.java similarity index 97% rename from java2-lab02-v3/src/main/java/lab/gui/App.java rename to src/main/java/lab/gui/App.java index fe54e7b..62f014e 100644 --- a/java2-lab02-v3/src/main/java/lab/gui/App.java +++ b/src/main/java/lab/gui/App.java @@ -9,6 +9,7 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.stage.WindowEvent; +import lab.Config; /** * Class <b>App</b> - extends class Application and it is an entry point of the @@ -23,6 +24,7 @@ public class App extends Application { private Stage primaryStage; public static void main(String[] args) { + Config.configure(new Config()); launch(args); } diff --git a/java2-lab02-v3/src/main/java/lab/gui/GameController.java b/src/main/java/lab/gui/GameController.java similarity index 91% rename from java2-lab02-v3/src/main/java/lab/gui/GameController.java rename to src/main/java/lab/gui/GameController.java index 0669518..4f68eba 100644 --- a/java2-lab02-v3/src/main/java/lab/gui/GameController.java +++ b/src/main/java/lab/gui/GameController.java @@ -2,7 +2,6 @@ package lab.gui; import java.util.List; -import cz.vsb.fei.java2.lab02.common.Score; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.ActionEvent; @@ -13,7 +12,8 @@ import javafx.scene.control.Label; import javafx.scene.control.Slider; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; -import lab.ScoreStorageFactory; +import lab.Config; +import lab.data.Score; import lab.game.DrawingThread; import lab.game.LochNess; import lab.game.Scene; @@ -78,17 +78,17 @@ public class GameController { void btnGenerateScoreAction(ActionEvent event) { Score score = Score.generate(); this.scores.getItems().add(score); - ScoreStorageFactory.getInstance().insertScore(score); + Config.getInstance().getScoreStorageInterface().insertScore(score); } @FXML void btnLoadAllAction(ActionEvent event) { - updateScoreTable(ScoreStorageFactory.getInstance().getAll()); + updateScoreTable(Config.getInstance().getScoreStorageInterface().getAll()); } @FXML void btnLoadFirstTenAction(ActionEvent event) { - updateScoreTable(ScoreStorageFactory.getInstance().getFirstTen()); + updateScoreTable(Config.getInstance().getScoreStorageInterface().getFirstTen()); } private void updateScoreTable(List<Score> scores) { diff --git a/java2-lab02-v3/src/main/java/lab/gui/MainScreenController.java b/src/main/java/lab/gui/MainScreenController.java similarity index 84% rename from java2-lab02-v3/src/main/java/lab/gui/MainScreenController.java rename to src/main/java/lab/gui/MainScreenController.java index 277f4ad..15868c4 100644 --- a/java2-lab02-v3/src/main/java/lab/gui/MainScreenController.java +++ b/src/main/java/lab/gui/MainScreenController.java @@ -3,7 +3,6 @@ package lab.gui; import java.io.IOException; import java.util.List; -import cz.vsb.fei.java2.lab02.common.Score; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; @@ -13,7 +12,8 @@ import javafx.scene.control.TextField; import javafx.scene.control.ToggleButton; import javafx.scene.control.ToggleGroup; import javafx.scene.control.cell.PropertyValueFactory; -import lab.ScoreStorageFactory; +import lab.Config; +import lab.data.Score; import lab.game.Difficult; /** @@ -70,17 +70,17 @@ public class MainScreenController { void btnGenerateScoreAction(ActionEvent event) { Score score = Score.generate(); this.scores.getItems().add(score); - ScoreStorageFactory.getInstance().insertScore(score); + Config.getInstance().getScoreStorageInterface().insertScore(score); } @FXML void btnLoadAllAction(ActionEvent event) { - updateScoreTable(ScoreStorageFactory.getInstance().getAll()); + updateScoreTable(Config.getInstance().getScoreStorageInterface().getAll()); } @FXML void btnLoadFirstTenAction(ActionEvent event) { - updateScoreTable(ScoreStorageFactory.getInstance().getFirstTen()); + updateScoreTable(Config.getInstance().getScoreStorageInterface().getFirstTen()); } private void updateScoreTable(List<Score> scores) { @@ -103,8 +103,8 @@ public class MainScreenController { } private void initDB() { - ScoreStorageFactory.getInstance().init(); - scores.getItems().addAll(ScoreStorageFactory.getInstance().getAll()); + Config.getInstance().getScoreStorageInterface().init(); + scores.getItems().addAll(Config.getInstance().getScoreStorageInterface().getAll()); } } diff --git a/java2-lab02-db-v3/src/main/java/cz/vsb/fei/java2/lab02/db/DbConnector.java b/src/main/java/lab/storage/DbConnector.java similarity index 92% rename from java2-lab02-db-v3/src/main/java/cz/vsb/fei/java2/lab02/db/DbConnector.java rename to src/main/java/lab/storage/DbConnector.java index 4f8c076..73cbefa 100644 --- a/java2-lab02-db-v3/src/main/java/cz/vsb/fei/java2/lab02/db/DbConnector.java +++ b/src/main/java/lab/storage/DbConnector.java @@ -1,4 +1,4 @@ -package cz.vsb.fei.java2.lab02.db; +package lab.storage; import java.sql.Connection; import java.sql.DriverManager; @@ -9,8 +9,8 @@ import java.sql.Statement; import java.util.ArrayList; import java.util.List; -import cz.vsb.fei.java2.lab02.common.Score; -import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface; +import lab.data.Score; + public class DbConnector implements ScoreStorageInterface { diff --git a/java2-lab02-file-v3/src/main/java/cz/vsb/fei/file/FileStorage.java b/src/main/java/lab/storage/FileStorage.java similarity index 91% rename from java2-lab02-file-v3/src/main/java/cz/vsb/fei/file/FileStorage.java rename to src/main/java/lab/storage/FileStorage.java index 291811e..a3228c1 100644 --- a/java2-lab02-file-v3/src/main/java/cz/vsb/fei/file/FileStorage.java +++ b/src/main/java/lab/storage/FileStorage.java @@ -1,4 +1,4 @@ -package cz.vsb.fei.file; +package lab.storage; import java.io.IOException; import java.nio.file.Files; @@ -10,8 +10,7 @@ import java.util.Comparator; import java.util.List; import java.util.stream.Stream; -import cz.vsb.fei.java2.lab02.common.Score; -import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface; +import lab.data.Score; public class FileStorage implements ScoreStorageInterface { diff --git a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/ScoreStorageInterface.java b/src/main/java/lab/storage/ScoreStorageInterface.java similarity index 78% rename from java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/ScoreStorageInterface.java rename to src/main/java/lab/storage/ScoreStorageInterface.java index deb19b3..67ee80d 100644 --- a/java2-lab02-common-v3/src/main/java/cz/vsb/fei/java2/lab02/common/ScoreStorageInterface.java +++ b/src/main/java/lab/storage/ScoreStorageInterface.java @@ -1,7 +1,9 @@ -package cz.vsb.fei.java2.lab02.common; +package lab.storage; import java.util.List; +import lab.data.Score; + public interface ScoreStorageInterface { List<Score> getAll(); diff --git a/java2-lab02-v3/src/main/java/module-info.java b/src/main/java/module-info.java similarity index 53% rename from java2-lab02-v3/src/main/java/module-info.java rename to src/main/java/module-info.java index 3c2c405..07daa1f 100644 --- a/java2-lab02-v3/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,11 +1,8 @@ -import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface; - -module lab01 { +module lab02_module { requires transitive javafx.controls; requires javafx.fxml; requires javafx.base; - requires cz.vsb.fei.java2.lab02.common_module; + requires java.sql; opens lab.gui to javafx.fxml; exports lab.gui to javafx.fxml,javafx.graphics; - uses ScoreStorageInterface; -} \ No newline at end of file +} diff --git a/java2-lab02-v3/src/main/resources/lab/game/LochNess.gif b/src/main/resources/lab/game/LochNess.gif similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/game/LochNess.gif rename to src/main/resources/lab/game/LochNess.gif diff --git a/java2-lab02-v3/src/main/resources/lab/game/cityclose400.png b/src/main/resources/lab/game/cityclose400.png similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/game/cityclose400.png rename to src/main/resources/lab/game/cityclose400.png diff --git a/java2-lab02-v3/src/main/resources/lab/game/cityfar400.png b/src/main/resources/lab/game/cityfar400.png similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/game/cityfar400.png rename to src/main/resources/lab/game/cityfar400.png diff --git a/java2-lab02-v3/src/main/resources/lab/game/citymid400.png b/src/main/resources/lab/game/citymid400.png similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/game/citymid400.png rename to src/main/resources/lab/game/citymid400.png diff --git a/java2-lab02-v3/src/main/resources/lab/game/cityreflection400.png b/src/main/resources/lab/game/cityreflection400.png similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/game/cityreflection400.png rename to src/main/resources/lab/game/cityreflection400.png diff --git a/java2-lab02-v3/src/main/resources/lab/game/ship-boat.gif b/src/main/resources/lab/game/ship-boat.gif similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/game/ship-boat.gif rename to src/main/resources/lab/game/ship-boat.gif diff --git a/java2-lab02-v3/src/main/resources/lab/gui/application.css b/src/main/resources/lab/gui/application.css similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/gui/application.css rename to src/main/resources/lab/gui/application.css diff --git a/java2-lab02-v3/src/main/resources/lab/gui/gameWindow.fxml b/src/main/resources/lab/gui/gameWindow.fxml similarity index 95% rename from java2-lab02-v3/src/main/resources/lab/gui/gameWindow.fxml rename to src/main/resources/lab/gui/gameWindow.fxml index 7268935..c5b26e1 100644 --- a/java2-lab02-v3/src/main/resources/lab/gui/gameWindow.fxml +++ b/src/main/resources/lab/gui/gameWindow.fxml @@ -40,7 +40,7 @@ </Canvas> </center> <left> - <Slider fx:id="boatPosition" blockIncrement="5.0" majorTickUnit="10.0" max="80.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" min="20.0" minorTickCount="5" orientation="VERTICAL" prefHeight="331.0" prefWidth="38.0" showTickLabels="true" showTickMarks="true" BorderPane.alignment="CENTER" /> + <Slider fx:id="boatPosition" blockIncrement="5.0" majorTickUnit="10.0" max="100.0" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" min="0.0" minorTickCount="5" orientation="VERTICAL" prefHeight="331.0" prefWidth="38.0" showTickLabels="true" showTickMarks="true" BorderPane.alignment="CENTER" /> </left> <top> <Label fx:id="playerName" text="Label" BorderPane.alignment="CENTER" /> diff --git a/java2-lab02-v3/src/main/resources/lab/gui/lochness-background.jpg b/src/main/resources/lab/gui/lochness-background.jpg similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/gui/lochness-background.jpg rename to src/main/resources/lab/gui/lochness-background.jpg diff --git a/java2-lab02-v3/src/main/resources/lab/gui/mainScreen.fxml b/src/main/resources/lab/gui/mainScreen.fxml similarity index 100% rename from java2-lab02-v3/src/main/resources/lab/gui/mainScreen.fxml rename to src/main/resources/lab/gui/mainScreen.fxml diff --git a/java2-lab02-v3/src/test/java/jez04/structure/test/ClassStructureTest.java b/src/test/java/jez04/structure/test/ClassStructureTest.java similarity index 100% rename from java2-lab02-v3/src/test/java/jez04/structure/test/ClassStructureTest.java rename to src/test/java/jez04/structure/test/ClassStructureTest.java diff --git a/java2-lab02-v3/src/test/java/jez04/structure/test/StructureHelper.java b/src/test/java/jez04/structure/test/StructureHelper.java similarity index 100% rename from java2-lab02-v3/src/test/java/jez04/structure/test/StructureHelper.java rename to src/test/java/jez04/structure/test/StructureHelper.java -- GitLab