diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 9617294..fb82612 100644
--- a/pom.xml
+++ b/pom.xml
@@ -60,7 +60,7 @@
default-cli
- com.example.aircraftcarrier/com.example.aircraftcarrier.HelloApplication
+ com.example.aircraftcarrier/AircraftCarrierApplication
app
app
diff --git a/src/main/java/com/example/aircraftcarrier/HelloApplication.java b/src/main/java/com/example/aircraftcarrier/AircraftCarrierApplication.java
similarity index 61%
rename from src/main/java/com/example/aircraftcarrier/HelloApplication.java
rename to src/main/java/com/example/aircraftcarrier/AircraftCarrierApplication.java
index be0492f..35ac0ee 100644
--- a/src/main/java/com/example/aircraftcarrier/HelloApplication.java
+++ b/src/main/java/com/example/aircraftcarrier/AircraftCarrierApplication.java
@@ -7,11 +7,11 @@ import javafx.stage.Stage;
import java.io.IOException;
-public class HelloApplication extends Application {
+public class AircraftCarrierApplication extends Application {
@Override
public void start(Stage stage) throws IOException {
- FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
- Scene scene = new Scene(fxmlLoader.load(), 320, 240);
+ FXMLLoader fxmlLoader = new FXMLLoader(AircraftCarrierApplication.class.getResource("/com/example/aircraftcarrier/AircraftCarrierView.fxml"));
+ Scene scene = new Scene(fxmlLoader.load());
stage.setTitle("Hello!");
stage.setScene(scene);
stage.show();
diff --git a/src/main/java/com/example/aircraftcarrier/AircraftCarrierController.java b/src/main/java/com/example/aircraftcarrier/AircraftCarrierController.java
new file mode 100644
index 0000000..94c5aee
--- /dev/null
+++ b/src/main/java/com/example/aircraftcarrier/AircraftCarrierController.java
@@ -0,0 +1,85 @@
+package com.example.aircraftcarrier;
+
+import javafx.event.ActionEvent;
+import javafx.event.Event;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.canvas.Canvas;
+import javafx.scene.control.Button;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.paint.Color;
+
+import java.net.URL;
+import java.util.Random;
+import java.util.ResourceBundle;
+
+
+public class AircraftCarrierController implements Initializable {
+ Random random = new Random();
+ DrawingAircraftCarrier drawingAircraftCarrier;
+
+ @FXML
+ private Canvas canvas;
+ @FXML
+ protected void buttonCreate_Click() {
+ drawingAircraftCarrier = new DrawingAircraftCarrier(
+ random.nextInt(100)+100,
+ random.nextInt(1000)+1000,
+ Color.rgb(
+ random.nextInt(256),
+ random.nextInt(256),
+ random.nextInt(256)
+ ),
+ Color.rgb(
+ random.nextInt(256),
+ random.nextInt(256),
+ random.nextInt(256)
+ ),
+ random.nextBoolean(),
+ random.nextBoolean()
+ );
+ drawingAircraftCarrier.setCanvasWidth(canvas.getWidth(),canvas.getHeight());
+ drawingAircraftCarrier.setPosition(
+ random.nextInt(50)+10,
+ random.nextInt(50)+10
+ );
+ drawingAircraftCarrier.Draw(canvas.getGraphicsContext2D());
+ }
+
+ @FXML
+ protected void MoveEvent(Event e) {
+ if (drawingAircraftCarrier == null) return;
+
+ DirectionType directionType;
+
+ if (e instanceof KeyEvent keyEvent) {
+ directionType = switch (keyEvent.getCode()) {
+ case KeyCode.W -> DirectionType.Up;
+ case KeyCode.S -> DirectionType.Down;
+ case KeyCode.A -> DirectionType.Left;
+ case KeyCode.D -> DirectionType.Right;
+ default -> DirectionType.Unknown;
+ };
+ } else {
+ String direction = ((Button)e.getSource()).getId();
+ directionType = switch (direction) {
+ case "up" -> DirectionType.Up;
+ case "down" -> DirectionType.Down;
+ case "left" -> DirectionType.Left;
+ case "right" -> DirectionType.Right;
+ default -> DirectionType.Unknown;
+ };
+ }
+
+ if (directionType == DirectionType.Unknown) return;
+
+ drawingAircraftCarrier.Move(directionType);
+ drawingAircraftCarrier.Draw(canvas.getGraphicsContext2D());
+ }
+
+ @Override
+ public void initialize(URL url, ResourceBundle resourceBundle) {
+ System.out.println("start");
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/aircraftcarrier/DirectionType.java b/src/main/java/com/example/aircraftcarrier/DirectionType.java
new file mode 100644
index 0000000..66fd773
--- /dev/null
+++ b/src/main/java/com/example/aircraftcarrier/DirectionType.java
@@ -0,0 +1,9 @@
+package com.example.aircraftcarrier;
+
+public enum DirectionType {
+ Unknown,
+ Up,
+ Down,
+ Right,
+ Left;
+}
diff --git a/src/main/java/com/example/aircraftcarrier/DrawingAircraftCarrier.java b/src/main/java/com/example/aircraftcarrier/DrawingAircraftCarrier.java
new file mode 100644
index 0000000..a7828fb
--- /dev/null
+++ b/src/main/java/com/example/aircraftcarrier/DrawingAircraftCarrier.java
@@ -0,0 +1,87 @@
+package com.example.aircraftcarrier;
+
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.paint.Color;
+import javafx.scene.paint.Paint;
+
+public class DrawingAircraftCarrier {
+ public EntityAircraftCarrier aircraftCarrier;
+ private int x;
+ private int y;
+ private int widthCanvas;
+ private int heightCanvas;
+ private static final int widthPicture = 250;
+ private static final int heightPicture = 100;
+
+ public DrawingAircraftCarrier(
+ int speed,
+ int weight,
+ Color primaryColor,
+ Color secondaryColor,
+ boolean hasDeck,
+ boolean hasСabin
+ ) {
+ aircraftCarrier = new EntityAircraftCarrier(speed,
+ weight,
+ primaryColor,
+ secondaryColor,
+ hasDeck,
+ hasСabin);
+ }
+
+ public void setCanvasWidth(double width, double height) {
+// if (x+widthPicture > widthCanvas || y+heightPicture > heightCanvas);
+ widthCanvas = (int)width;
+ heightCanvas = (int)height;
+ }
+
+ public void setPosition(int newX, int newY) {
+ if (x == 0 || y == 0) {
+ x = newX;
+ y = newY;
+ }
+ if (x < 0 || y < 0 || x+widthPicture > widthCanvas || y+heightPicture > heightCanvas) return;
+ x = newX;
+ y = newY;
+ }
+
+ public void Draw(GraphicsContext gc) {
+ gc.clearRect(0,0,widthCanvas,heightCanvas);
+
+ double[] X = new double[]{x,x+200,x+250,x+200,x};
+ double[] Y = new double[]{y,y,y+50,y+100,y+100};
+ gc.strokePolygon(X, Y,5);
+
+ gc.strokeOval(x+175,y+35,30,30);
+
+ gc.setFill(aircraftCarrier.getPrimaryColor());
+ gc.fillRect(x+50,y+40,55,20);
+ gc.setFill(aircraftCarrier.getSecondaryColor());
+ gc.fillRect(x+105,y+25,30,50);
+ }
+
+ public void Move(DirectionType direction) {
+ switch (direction) {
+ case Up:
+ if (y - aircraftCarrier.Step > 0) {
+ y -= aircraftCarrier.Step;
+ }
+ break;
+ case Down:
+ if (y + aircraftCarrier.Step + heightPicture < heightCanvas) {
+ y += aircraftCarrier.Step;
+ }
+ break;
+ case Right:
+ if (x + aircraftCarrier.Step + widthPicture < widthCanvas) {
+ x += aircraftCarrier.Step;
+ }
+ break;
+ case Left:
+ if (x - aircraftCarrier.Step > 0) {
+ x -= aircraftCarrier.Step;
+ }
+ break;
+ }
+ }
+}
diff --git a/src/main/java/com/example/aircraftcarrier/EntityAircraftCarrier.java b/src/main/java/com/example/aircraftcarrier/EntityAircraftCarrier.java
new file mode 100644
index 0000000..8714e5d
--- /dev/null
+++ b/src/main/java/com/example/aircraftcarrier/EntityAircraftCarrier.java
@@ -0,0 +1,55 @@
+package com.example.aircraftcarrier;
+
+import javafx.scene.paint.Color;
+
+public class EntityAircraftCarrier {
+ private int Speed;
+ private double Weight;
+ public int Step;
+ private Color PrimaryColor;
+ private Color SecondaryColor;
+ private boolean HasDeck;
+ private boolean HasСabin;
+
+
+ public EntityAircraftCarrier(
+ int speed,
+ double weight,
+ Color primaryColor,
+ Color secondaryColor,
+ boolean hasDeck,
+ boolean hasСabin
+ ) {
+ this.Speed = speed;
+ this.Weight = weight;
+ this.PrimaryColor = primaryColor;
+ this.SecondaryColor = secondaryColor;
+ this.HasDeck = hasDeck;
+ this.HasСabin = hasСabin;
+ this.Step = (int) (Speed * 100 / Weight);
+ }
+
+ public int getSpeed() {
+ return Speed;
+ }
+
+ public double getWeight() {
+ return Weight;
+ }
+
+ public Color getPrimaryColor() {
+ return PrimaryColor;
+ }
+
+ public Color getSecondaryColor() {
+ return SecondaryColor;
+ }
+
+ public boolean isHasDeck() {
+ return HasDeck;
+ }
+
+ public boolean isHasСabin() {
+ return HasСabin;
+ }
+}
diff --git a/src/main/java/com/example/aircraftcarrier/HelloController.java b/src/main/java/com/example/aircraftcarrier/HelloController.java
deleted file mode 100644
index b21e401..0000000
--- a/src/main/java/com/example/aircraftcarrier/HelloController.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.example.aircraftcarrier;
-
-import javafx.fxml.FXML;
-import javafx.scene.control.Label;
-
-public class HelloController {
- @FXML
- private Label welcomeText;
-
- @FXML
- protected void onHelloButtonClick() {
- welcomeText.setText("Welcome to JavaFX Application!");
- }
-}
\ No newline at end of file
diff --git a/src/main/resources/com/example/aircraftcarrier/AircraftCarrierView.fxml b/src/main/resources/com/example/aircraftcarrier/AircraftCarrierView.fxml
new file mode 100644
index 0000000..ddb9fc7
--- /dev/null
+++ b/src/main/resources/com/example/aircraftcarrier/AircraftCarrierView.fxml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/com/example/aircraftcarrier/hello-view.fxml b/src/main/resources/com/example/aircraftcarrier/hello-view.fxml
deleted file mode 100644
index 752a4ac..0000000
--- a/src/main/resources/com/example/aircraftcarrier/hello-view.fxml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/resources/down-arrow.png b/src/main/resources/down-arrow.png
new file mode 100644
index 0000000..77c9d88
Binary files /dev/null and b/src/main/resources/down-arrow.png differ
diff --git a/src/main/resources/left-arrow.png b/src/main/resources/left-arrow.png
new file mode 100644
index 0000000..3ef0d95
Binary files /dev/null and b/src/main/resources/left-arrow.png differ
diff --git a/src/main/resources/right-arrow.png b/src/main/resources/right-arrow.png
new file mode 100644
index 0000000..10fa05f
Binary files /dev/null and b/src/main/resources/right-arrow.png differ
diff --git a/src/main/resources/up-arrow.png b/src/main/resources/up-arrow.png
new file mode 100644
index 0000000..db4972b
Binary files /dev/null and b/src/main/resources/up-arrow.png differ