diff --git a/java2-lab02-v1/.gitignore b/.gitignore similarity index 100% rename from java2-lab02-v1/.gitignore rename to .gitignore diff --git a/java2-lab02-v1/README.md b/README.md similarity index 100% rename from java2-lab02-v1/README.md rename to README.md diff --git a/build-and-run.sh b/build-and-run.sh deleted file mode 100755 index 503ff83ad746efb5d383c252acb5580c1852d483..0000000000000000000000000000000000000000 --- a/build-and-run.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -cd java2-lab02-common-v1 -mvn clean install -cd ../java2-lab02-db-v1 -mvn clean install -cd ../java2-lab02-file-v1 -mvn clean install -cd ../java2-lab02-v1 -mvn clean package -java --module-path target/java2-lab02-v1-0.0.1-SNAPHOST.jar:target/libs -m cz.vsb.fei.java2.lab02_module/lab.gui.App -cd .. diff --git a/java2-lab02-common-v1/.gitignore b/java2-lab02-common-v1/.gitignore deleted file mode 100644 index 98b99a551e28559528e090cbfc676dcff9bd7def..0000000000000000000000000000000000000000 --- a/java2-lab02-common-v1/.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-v1/pom.xml b/java2-lab02-common-v1/pom.xml deleted file mode 100644 index fa426bc1936a271d9866e6921954b5ba73e2da4d..0000000000000000000000000000000000000000 --- a/java2-lab02-common-v1/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-v1</artifactId> - <version>0.0.1-SNAPSHOT</version> - - <name>java2-lab02-common-v1</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-v1/src/main/java/module-info.java b/java2-lab02-common-v1/src/main/java/module-info.java deleted file mode 100644 index e9edf40111700e7315c7992a3c5f0eee930fb438..0000000000000000000000000000000000000000 --- a/java2-lab02-common-v1/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-v1/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java b/java2-lab02-common-v1/src/test/java/cz/vsb/fei/java2/lab01/AppTest.java deleted file mode 100644 index 9102a3af357bbfe62c176afc996a511c63fde18c..0000000000000000000000000000000000000000 --- a/java2-lab02-common-v1/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-v1/.gitignore b/java2-lab02-db-v1/.gitignore deleted file mode 100644 index 98b99a551e28559528e090cbfc676dcff9bd7def..0000000000000000000000000000000000000000 --- a/java2-lab02-db-v1/.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-v1/pom.xml b/java2-lab02-db-v1/pom.xml deleted file mode 100644 index d50234157071a6bd873671d3be448b2f58e99a05..0000000000000000000000000000000000000000 --- a/java2-lab02-db-v1/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-v1</artifactId> - <version>0.0.1-SNAPSHOT</version> - - <name>java2-lab02-db-v1</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-v1</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-v1/src/main/java/module-info.java b/java2-lab02-db-v1/src/main/java/module-info.java deleted file mode 100644 index b10ea8f1684ce4bf06a27bf5cb036b4515a18ee8..0000000000000000000000000000000000000000 --- a/java2-lab02-db-v1/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-v1/src/main/resources/log4j2.xml b/java2-lab02-db-v1/src/main/resources/log4j2.xml deleted file mode 100644 index acb3514078f6fb73f4f09ffd7a172b47f184e961..0000000000000000000000000000000000000000 --- a/java2-lab02-db-v1/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-v1/.gitignore b/java2-lab02-file-v1/.gitignore deleted file mode 100644 index 98b99a551e28559528e090cbfc676dcff9bd7def..0000000000000000000000000000000000000000 --- a/java2-lab02-file-v1/.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-v1/pom.xml b/java2-lab02-file-v1/pom.xml deleted file mode 100644 index 902d86f5e27a7b70bbc48538e3c9ea5b167bc42d..0000000000000000000000000000000000000000 --- a/java2-lab02-file-v1/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-v1</artifactId> - <version>1.0-SNAPSHOT</version> - - <name>java2-lab02-file-v1</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-v1</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-v1/src/main/java/module-info.java b/java2-lab02-file-v1/src/main/java/module-info.java deleted file mode 100644 index cff2f09f3af4cba1cb0d9b11015f44f32c3a0f8a..0000000000000000000000000000000000000000 --- a/java2-lab02-file-v1/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-v1/src/main/java/lab/ScoreStorageFactory.java b/java2-lab02-v1/src/main/java/lab/ScoreStorageFactory.java deleted file mode 100644 index b613d07f62f9d822b12b7f943d596e6e0adfee2f..0000000000000000000000000000000000000000 --- a/java2-lab02-v1/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-v1/pom.xml b/pom.xml similarity index 89% rename from java2-lab02-v1/pom.xml rename to pom.xml index a2b751b9a644d3e1a7186b3341fb903bcf127adc..4ea98d13424db702b17be6c9cd981faa4abfe3bc 100644 --- a/java2-lab02-v1/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-v1</artifactId> + <artifactId>java2-lab03-v1</artifactId> <version>0.0.1-SNAPHOST</version> - <name></name> + <name>java2-lab03-v1</name> <packaging>jar</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> @@ -15,19 +15,10 @@ </properties> <dependencies> <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-common-v1</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-db-v1</artifactId> - <version>0.0.1-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>cz.vsb.fei.java2</groupId> - <artifactId>java2-lab02-file-v1</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/run.sh b/run.sh deleted file mode 100755 index 7a891a7a66c1a464ba91022f1c4b5655754ff11d..0000000000000000000000000000000000000000 --- a/run.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -cd java2-lab02-v1 -java --module-path target/java2-lab02-v1-0.0.1-SNAPHOST.jar:target/libs -m cz.vsb.fei.java2.lab02_module/lab.gui.App -cd .. diff --git a/java2-lab02-v1/scores.csv b/scores.csv similarity index 100% rename from java2-lab02-v1/scores.csv rename to scores.csv diff --git a/src/main/java/lab/Setting.java b/src/main/java/lab/Setting.java new file mode 100644 index 0000000000000000000000000000000000000000..b8fe27c999bb0c9482b0835396662d0104fa345e --- /dev/null +++ b/src/main/java/lab/Setting.java @@ -0,0 +1,64 @@ +package lab; + +import lab.storage.DbConnector; +import lab.storage.ScoreStorageInterface; + +public class Setting { + + private static Setting instance; + + private ScoreStorageInterface scoreStorageInterface = new DbConnector(); + private double gravity = 9.81; + private double normalBulletSpeed = 30; + private int numberOfUfos = 3; + private double ufoMinPercentageHeight = 0.3; + private double ufoMinSpeed = 70; + private double ufoMaxSpeed = 150; + private double bulletMinSpeed = 30; + private double bulletMaxSpeed = 300; + + public static void configure(Setting setting) { + instance = setting; + } + + public static Setting getInstance() { + return instance; + } + + public double getGravity() { + return gravity; + } + + public double getNormalBulletSpeed() { + return normalBulletSpeed; + } + + public int getNumberOfUfos() { + return numberOfUfos; + } + + public ScoreStorageInterface getScoreStorageInterface() { + return scoreStorageInterface; + } + + public double getUfoMinPercentageHeight() { + return ufoMinPercentageHeight; + } + + public double getUfoMinSpeed() { + return ufoMinSpeed; + } + + public double getUfoMaxSpeed() { + return ufoMaxSpeed; + } + + public double getBulletMinSpeed() { + return bulletMinSpeed; + } + + public double getBulletMaxSpeed() { + return bulletMaxSpeed; + } + +} diff --git a/java2-lab02-common-v1/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-v1/src/main/java/cz/vsb/fei/java2/lab02/common/Score.java rename to src/main/java/lab/data/Score.java index cb962bdf72e3ae81b92bd0e20bd87ff74d9be3f5..01dc746bf946fa4492b77a46a8f80fb85d50d655 100644 --- a/java2-lab02-common-v1/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-v1/src/main/java/lab/game/Bullet.java b/src/main/java/lab/game/Bullet.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/Bullet.java rename to src/main/java/lab/game/Bullet.java diff --git a/java2-lab02-v1/src/main/java/lab/game/BulletAnimated.java b/src/main/java/lab/game/BulletAnimated.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/BulletAnimated.java rename to src/main/java/lab/game/BulletAnimated.java diff --git a/java2-lab02-v1/src/main/java/lab/game/Cannon.java b/src/main/java/lab/game/Cannon.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/Cannon.java rename to src/main/java/lab/game/Cannon.java diff --git a/java2-lab02-v1/src/main/java/lab/game/Collisionable.java b/src/main/java/lab/game/Collisionable.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/Collisionable.java rename to src/main/java/lab/game/Collisionable.java diff --git a/java2-lab02-v1/src/main/java/lab/game/DrawableSimulable.java b/src/main/java/lab/game/DrawableSimulable.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/DrawableSimulable.java rename to src/main/java/lab/game/DrawableSimulable.java diff --git a/java2-lab02-v1/src/main/java/lab/game/DrawingThread.java b/src/main/java/lab/game/DrawingThread.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/DrawingThread.java rename to src/main/java/lab/game/DrawingThread.java diff --git a/java2-lab02-v1/src/main/java/lab/game/HitListener.java b/src/main/java/lab/game/HitListener.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/HitListener.java rename to src/main/java/lab/game/HitListener.java diff --git a/java2-lab02-v1/src/main/java/lab/game/Routines.java b/src/main/java/lab/game/Routines.java similarity index 100% rename from java2-lab02-v1/src/main/java/lab/game/Routines.java rename to src/main/java/lab/game/Routines.java diff --git a/java2-lab02-v1/src/main/java/lab/game/Ufo.java b/src/main/java/lab/game/Ufo.java similarity index 83% rename from java2-lab02-v1/src/main/java/lab/game/Ufo.java rename to src/main/java/lab/game/Ufo.java index 462bcc9e6cc19c0c87da3d35fcfb8b50f49e4d56..3aca92b361316e31366fc586b5c58e462bda18a8 100644 --- a/java2-lab02-v1/src/main/java/lab/game/Ufo.java +++ b/src/main/java/lab/game/Ufo.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.Setting; public class Ufo extends WorldEntity implements Collisionable { @@ -14,8 +15,11 @@ public class Ufo extends WorldEntity implements Collisionable { private Point2D velocity; public Ufo(World world) { - this(world, new Point2D(RANDOM.nextDouble(world.getWidth()), RANDOM.nextDouble(0, world.getHeight() * 0.3)), - new Point2D(RANDOM.nextDouble(70, 150), 0)); + this(world, + new Point2D(RANDOM.nextDouble(world.getWidth()), + RANDOM.nextDouble(0, world.getHeight() * Setting.getInstance().getUfoMinPercentageHeight())), + new Point2D(RANDOM.nextDouble(Setting.getInstance().getUfoMinSpeed(), + Setting.getInstance().getUfoMaxSpeed()), 0)); } public Ufo(World world, Point2D position, Point2D velocity) { diff --git a/java2-lab02-v1/src/main/java/lab/game/World.java b/src/main/java/lab/game/World.java similarity index 81% rename from java2-lab02-v1/src/main/java/lab/game/World.java rename to src/main/java/lab/game/World.java index 1a49271e78eccdc3f94d5ce15fa9669851013e16..6404f19eb23e1bdcb65db00b5d24c8af951cf9f6 100644 --- a/java2-lab02-v1/src/main/java/lab/game/World.java +++ b/src/main/java/lab/game/World.java @@ -2,24 +2,24 @@ package lab.game; import java.util.ArrayList; import java.util.Collection; -import java.util.Iterator; import java.util.LinkedList; import java.util.List; import javafx.geometry.Point2D; import javafx.scene.canvas.GraphicsContext; +import lab.Setting; public class World { - public static final Point2D GRAVITY = new Point2D(0, 9.81); + public static final Point2D GRAVITY = new Point2D(0, Setting.getInstance().getGravity()); private final double width; private final double height; private List<DrawableSimulable> entities; - private Collection<DrawableSimulable> entitiesToRemove = new LinkedList<DrawableSimulable>(); - private Collection<DrawableSimulable> entitiesToAdd = new LinkedList<DrawableSimulable>(); - + private Collection<DrawableSimulable> entitiesToRemove = new LinkedList<>(); + private Collection<DrawableSimulable> entitiesToAdd = new LinkedList<>(); + private Cannon cannon; // private BulletAnimated bulletAnimated; @@ -28,12 +28,11 @@ public class World { this.height = height; entities = new ArrayList<>(); cannon = new Cannon(this, new Point2D(0, height - 20), -45); -// bulletAnimated = new BulletAnimated(this, cannon, new Point2D(0, height), new Point2D(50, -80), -// GRAVITY); entities.add(cannon); - entities.add(new Bullet(this, new Point2D(0, height), new Point2D(30, -30), new Point2D(0, 9.81))); -// entities.add(bulletAnimated); - for (int i = 0; i < 3; i++) { + entities.add(new Bullet(this, new Point2D(0, height), + new Point2D(Setting.getInstance().getNormalBulletSpeed(), -Setting.getInstance().getNormalBulletSpeed()), + GRAVITY)); + for (int i = 0; i < Setting.getInstance().getNumberOfUfos(); i++) { entities.add(new Ufo(this)); } } @@ -73,13 +72,14 @@ public class World { public double getWidth() { return width; } - + public void add(DrawableSimulable entity) { entitiesToAdd.add(entity); } + public void remove(DrawableSimulable entity) { entitiesToRemove.add(entity); - + } public double getHeight() { diff --git a/java2-lab02-v1/src/main/java/lab/game/WorldEntity.java b/src/main/java/lab/game/WorldEntity.java similarity index 89% rename from java2-lab02-v1/src/main/java/lab/game/WorldEntity.java rename to src/main/java/lab/game/WorldEntity.java index e858399511e69c4d4e1d8a55619ab32a19e9e1c8..73e0f0b00e5d5ea773fc46266cb15837b7c3b772 100644 --- a/java2-lab02-v1/src/main/java/lab/game/WorldEntity.java +++ b/src/main/java/lab/game/WorldEntity.java @@ -8,7 +8,7 @@ public abstract class WorldEntity implements DrawableSimulable{ protected final World world; protected Point2D position; - public WorldEntity(World world, Point2D position) { + protected WorldEntity(World world, Point2D position) { this.world = world; this.position = position; } diff --git a/java2-lab02-v1/src/main/java/lab/gui/App.java b/src/main/java/lab/gui/App.java similarity index 95% rename from java2-lab02-v1/src/main/java/lab/gui/App.java rename to src/main/java/lab/gui/App.java index 115b897a6374d2c315f476486b2bef10374fa019..d36a948d081dee031f863af6524f00dd6efccb24 100644 --- a/java2-lab02-v1/src/main/java/lab/gui/App.java +++ b/src/main/java/lab/gui/App.java @@ -6,6 +6,7 @@ import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.stage.WindowEvent; +import lab.Setting; /** * Class <b>App</b> - extends class Application and it is an entry point of the @@ -17,6 +18,7 @@ public class App extends Application { private GameController gameController; public static void main(String[] args) { + Setting.configure(new Setting()); launch(args); } diff --git a/java2-lab02-v1/src/main/java/lab/gui/GameController.java b/src/main/java/lab/gui/GameController.java similarity index 51% rename from java2-lab02-v1/src/main/java/lab/gui/GameController.java rename to src/main/java/lab/gui/GameController.java index 6fa4faf573175c4c3cca42aac13288fc985365ac..26a8a6a841d347d3aed0b8d210aea15e4d815844 100644 --- a/java2-lab02-v1/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.event.ActionEvent; import javafx.fxml.FXML; import javafx.geometry.Point2D; @@ -13,21 +12,22 @@ import javafx.scene.control.Slider; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.PropertyValueFactory; -import lab.ScoreStorageFactory; +import lab.Setting; +import lab.data.Score; import lab.game.BulletAnimated; import lab.game.DrawingThread; import lab.game.World; public class GameController { - @FXML - private Button btnGenerateScore; + @FXML + private Button btnGenerateScore; - @FXML - private Button btnLoadAll; + @FXML + private Button btnLoadAll; - @FXML - private Button btnLoadFirstTen; + @FXML + private Button btnLoadFirstTen; @FXML private Slider angle; @@ -39,60 +39,54 @@ public class GameController { private Canvas canvas; @FXML - private TableView<Score> scores; + private TableView<Score> scores; @FXML - private TableColumn<Score, String> nickColumn; - - @FXML - private TableColumn<Score, Integer> pointsColumn; + private TableColumn<Score, String> nickColumn; + @FXML + private TableColumn<Score, Integer> pointsColumn; private DrawingThread timer; - @FXML - private Label hits; - private int hitcount = 0; + @FXML + private Label hits; + private int hitcount = 0; + @FXML void fire(ActionEvent event) { double angle = timer.getWorld().getCannon().getAngle(); double angleRad = Math.toRadians(angle); double speedValue = speed.getValue(); - Point2D velocity = new Point2D( - Math.cos(angleRad)*speedValue, - Math.sin(angleRad)*speedValue); - BulletAnimated bulletAnimated = new BulletAnimated( - timer.getWorld(), - timer.getWorld().getCannon(), - timer.getWorld().getCannon().getPosition(), - velocity, World.GRAVITY); + Point2D velocity = new Point2D(Math.cos(angleRad) * speedValue, Math.sin(angleRad) * speedValue); + BulletAnimated bulletAnimated = new BulletAnimated(timer.getWorld(), timer.getWorld().getCannon(), + timer.getWorld().getCannon().getPosition(), velocity, World.GRAVITY); timer.getWorld().add(bulletAnimated); bulletAnimated.addHitListener(this::increaseHits); - bulletAnimated.addHitListener( - () -> System.out.println("au!!!!")); + bulletAnimated.addHitListener(() -> System.out.println("au!!!!")); } - @FXML - void btnGenerateScoreAction(ActionEvent event) { - Score score = Score.generate(); - this.scores.getItems().add(score); - ScoreStorageFactory.getInstance().insertScore(score); - } - - @FXML - void btnLoadAllAction(ActionEvent event) { - updateScoreTable(ScoreStorageFactory.getInstance().getAll()); - } - - @FXML - void btnLoadFirstTenAction(ActionEvent event) { - updateScoreTable(ScoreStorageFactory.getInstance().getFirstTen()); - } - - private void updateScoreTable(List<Score> scores) { - this.scores.getItems().clear(); - this.scores.getItems().addAll(scores); - } + @FXML + void btnGenerateScoreAction(ActionEvent event) { + Score score = Score.generate(); + this.scores.getItems().add(score); + Setting.getInstance().getScoreStorageInterface().insertScore(score); + } + + @FXML + void btnLoadAllAction(ActionEvent event) { + updateScoreTable(Setting.getInstance().getScoreStorageInterface().getAll()); + } + + @FXML + void btnLoadFirstTenAction(ActionEvent event) { + updateScoreTable(Setting.getInstance().getScoreStorageInterface().getFirstTen()); + } + + private void updateScoreTable(List<Score> scores) { + this.scores.getItems().clear(); + this.scores.getItems().addAll(scores); + } private void updateHits() { hits.setText(String.format("Hit count: %03d", hitcount)); @@ -102,27 +96,28 @@ public class GameController { hitcount++; updateHits(); } - + @FXML void initialize() { assert angle != null : "fx:id=\"angle\" was not injected: check your FXML file 'gameWindow.fxml'."; assert canvas != null : "fx:id=\"canvas\" was not injected: check your FXML file 'gameWindow.fxml'."; assert speed != null : "fx:id=\"speed\" was not injected: check your FXML file 'gameWindow.fxml'."; + speed.setMin(Setting.getInstance().getBulletMinSpeed()); + speed.setMax(Setting.getInstance().getBulletMaxSpeed()); timer = new DrawingThread(canvas); timer.start(); angle.valueProperty().addListener( - (observable, oldValue, newValue) -> - timer.getWorld().getCannon().setAngle(newValue.doubleValue())); - + (observable, oldValue, newValue) -> timer.getWorld().getCannon().setAngle(newValue.doubleValue())); + nickColumn.setCellValueFactory(new PropertyValueFactory<>("name")); pointsColumn.setCellValueFactory(new PropertyValueFactory<>("points")); - + initStorage(); } - + private void initStorage() { - ScoreStorageFactory.getInstance().init(); - scores.getItems().addAll(ScoreStorageFactory.getInstance().getAll()); + Setting.getInstance().getScoreStorageInterface().init(); + scores.getItems().addAll(Setting.getInstance().getScoreStorageInterface().getAll()); } public void stop() { diff --git a/java2-lab02-db-v1/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-v1/src/main/java/cz/vsb/fei/java2/lab02/db/DbConnector.java rename to src/main/java/lab/storage/DbConnector.java index 4f8c076a132951c88211aa4b5739bab926841461..7511c9a3073cf61dbc29aa6f2107f6108615ff25 100644 --- a/java2-lab02-db-v1/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,7 @@ 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-v1/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-v1/src/main/java/cz/vsb/fei/file/FileStorage.java rename to src/main/java/lab/storage/FileStorage.java index 291811e791de17b965a9b609bfdbaaf53dad998e..a3228c16a88a3dccaaecda85b3b38a1eb916f46f 100644 --- a/java2-lab02-file-v1/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-v1/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-v1/src/main/java/cz/vsb/fei/java2/lab02/common/ScoreStorageInterface.java rename to src/main/java/lab/storage/ScoreStorageInterface.java index deb19b3972a81ffa7a3dbc68a512ac96666c4f7c..67ee80d94e2662312f68642b923a0912aa5ae0fc 100644 --- a/java2-lab02-common-v1/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-v1/src/main/java/module-info.java b/src/main/java/module-info.java similarity index 50% rename from java2-lab02-v1/src/main/java/module-info.java rename to src/main/java/module-info.java index 3c46773e75225a0f1274122a2690b7073d0a7708..02438d151c60d1c5c7ca03ccc5c4808a7d93163e 100644 --- a/java2-lab02-v1/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -1,11 +1,9 @@ -import cz.vsb.fei.java2.lab02.common.ScoreStorageInterface; - -module cz.vsb.fei.java2.lab02_module { +module cz.vsb.fei.java2.lab03_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; + opens lab.data to javafx.base; exports lab.gui to javafx.fxml,javafx.graphics; - uses ScoreStorageInterface; } \ No newline at end of file diff --git a/java2-lab02-v1/src/main/resources/lab/game/fireball-transparent.gif b/src/main/resources/lab/game/fireball-transparent.gif similarity index 100% rename from java2-lab02-v1/src/main/resources/lab/game/fireball-transparent.gif rename to src/main/resources/lab/game/fireball-transparent.gif diff --git a/java2-lab02-v1/src/main/resources/lab/game/ufo-small.gif b/src/main/resources/lab/game/ufo-small.gif similarity index 100% rename from java2-lab02-v1/src/main/resources/lab/game/ufo-small.gif rename to src/main/resources/lab/game/ufo-small.gif diff --git a/java2-lab02-v1/src/main/resources/lab/game/ufo.gif b/src/main/resources/lab/game/ufo.gif similarity index 100% rename from java2-lab02-v1/src/main/resources/lab/game/ufo.gif rename to src/main/resources/lab/game/ufo.gif diff --git a/java2-lab02-v1/src/main/resources/lab/gui/application.css b/src/main/resources/lab/gui/application.css similarity index 100% rename from java2-lab02-v1/src/main/resources/lab/gui/application.css rename to src/main/resources/lab/gui/application.css diff --git a/java2-lab02-v1/src/main/resources/lab/gui/gameWindow.fxml b/src/main/resources/lab/gui/gameWindow.fxml similarity index 100% rename from java2-lab02-v1/src/main/resources/lab/gui/gameWindow.fxml rename to src/main/resources/lab/gui/gameWindow.fxml diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/AllOfContinue.java b/src/test/java/jez04/structure/test/AllOfContinue.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/AllOfContinue.java rename to src/test/java/jez04/structure/test/AllOfContinue.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/ClassExist.java b/src/test/java/jez04/structure/test/ClassExist.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/ClassExist.java rename to src/test/java/jez04/structure/test/ClassExist.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/ClassStructureTest.java b/src/test/java/jez04/structure/test/ClassStructureTest.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/ClassStructureTest.java rename to src/test/java/jez04/structure/test/ClassStructureTest.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/ContainsInnerClasses.java b/src/test/java/jez04/structure/test/ContainsInnerClasses.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/ContainsInnerClasses.java rename to src/test/java/jez04/structure/test/ContainsInnerClasses.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/HasMethod.java b/src/test/java/jez04/structure/test/HasMethod.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/HasMethod.java rename to src/test/java/jez04/structure/test/HasMethod.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/HasProperty.java b/src/test/java/jez04/structure/test/HasProperty.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/HasProperty.java rename to src/test/java/jez04/structure/test/HasProperty.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/IsDescendatOf.java b/src/test/java/jez04/structure/test/IsDescendatOf.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/IsDescendatOf.java rename to src/test/java/jez04/structure/test/IsDescendatOf.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/IsInterface.java b/src/test/java/jez04/structure/test/IsInterface.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/IsInterface.java rename to src/test/java/jez04/structure/test/IsInterface.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/ResourceContains.java b/src/test/java/jez04/structure/test/ResourceContains.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/ResourceContains.java rename to src/test/java/jez04/structure/test/ResourceContains.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/SrcContains.java b/src/test/java/jez04/structure/test/SrcContains.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/SrcContains.java rename to src/test/java/jez04/structure/test/SrcContains.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/StructureHelper.java b/src/test/java/jez04/structure/test/StructureHelper.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/StructureHelper.java rename to src/test/java/jez04/structure/test/StructureHelper.java diff --git a/java2-lab02-v1/src/test/java/jez04/structure/test/StructureMatcher.java b/src/test/java/jez04/structure/test/StructureMatcher.java similarity index 100% rename from java2-lab02-v1/src/test/java/jez04/structure/test/StructureMatcher.java rename to src/test/java/jez04/structure/test/StructureMatcher.java