From 8945d1c2cc3b094dea61ee417add4abf90d26ba5 Mon Sep 17 00:00:00 2001
From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com>
Date: Tue, 21 May 2024 19:38:36 +0400
Subject: [PATCH 1/3] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?=
=?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=B0=20=E2=84=962?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/vcs.xml | 1 +
ProjectAirFighter/src/DirectionType.java | 6 -
ProjectAirFighter/src/DrawningAirFighter.java | 223 ------------------
.../src/DrawningAirFighterEngine.java | 33 ---
.../src/Drawnings/DrawningAirCraft.java | 203 ++++++++++++++++
.../src/Drawnings/DrawningAirFighter.java | 82 +++++++
.../src/Drawnings/DrawningEngine.java | 38 +++
.../src/Drawnings/DrawningLongEngine.java | 38 +++
.../src/Drawnings/DrawningOvalEngine.java | 38 +++
.../src/{ => Drawnings}/EngineCount.java | 5 +-
.../src/Drawnings/IDrawEngine.java | 8 +
.../src/Entities/EntityAirCraft.java | 28 +++
.../src/Entities/EntityAirFighter.java | 24 ++
ProjectAirFighter/src/EntityAirFighter.java | 39 ---
ProjectAirFighter/src/FormAirFighter.form | 108 ++++++---
ProjectAirFighter/src/FormAirFighter.java | 124 +++++++---
.../MovementStrategy/AbstractStrategy.java | 66 ++++++
.../src/MovementStrategy/IMoveableObject.java | 8 +
.../src/MovementStrategy/MoveToBorder.java | 47 ++++
.../src/MovementStrategy/MoveToCenter.java | 46 ++++
.../MovementStrategy/MoveableAirCraft.java | 24 ++
.../MovementStrategy/MovementDirection.java | 8 +
.../MovementStrategy/ObjectParameters.java | 25 ++
.../src/MovementStrategy/StrategyStatus.java | 7 +
.../DirectionType.class | Bin 1102 -> 0 bytes
.../DrawningAirFighter$1.class | Bin 728 -> 0 bytes
.../DrawningAirFighter.class | Bin 6974 -> 0 bytes
.../DrawningAirFighterEngine.class | Bin 1392 -> 0 bytes
.../Drawnings/DrawningAirFighter.class | Bin 0 -> 3022 bytes
.../Drawnings/DrawningEngine.class | Bin 0 -> 1360 bytes
.../Drawnings/DrawningOvalEngine.class | Bin 0 -> 1372 bytes
.../Drawnings/EngineCount.class | Bin 0 -> 1298 bytes
.../Drawnings/IDrawEngine.class | Bin 0 -> 206 bytes
.../EngineCount.class | Bin 1238 -> 0 bytes
.../Entities/EntityAirCraft.class | Bin 0 -> 859 bytes
.../Entities/EntityAirFighter.class | Bin 0 -> 891 bytes
.../EntityAirFighter.class | Bin 1325 -> 0 bytes
.../FormAirFighter$1.class | Bin 1430 -> 769 bytes
.../FormAirFighter$2.class | Bin 1628 -> 767 bytes
.../FormAirFighter$3.class | Bin 0 -> 1705 bytes
.../FormAirFighter$4.class | Bin 0 -> 1880 bytes
.../FormAirFighter.class | Bin 4192 -> 6187 bytes
.../MovementStrategy/AbstractStrategy.class | Bin 0 -> 2267 bytes
.../MovementStrategy/IMoveableObject.class | Bin 0 -> 349 bytes
.../MovementStrategy/MoveToBorder.class | Bin 0 -> 1229 bytes
.../MovementStrategy/MoveToCenter.class | Bin 0 -> 1274 bytes
.../MovementStrategy/MoveableAirCraft.class | Bin 0 -> 1412 bytes
.../MovementStrategy/MovementDirection.class | Bin 0 -> 1232 bytes
.../MovementStrategy/ObjectParameters.class | Bin 0 -> 1024 bytes
.../MovementStrategy/StrategyStatus.class | Bin 0 -> 1172 bytes
50 files changed, 860 insertions(+), 369 deletions(-)
delete mode 100644 ProjectAirFighter/src/DirectionType.java
delete mode 100644 ProjectAirFighter/src/DrawningAirFighter.java
delete mode 100644 ProjectAirFighter/src/DrawningAirFighterEngine.java
create mode 100644 ProjectAirFighter/src/Drawnings/DrawningAirCraft.java
create mode 100644 ProjectAirFighter/src/Drawnings/DrawningAirFighter.java
create mode 100644 ProjectAirFighter/src/Drawnings/DrawningEngine.java
create mode 100644 ProjectAirFighter/src/Drawnings/DrawningLongEngine.java
create mode 100644 ProjectAirFighter/src/Drawnings/DrawningOvalEngine.java
rename ProjectAirFighter/src/{ => Drawnings}/EngineCount.java (92%)
create mode 100644 ProjectAirFighter/src/Drawnings/IDrawEngine.java
create mode 100644 ProjectAirFighter/src/Entities/EntityAirCraft.java
create mode 100644 ProjectAirFighter/src/Entities/EntityAirFighter.java
delete mode 100644 ProjectAirFighter/src/EntityAirFighter.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/AbstractStrategy.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/IMoveableObject.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/MoveToBorder.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/MoveToCenter.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/MoveableAirCraft.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/MovementDirection.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/ObjectParameters.java
create mode 100644 ProjectAirFighter/src/MovementStrategy/StrategyStatus.java
delete mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DirectionType.class
delete mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DrawningAirFighter$1.class
delete mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DrawningAirFighter.class
delete mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DrawningAirFighterEngine.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningAirFighter.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningEngine.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningOvalEngine.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/EngineCount.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/IDrawEngine.class
delete mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/EngineCount.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Entities/EntityAirCraft.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Entities/EntityAirFighter.class
delete mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/EntityAirFighter.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$3.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$4.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/AbstractStrategy.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/IMoveableObject.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveToBorder.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveToCenter.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveableAirCraft.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MovementDirection.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/ObjectParameters.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/StrategyStatus.class
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1dd..8306744 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
+
\ No newline at end of file
diff --git a/ProjectAirFighter/src/DirectionType.java b/ProjectAirFighter/src/DirectionType.java
deleted file mode 100644
index 35657f0..0000000
--- a/ProjectAirFighter/src/DirectionType.java
+++ /dev/null
@@ -1,6 +0,0 @@
-public enum DirectionType {
- Up,
- Down,
- Left,
- Right
-}
diff --git a/ProjectAirFighter/src/DrawningAirFighter.java b/ProjectAirFighter/src/DrawningAirFighter.java
deleted file mode 100644
index b8ea825..0000000
--- a/ProjectAirFighter/src/DrawningAirFighter.java
+++ /dev/null
@@ -1,223 +0,0 @@
-import java.awt.*;
-import java.util.Random;
-public class DrawningAirFighter {
- private EntityAirFighter entityAirFighter;
- public EntityAirFighter getEntityAirFighter() {
- return entityAirFighter;
- }
- private Integer _pictureWidth;
- private Integer _pictureHeight;
- private Integer _startPosX;
- private Integer _startPosY;
- private final int _drawingAirFighterWidth = 76;
- private final int _drawingAirFighterHeight = 80;
- public DrawningAirFighterEngine _drawningAirFighterEngine;
-
- public void Init(int speed, float weight, Color bodyColor, Color additionalColor, boolean pgo, boolean rockets) {
- entityAirFighter = new EntityAirFighter();
- entityAirFighter.Init(speed, weight, bodyColor, additionalColor, pgo, rockets);
- _startPosY = null;
- _startPosX = null;
- _pictureWidth = null;
- _pictureHeight = null;
-
- _drawningAirFighterEngine = new DrawningAirFighterEngine();
- Random random = new Random();
- int[] countengine = {2, 4, 6};
- int engineCount = countengine[random.nextInt(countengine.length)];
- _drawningAirFighterEngine.setEnumNumber(engineCount);
-
- }
- public void setPosition(int x, int y) {
- if (_pictureHeight == null || _pictureWidth == null)
- return;
- _startPosX = x;
- _startPosY = y;
-
- if (_drawingAirFighterWidth + x > _pictureWidth || x < 0) {
- _startPosX = 0;
- }
- if (_drawingAirFighterHeight + y > _pictureHeight || y < 0) {
- _startPosY = 0;
- }
- }
-
- public boolean setPictureSize(int width, int height) {
-
- if (_drawingAirFighterHeight > height || _drawingAirFighterWidth > width)
- return false;
- _pictureHeight = height;
- _pictureWidth = width;
-
- if (_startPosX != null && _startPosY != null) {
- if (_startPosX + _drawingAirFighterWidth > width)
- _startPosX = width - _drawingAirFighterWidth;
- if (_startPosY + _drawingAirFighterHeight > height)
- _startPosY = height - _drawingAirFighterHeight;
- }
- return true;
- }
-
- public boolean moveTransport(DirectionType direction) {
- if (entityAirFighter == null || _pictureWidth == null || _pictureHeight == null)
- return false;
- switch (direction) {
- case Left:
- if (_startPosX - entityAirFighter.Step() > 0)
- _startPosX -= (int) entityAirFighter.Step();
- return true;
- case Up:
- if (_startPosY - entityAirFighter.Step() > 0)
- _startPosY -= (int) entityAirFighter.Step();
- return true;
- case Right:
- if (_startPosX + entityAirFighter.Step() < _pictureWidth - _drawingAirFighterWidth)
- _startPosX += (int) entityAirFighter.Step();
- return true;
- case Down:
- if (_startPosY + entityAirFighter.Step() < _pictureHeight - _drawingAirFighterHeight)
- _startPosY += (int) entityAirFighter.Step();
- return true;
- default:
- return false;
- }
- }
-
- public void drawAirFighter(Graphics g) {
- if (entityAirFighter == null || _startPosX == null || _startPosY == null) {
- return;
- }
-
- Graphics2D g2d = (Graphics2D) g;
-
- Point[] rtail = new Point[]{
- new Point (_startPosX + 10,_startPosY + 25),
- new Point (_startPosX + 10,_startPosY + 8),
- new Point (_startPosX + 20,_startPosY + 17),
- new Point (_startPosX + 20, _startPosY + 25),
- };
- Polygon rtailPolygon = new Polygon();
- for (Point point : rtail)
- rtailPolygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getBodyColor());
- g2d.fillPolygon(rtailPolygon);
-
- Point[] ltail = new Point[]{
- new Point (_startPosX + 10,_startPosY + 49),
- new Point (_startPosX + 10,_startPosY + 66),
- new Point (_startPosX + 20,_startPosY + 57),
- new Point (_startPosX + 20, _startPosY + 49),
- };
- Polygon ltailPolygon = new Polygon();
- for (Point point : ltail)
- ltailPolygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getBodyColor());
- g2d.fillPolygon(ltailPolygon);
-
- Point[] rwing = new Point[]{
- new Point (_startPosX + 45,_startPosY + 49),
- new Point (_startPosX + 45,_startPosY + 74),
- new Point (_startPosX + 37,_startPosY + 74),
- new Point (_startPosX + 30, _startPosY + 49),
- };
- Polygon rwingPolygon = new Polygon();
- for (Point point : rwing)
- rwingPolygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getBodyColor());
- g2d.fillPolygon(rwingPolygon);
-
- Point[] lwing = new Point[]{
- new Point (_startPosX + 45,_startPosY + 25),
- new Point (_startPosX + 45,_startPosY ),
- new Point (_startPosX + 37,_startPosY ),
- new Point (_startPosX + 30, _startPosY + 25),
- };
- Polygon lwingPolygon = new Polygon();
- for (Point point : lwing)
- lwingPolygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getBodyColor());
- g2d.fillPolygon(lwingPolygon);
-
- g2d.drawRect(_startPosX + 10, _startPosY+ 25, 50, 24);
- g2d.fillRect(_startPosX + 10, _startPosY+ 25, 50, 24);
-
- Point[] nose = new Point[]{
- new Point (_startPosX + 60,_startPosY + 25),
- new Point (_startPosX + 76,_startPosY + 37),
- new Point (_startPosX + 60,_startPosY + 49),
- };
- Polygon nosePolygon = new Polygon();
- for (Point point : nose)
- nosePolygon.addPoint(point.x, point.y);
-
- g2d.setColor(Color.GRAY);
- g2d.fillPolygon(nosePolygon);
-
- if (entityAirFighter.getPgo()) {
- Point[] pgo1 = new Point[]{
- new Point ( _startPosX + 50, _startPosY + 25),
- new Point ( _startPosX + 50, _startPosY + 15),
- new Point ( _startPosX + 55, _startPosY + 25),
- };
- Polygon pgo1Polygon = new Polygon();
- for (Point point : pgo1)
- pgo1Polygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getAdditionalColor());
- g2d.fillPolygon(pgo1Polygon);
-
- Point[] pgo2 = new Point[]{
- new Point (_startPosX + 50, _startPosY + 49),
- new Point (_startPosX + 50, _startPosY + 59),
- new Point (_startPosX + 55, _startPosY + 49),
- };
- Polygon pgo2Polygon = new Polygon();
- for (Point point : pgo2)
- pgo2Polygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getAdditionalColor());
- g2d.fillPolygon(pgo2Polygon);
- }
-
- if (entityAirFighter.getRockets()) {
- Point[] rocket1 = new Point[]{
- new Point (_startPosX + 50, _startPosY + 71),
- new Point (_startPosX + 50, _startPosY+ 74),
- new Point (_startPosX + 55, _startPosY + 69),
- new Point (_startPosX + 50, _startPosY + 64),
- };
- Polygon rocket1Polygon = new Polygon();
- for (Point point : rocket1)
- rocket1Polygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getAdditionalColor());
- g2d.fillPolygon(rocket1Polygon);
-
- g.drawRect(_startPosX + 45, _startPosY + 67, 5, 4);
- g.fillRect(_startPosX + 45, _startPosY + 67, 5, 4);
-
- Point[] rocket2 = new Point[]{
- new Point (_startPosX + 50, _startPosY + 7),
- new Point (_startPosX + 50, _startPosY+ 10),
- new Point (_startPosX + 55, _startPosY + 5),
- new Point (_startPosX + 50, _startPosY),
- };
- Polygon rocket2Polygon = new Polygon();
- for (Point point : rocket2)
- rocket2Polygon.addPoint(point.x, point.y);
-
- g2d.setColor(entityAirFighter.getAdditionalColor());
- g2d.fillPolygon(rocket2Polygon);
-
- g.drawRect(_startPosX + 45, _startPosY + 3, 5, 4);
- g.fillRect(_startPosX + 45, _startPosY + 3, 5, 4);
- }
-
- _drawningAirFighterEngine.drawAirFighterEngine(g, entityAirFighter.getAdditionalColor(), _startPosX, _startPosY);
- }
-}
-
diff --git a/ProjectAirFighter/src/DrawningAirFighterEngine.java b/ProjectAirFighter/src/DrawningAirFighterEngine.java
deleted file mode 100644
index 695d443..0000000
--- a/ProjectAirFighter/src/DrawningAirFighterEngine.java
+++ /dev/null
@@ -1,33 +0,0 @@
-import java.awt.*;
-
-public class DrawningAirFighterEngine {
- private EngineCount _engineCount;
- public void setEnumNumber(int engineCount) {
- for (EngineCount value : EngineCount.values()) {
- if (value.getEnumNumber() == engineCount) {
- _engineCount = value;
- return;
- }
- }
- }
- public void drawAirFighterEngine(Graphics g, Color color, float startPosX, float startPosY) {
- Graphics2D g2d = (Graphics2D) g;
- g2d.setColor(color);
- g2d.setStroke(new BasicStroke(4));
-
- if (_engineCount.getEnumNumber() >= 2){
- g2d.drawRect((int)startPosX + 30, (int) startPosY + 69, 10, 2 );
- g2d.drawRect((int)startPosX + 30, (int) startPosY + 3, 10, 2 );
- }
-
- if (_engineCount.getEnumNumber() >= 4){
- g2d.drawRect((int)startPosX + 30, (int) startPosY + 62, 10, 2 );
- g2d.drawRect((int)startPosX + 30, (int) startPosY + 10, 10, 2 );
- }
-
- if (_engineCount.getEnumNumber() >= 6){
- g2d.drawRect((int)startPosX + 30, (int) startPosY + 55, 10, 2 );
- g2d.drawRect((int)startPosX + 30, (int) startPosY + 17, 10, 2 );
- }
- }
-}
diff --git a/ProjectAirFighter/src/Drawnings/DrawningAirCraft.java b/ProjectAirFighter/src/Drawnings/DrawningAirCraft.java
new file mode 100644
index 0000000..3979309
--- /dev/null
+++ b/ProjectAirFighter/src/Drawnings/DrawningAirCraft.java
@@ -0,0 +1,203 @@
+package Drawnings;
+
+import Entities.EntityAirCraft;
+import MovementStrategy.MovementDirection;
+
+import java.awt.*;
+import java.util.Random;
+
+public class DrawningAirCraft {
+ private final EntityAirCraft entityAirCraft;
+
+ public EntityAirCraft getEntityAirCraft() {
+ return entityAirCraft;
+ }
+
+ private Integer _pictureWidth;
+ private Integer _pictureHeight;
+ protected Integer _startPosX;
+ protected Integer _startPosY;
+ private int _drawingAirCraftWidth = 66;
+ private int _drawingAirCraftHeight = 74;
+
+ public int GetPosX() {
+ return _startPosX;
+ }
+
+ public int GetPosY() {
+ return _startPosY;
+ }
+
+ public int GetWidth() {
+ return _drawingAirCraftWidth;
+ }
+
+ public int GetHeight() {
+ return _drawingAirCraftHeight;
+ }
+
+ private IDrawEngine drawEngine;
+
+ public DrawningAirCraft(int speed, float weight, Color bodyColor, int engineType) {
+ entityAirCraft = new EntityAirCraft(speed, weight, bodyColor);
+ _startPosY = null;
+ _startPosX = null;
+ _pictureWidth = null;
+ _pictureHeight = null;
+ switch (engineType) {
+ case 0:
+ drawEngine = new DrawningEngine();
+ break;
+ case 1:
+ drawEngine = new DrawningOvalEngine();
+ break;
+ case 2:
+ drawEngine = new DrawningLongEngine();
+ break;
+ }
+
+ Random random = new Random();
+ int[] countengine = {2, 4, 6};
+ int engineCount = countengine[random.nextInt(countengine.length)];
+ System.out.print(engineCount);
+ drawEngine.setNumber(engineCount);
+ }
+
+ protected DrawningAirCraft(int speed, float weight, Color bodyColor, int EngineType, int aircraftWidth, int aircraftHeight) {
+ this(speed, weight, bodyColor, EngineType);
+ _drawingAirCraftHeight = aircraftHeight;
+ _drawingAirCraftWidth = aircraftWidth;
+ }
+
+ public void setPosition(int x, int y) {
+ if (_pictureHeight == null || _pictureWidth == null)
+ return;
+ _startPosX = x;
+ _startPosY = y;
+
+ if (_drawingAirCraftWidth + x > _pictureWidth || x < 0) {
+ _startPosX = 0;
+ }
+ if (_drawingAirCraftHeight + y > _pictureHeight || y < 0) {
+ _startPosY = 0;
+ }
+ }
+
+ public boolean setPictureSize(int width, int height) {
+
+ if (_drawingAirCraftHeight > height || _drawingAirCraftWidth > width)
+ return false;
+ _pictureHeight = height;
+ _pictureWidth = width;
+
+ if (_startPosX != null && _startPosY != null) {
+ if (_startPosX + _drawingAirCraftWidth > width)
+ _startPosX = width - _drawingAirCraftWidth;
+ if (_startPosY + _drawingAirCraftHeight > height)
+ _startPosY = height - _drawingAirCraftHeight;
+ }
+ return true;
+ }
+
+ public boolean moveTransport(MovementDirection direction) {
+ if (entityAirCraft == null || _pictureWidth == null || _pictureHeight == null)
+ return false;
+ switch (direction) {
+ case MovementDirection.Left:
+ if (_startPosX - entityAirCraft.getStep() > 0)
+ _startPosX -= (int) entityAirCraft.getStep();
+ return true;
+ case MovementDirection.Up:
+ if (_startPosY - entityAirCraft.getStep() > 0)
+ _startPosY -= (int) entityAirCraft.getStep();
+ return true;
+ case MovementDirection.Right:
+ if (_startPosX + entityAirCraft.getStep() < _pictureWidth - _drawingAirCraftWidth)
+ _startPosX += (int) entityAirCraft.getStep();
+ return true;
+ case MovementDirection.Down:
+ if (_startPosY + entityAirCraft.getStep() < _pictureHeight - _drawingAirCraftHeight)
+ _startPosY += (int) entityAirCraft.getStep();
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ public void drawAirCraft(Graphics g) {
+ if (entityAirCraft == null || _startPosX == null || _startPosY == null) {
+ return;
+ }
+
+ Graphics2D g2d = (Graphics2D) g;
+
+ Point[] rtail = new Point[]{
+ new Point(_startPosX + 10, _startPosY + 25),
+ new Point(_startPosX + 10, _startPosY + 8),
+ new Point(_startPosX + 20, _startPosY + 17),
+ new Point(_startPosX + 20, _startPosY + 25),
+ };
+ Polygon rtailPolygon = new Polygon();
+ for (Point point : rtail)
+ rtailPolygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirCraft.getBodyColor());
+ g2d.fillPolygon(rtailPolygon);
+
+ Point[] ltail = new Point[]{
+ new Point(_startPosX + 10, _startPosY + 49),
+ new Point(_startPosX + 10, _startPosY + 66),
+ new Point(_startPosX + 20, _startPosY + 57),
+ new Point(_startPosX + 20, _startPosY + 49),
+ };
+ Polygon ltailPolygon = new Polygon();
+ for (Point point : ltail)
+ ltailPolygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirCraft.getBodyColor());
+ g2d.fillPolygon(ltailPolygon);
+
+ Point[] rwing = new Point[]{
+ new Point(_startPosX + 45, _startPosY + 49),
+ new Point(_startPosX + 45, _startPosY + 74),
+ new Point(_startPosX + 37, _startPosY + 74),
+ new Point(_startPosX + 30, _startPosY + 49),
+ };
+ Polygon rwingPolygon = new Polygon();
+ for (Point point : rwing)
+ rwingPolygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirCraft.getBodyColor());
+ g2d.fillPolygon(rwingPolygon);
+
+ Point[] lwing = new Point[]{
+ new Point(_startPosX + 45, _startPosY + 25),
+ new Point(_startPosX + 45, _startPosY),
+ new Point(_startPosX + 37, _startPosY),
+ new Point(_startPosX + 30, _startPosY + 25),
+ };
+ Polygon lwingPolygon = new Polygon();
+ for (Point point : lwing)
+ lwingPolygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirCraft.getBodyColor());
+ g2d.fillPolygon(lwingPolygon);
+
+ g2d.drawRect(_startPosX + 10, _startPosY + 25, 50, 24);
+ g2d.fillRect(_startPosX + 10, _startPosY + 25, 50, 24);
+
+ Point[] nose = new Point[]{
+ new Point(_startPosX + 60, _startPosY + 25),
+ new Point(_startPosX + 76, _startPosY + 37),
+ new Point(_startPosX + 60, _startPosY + 49),
+ };
+ Polygon nosePolygon = new Polygon();
+ for (Point point : nose)
+ nosePolygon.addPoint(point.x, point.y);
+
+ g2d.setColor(Color.GRAY);
+ g2d.fillPolygon(nosePolygon);
+
+ drawEngine.drawEngine(g2d, entityAirCraft.getBodyColor(), _startPosX, _startPosY);
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/Drawnings/DrawningAirFighter.java b/ProjectAirFighter/src/Drawnings/DrawningAirFighter.java
new file mode 100644
index 0000000..aa62b56
--- /dev/null
+++ b/ProjectAirFighter/src/Drawnings/DrawningAirFighter.java
@@ -0,0 +1,82 @@
+package Drawnings;
+
+import Entities.EntityAirFighter;
+
+import java.awt.*;
+
+public class DrawningAirFighter extends DrawningAirCraft {
+ private EntityAirFighter entityAirFighter;
+
+ public DrawningAirFighter(int speed, float weight, Color bodyColor, int engineType, Color additionalColor, boolean pgo, boolean rockets) {
+ super(speed, weight, bodyColor, engineType, 76, 80);
+ entityAirFighter = new EntityAirFighter(speed, weight, bodyColor, additionalColor, pgo, rockets);
+ }
+
+ public void drawAirCraft(Graphics g) {
+ if (entityAirFighter == null || _startPosX == null || _startPosY == null) {
+ return;
+ }
+ super.drawAirCraft(g);
+ Graphics2D g2d = (Graphics2D) g;
+
+ if (entityAirFighter.getPgo()) {
+ Point[] pgo1 = new Point[]{
+ new Point(_startPosX + 50, _startPosY + 25),
+ new Point(_startPosX + 50, _startPosY + 15),
+ new Point(_startPosX + 55, _startPosY + 25),
+ };
+ Polygon pgo1Polygon = new Polygon();
+ for (Point point : pgo1)
+ pgo1Polygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirFighter.getAdditionalColor());
+ g2d.fillPolygon(pgo1Polygon);
+
+ Point[] pgo2 = new Point[]{
+ new Point(_startPosX + 50, _startPosY + 49),
+ new Point(_startPosX + 50, _startPosY + 59),
+ new Point(_startPosX + 55, _startPosY + 49),
+ };
+ Polygon pgo2Polygon = new Polygon();
+ for (Point point : pgo2)
+ pgo2Polygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirFighter.getAdditionalColor());
+ g2d.fillPolygon(pgo2Polygon);
+ }
+
+ if (entityAirFighter.getRockets()) {
+ Point[] rocket1 = new Point[]{
+ new Point(_startPosX + 50, _startPosY + 71),
+ new Point(_startPosX + 50, _startPosY + 74),
+ new Point(_startPosX + 55, _startPosY + 69),
+ new Point(_startPosX + 50, _startPosY + 64),
+ };
+ Polygon rocket1Polygon = new Polygon();
+ for (Point point : rocket1)
+ rocket1Polygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirFighter.getAdditionalColor());
+ g2d.fillPolygon(rocket1Polygon);
+
+ g.drawRect(_startPosX + 45, _startPosY + 67, 5, 4);
+ g.fillRect(_startPosX + 45, _startPosY + 67, 5, 4);
+
+ Point[] rocket2 = new Point[]{
+ new Point(_startPosX + 50, _startPosY + 7),
+ new Point(_startPosX + 50, _startPosY + 10),
+ new Point(_startPosX + 55, _startPosY + 5),
+ new Point(_startPosX + 50, _startPosY),
+ };
+ Polygon rocket2Polygon = new Polygon();
+ for (Point point : rocket2)
+ rocket2Polygon.addPoint(point.x, point.y);
+
+ g2d.setColor(entityAirFighter.getAdditionalColor());
+ g2d.fillPolygon(rocket2Polygon);
+
+ g.drawRect(_startPosX + 45, _startPosY + 3, 5, 4);
+ g.fillRect(_startPosX + 45, _startPosY + 3, 5, 4);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/Drawnings/DrawningEngine.java b/ProjectAirFighter/src/Drawnings/DrawningEngine.java
new file mode 100644
index 0000000..ded7e3f
--- /dev/null
+++ b/ProjectAirFighter/src/Drawnings/DrawningEngine.java
@@ -0,0 +1,38 @@
+package Drawnings;
+
+import java.awt.*;
+
+public class DrawningEngine implements IDrawEngine {
+ private EngineCount _engineCount;
+
+ @Override
+ public void setNumber(int engineCount) {
+ for (EngineCount value : EngineCount.values()) {
+ if (value.getEnumNumber() == engineCount) {
+ _engineCount = value;
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void drawEngine(Graphics2D g2d, Color color, int _startX, int _startY) {
+ g2d.setColor(color);
+ g2d.setStroke(new BasicStroke(4));
+
+ if (_engineCount.getEnumNumber() >= 2){
+ g2d.drawRect(_startX + 30, _startY + 69, 10, 2 );
+ g2d.drawRect(_startX + 30, _startY + 3, 10, 2 );
+ }
+
+ if (_engineCount.getEnumNumber() >= 4){
+ g2d.drawRect(_startX + 30, _startY + 62, 10, 2 );
+ g2d.drawRect(_startX + 30, _startY + 10, 10, 2 );
+ }
+
+ if (_engineCount.getEnumNumber() >= 6){
+ g2d.drawRect(_startX + 30, _startY + 55, 10, 2 );
+ g2d.drawRect(_startX + 30, _startY + 17, 10, 2 );
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/Drawnings/DrawningLongEngine.java b/ProjectAirFighter/src/Drawnings/DrawningLongEngine.java
new file mode 100644
index 0000000..cbf1dc9
--- /dev/null
+++ b/ProjectAirFighter/src/Drawnings/DrawningLongEngine.java
@@ -0,0 +1,38 @@
+package Drawnings;
+
+import java.awt.*;
+
+public class DrawningLongEngine implements IDrawEngine {
+ private EngineCount _engineCount;
+
+ @Override
+ public void setNumber(int engineCount) {
+ for (EngineCount value : EngineCount.values()) {
+ if (value.getEnumNumber() == engineCount) {
+ _engineCount = value;
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void drawEngine(Graphics2D g2d, Color color, int _startX, int _startY) {
+ g2d.setColor(color);
+ g2d.setStroke(new BasicStroke(4));
+
+ if (_engineCount.getEnumNumber() >= 2) {
+ g2d.drawRoundRect(_startX + 25, _startY + 69, 15, 2, 5, 5);
+ g2d.drawRoundRect(_startX + 25, _startY + 3, 15, 2, 5, 5);
+ }
+
+ if (_engineCount.getEnumNumber() >= 4) {
+ g2d.drawRoundRect(_startX + 25, _startY + 62, 15, 2, 5, 5);
+ g2d.drawRoundRect(_startX + 25, _startY + 10, 15, 2, 5, 5);
+ }
+
+ if (_engineCount.getEnumNumber() >= 6) {
+ g2d.drawRoundRect(_startX + 25, _startY + 55, 15, 2, 5, 5);
+ g2d.drawRoundRect(_startX + 25, _startY + 17, 15, 2, 5, 5);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/Drawnings/DrawningOvalEngine.java b/ProjectAirFighter/src/Drawnings/DrawningOvalEngine.java
new file mode 100644
index 0000000..066274b
--- /dev/null
+++ b/ProjectAirFighter/src/Drawnings/DrawningOvalEngine.java
@@ -0,0 +1,38 @@
+package Drawnings;
+
+import java.awt.*;
+
+public class DrawningOvalEngine implements IDrawEngine {
+ private EngineCount _engineCount;
+
+ @Override
+ public void setNumber(int engineCount) {
+ for (EngineCount value : EngineCount.values()) {
+ if (value.getEnumNumber() == engineCount) {
+ _engineCount = value;
+ return;
+ }
+ }
+ }
+
+ @Override
+ public void drawEngine(Graphics2D g2d, Color color, int _startX, int _startY) {
+ g2d.setColor(color);
+ g2d.setStroke(new BasicStroke(4));
+
+ if (_engineCount.getEnumNumber() >= 2) {
+ g2d.drawOval(_startX + 30, _startY + 69, 10, 2);
+ g2d.drawOval(_startX + 30, _startY + 3, 10, 2);
+ }
+
+ if (_engineCount.getEnumNumber() >= 4) {
+ g2d.drawOval(_startX + 30, _startY + 62, 10, 2);
+ g2d.drawOval(_startX + 30, _startY + 10, 10, 2);
+ }
+
+ if (_engineCount.getEnumNumber() >= 6) {
+ g2d.drawOval(_startX + 30, _startY + 55, 10, 2);
+ g2d.drawOval(_startX + 30, _startY + 17, 10, 2);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/EngineCount.java b/ProjectAirFighter/src/Drawnings/EngineCount.java
similarity index 92%
rename from ProjectAirFighter/src/EngineCount.java
rename to ProjectAirFighter/src/Drawnings/EngineCount.java
index ed59643..30f4ced 100644
--- a/ProjectAirFighter/src/EngineCount.java
+++ b/ProjectAirFighter/src/Drawnings/EngineCount.java
@@ -1,3 +1,5 @@
+package Drawnings;
+
public enum EngineCount {
Two(2),
Three(4),
@@ -9,5 +11,4 @@ public enum EngineCount {
public int getEnumNumber() {
return EnumNumber;
}
-
-}
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/Drawnings/IDrawEngine.java b/ProjectAirFighter/src/Drawnings/IDrawEngine.java
new file mode 100644
index 0000000..60f3109
--- /dev/null
+++ b/ProjectAirFighter/src/Drawnings/IDrawEngine.java
@@ -0,0 +1,8 @@
+package Drawnings;
+
+import java.awt.*;
+
+public interface IDrawEngine {
+ void setNumber(int x);
+ void drawEngine(Graphics2D graphics2D, Color color, int _startX, int _startY);
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/Entities/EntityAirCraft.java b/ProjectAirFighter/src/Entities/EntityAirCraft.java
new file mode 100644
index 0000000..ae2634c
--- /dev/null
+++ b/ProjectAirFighter/src/Entities/EntityAirCraft.java
@@ -0,0 +1,28 @@
+package Entities;
+
+import java.awt.*;
+
+public class EntityAirCraft {
+ private int Speed;
+ public int getSpeed() {
+ return Speed;
+ }
+ private double Weight;
+ public double getWeight() {
+ return Weight;
+ }
+ private Color BodyColor;
+ public Color getBodyColor() {
+ return BodyColor;
+ }
+ private double Step;
+ public double getStep() {
+ return Speed*100/Weight;
+ }
+
+ public EntityAirCraft(int speed, double weight, Color bodyColor) {
+ Speed = speed;
+ Weight = weight;
+ BodyColor = bodyColor;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/Entities/EntityAirFighter.java b/ProjectAirFighter/src/Entities/EntityAirFighter.java
new file mode 100644
index 0000000..2098795
--- /dev/null
+++ b/ProjectAirFighter/src/Entities/EntityAirFighter.java
@@ -0,0 +1,24 @@
+package Entities;
+
+import java.awt.*;
+
+public class EntityAirFighter extends EntityAirCraft {
+ private Color AdditionalColor;
+ public Color getAdditionalColor() {
+ return AdditionalColor;
+ }
+ private boolean Pgo;
+ public boolean getPgo() {
+ return Pgo;
+ }
+ private boolean Rockets;
+ public boolean getRockets() {
+ return Rockets;
+ }
+ public EntityAirFighter(int speed, double weight, Color bodyColor, Color additionalColor, boolean pgo, boolean rockets) {
+ super(speed, weight, bodyColor);
+ AdditionalColor = additionalColor;
+ Pgo = pgo;
+ Rockets = rockets;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/EntityAirFighter.java b/ProjectAirFighter/src/EntityAirFighter.java
deleted file mode 100644
index 776b2c0..0000000
--- a/ProjectAirFighter/src/EntityAirFighter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-import java.awt.*;
-
-public class EntityAirFighter {
- private int Speed;
- public int getSpeed() {
- return Speed;
- }
- private double Weight;
- public double getWeight() {
- return Weight;
- }
- private Color BodyColor;
- public Color getBodyColor() {
- return BodyColor;
- }
- private Color AdditionalColor;
- public Color getAdditionalColor() {
- return AdditionalColor;
- }
- public double Step() {
- return Speed*100/Weight;
- }
- private boolean Pgo;
- public boolean getPgo() {
- return Pgo;
- }
- private boolean Rockets;
- public boolean getRockets() {
- return Rockets;
- }
- public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean pgo, boolean rockets) {
- Speed = speed;
- Weight = weight;
- BodyColor = bodyColor;
- AdditionalColor = additionalColor;
- Pgo = pgo;
- Rockets = rockets;
- }
-}
diff --git a/ProjectAirFighter/src/FormAirFighter.form b/ProjectAirFighter/src/FormAirFighter.form
index f7539e7..fd0549c 100644
--- a/ProjectAirFighter/src/FormAirFighter.form
+++ b/ProjectAirFighter/src/FormAirFighter.form
@@ -8,61 +8,55 @@
-
+
-
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -73,9 +67,17 @@
+
+
+
+
+
+
+
+
-
+
@@ -86,6 +88,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ProjectAirFighter/src/FormAirFighter.java b/ProjectAirFighter/src/FormAirFighter.java
index 73e1a1e..cf00e67 100644
--- a/ProjectAirFighter/src/FormAirFighter.java
+++ b/ProjectAirFighter/src/FormAirFighter.java
@@ -1,3 +1,7 @@
+import Drawnings.DrawningAirCraft;
+import Drawnings.DrawningAirFighter;
+import MovementStrategy.*;
+
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
@@ -7,16 +11,45 @@ import java.util.Random;
import java.util.List;
public class FormAirFighter extends JFrame {
- protected DrawningAirFighter _drawningAirFighter = new DrawningAirFighter();
+ protected DrawningAirCraft _drawningAirCraft;
JPanel PanelWrapper;
private JPanel PictureBox;
- private JButton buttonCreate;
+ private JButton buttonCreateAirFighter;
+ private JButton buttonCreateAirCraft;
private JButton buttonRight;
private JButton buttonDown;
private JButton buttonLeft;
private JButton buttonUp;
-
+ private JComboBox comboBoxStrategy;
+ private JButton buttonStrategyStep;
+ private AbstractStrategy _strategy;
private List controls;
+
+ private void createObject(String type) {
+ Random random = new Random();
+ switch (type) {
+ case "Drawnings.DrawningAirCraft":
+ _drawningAirCraft = new DrawningAirCraft(random.nextInt(30,100), random.nextInt(100,500),
+ new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)), random.nextInt(3));
+ break;
+ case "Drawnings.DrawningAirFighter":
+ _drawningAirCraft = new DrawningAirFighter(random.nextInt(30,100), random.nextInt(100,500),
+ new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)), random.nextInt(3),
+ new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)),
+ random.nextBoolean(), random.nextBoolean());
+ break;
+ default:
+ return;
+ }
+ _drawningAirCraft.setPictureSize(PictureBox.getWidth(), PictureBox.getHeight());
+ _drawningAirCraft.setPosition(random.nextInt(25, 100),
+ random.nextInt(25, 100));
+ _strategy = null;
+ comboBoxStrategy.setEnabled(true);
+
+ Draw();
+ }
+
public FormAirFighter() {
buttonUp.setName("buttonUp");
buttonDown.setName("buttonDown");
@@ -25,25 +58,19 @@ public class FormAirFighter extends JFrame {
InitializeControlsRepaintList();
- buttonCreate.addActionListener(new ActionListener() {
+ buttonCreateAirFighter.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
- _drawningAirFighter = new DrawningAirFighter();
- Random random = new Random();
-
- _drawningAirFighter.Init(random.nextInt(30, 100),
- random.nextInt(100, 500),
- new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)),
- new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)),
- random.nextBoolean(), random.nextBoolean() );
- _drawningAirFighter.setPictureSize(PictureBox.getWidth(), PictureBox.getHeight());
- _drawningAirFighter.setPosition(random.nextInt(25, 100),
- random.nextInt(25, 100));
-
- Draw();
+ createObject("Drawnings.DrawningAirFighter");
}
});
+ buttonCreateAirCraft.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ createObject("Drawnings.DrawningAirCraft");
+ }
+ });
ActionListener buttonMoveClickedListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
@@ -52,36 +79,72 @@ public class FormAirFighter extends JFrame {
switch (buttonName) {
case "buttonUp": {
- result = _drawningAirFighter.moveTransport(DirectionType.Up);
+ result = _drawningAirCraft.moveTransport(MovementDirection.Up);
}
break;
case "buttonDown": {
- result = _drawningAirFighter.moveTransport(DirectionType.Down);
+ result = _drawningAirCraft.moveTransport(MovementDirection.Down);
}
break;
case "buttonLeft": {
- result = _drawningAirFighter.moveTransport(DirectionType.Left);
+ result = _drawningAirCraft.moveTransport(MovementDirection.Left);
}
break;
case "buttonRight": {
- result = _drawningAirFighter.moveTransport(DirectionType.Right);
+ result = _drawningAirCraft.moveTransport(MovementDirection.Right);
}
break;
-
}
if (result)
Draw();
-
}
};
buttonRight.addActionListener(buttonMoveClickedListener);
buttonDown.addActionListener(buttonMoveClickedListener);
buttonLeft.addActionListener(buttonMoveClickedListener);
buttonUp.addActionListener(buttonMoveClickedListener);
+ comboBoxStrategy.addItem("К центру");
+ comboBoxStrategy.addItem("К краю");
+ buttonStrategyStep.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (_drawningAirCraft == null)
+ return;
+ if (comboBoxStrategy.isEnabled()) {
+ switch (comboBoxStrategy.getSelectedIndex()) {
+ case 0:
+ _strategy = new MoveToCenter();
+ break;
+ case 1:
+ _strategy = new MoveToBorder();
+ break;
+ default:
+ _strategy = null;
+ break;
+
+ }
+ if (_strategy == null) {
+ return;
+ }
+ _strategy.SetData(new MoveableAirCraft(_drawningAirCraft), PictureBox.getWidth(), PictureBox.getHeight());
+ }
+ if (_strategy == null) {
+ return;
+ }
+ _strategy.MakeStep();
+ Draw();
+ comboBoxStrategy.setEnabled(false);
+
+ if (_strategy.GetStatus() == StrategyStatus.Finish) {
+ comboBoxStrategy.setEnabled(true);
+ _strategy = null;
+ }
+ }
+ });
}
private void Draw() {
- if (_drawningAirFighter.getEntityAirFighter() == null)
+ if (_drawningAirCraft.getEntityAirCraft() == null)
return;
if (PictureBox.getWidth() == 0 || PictureBox.getHeight() == 0) {
return;
@@ -89,10 +152,9 @@ public class FormAirFighter extends JFrame {
Graphics g = PictureBox.getGraphics();
g.setColor(PictureBox.getBackground());
g.fillRect(0,0, PictureBox.getWidth(), PictureBox.getHeight());
- _drawningAirFighter.drawAirFighter(g);
+ _drawningAirCraft.drawAirCraft(g);
RepaintControls();
-
}
private void RepaintControls() {
for (JComponent control : controls) {
@@ -100,15 +162,15 @@ public class FormAirFighter extends JFrame {
}
}
-
private void InitializeControlsRepaintList() {
controls = new LinkedList<>();
- controls.add(buttonCreate);
+ controls.add(buttonCreateAirFighter);
+ controls.add(buttonCreateAirCraft);
controls.add(buttonUp);
controls.add(buttonDown);
controls.add(buttonLeft);
controls.add(buttonRight);
+ controls.add(comboBoxStrategy);
+ controls.add(buttonStrategyStep);
}
-
-
-}
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/AbstractStrategy.java b/ProjectAirFighter/src/MovementStrategy/AbstractStrategy.java
new file mode 100644
index 0000000..333abfd
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/AbstractStrategy.java
@@ -0,0 +1,66 @@
+package MovementStrategy;
+
+public abstract class AbstractStrategy {
+ private IMoveableObject _moveableObject;
+ private StrategyStatus _state = StrategyStatus.NotInit;
+ protected int FieldWidth;
+ protected int FieldHeight;
+ public StrategyStatus GetStatus() { return _state; }
+
+ public void SetData(IMoveableObject moveableObject, int width, int height)
+ {
+ if (moveableObject == null)
+ {
+ _state = StrategyStatus.NotInit;
+ return;
+ }
+ _state = StrategyStatus.InProgress;
+ _moveableObject = moveableObject;
+ FieldWidth = width;
+ FieldHeight = height;
+ }
+
+ public void MakeStep()
+ {
+ if (_state != StrategyStatus.InProgress)
+ {
+ return;
+ }
+ if (IsTargetDestination())
+ {
+ _state = StrategyStatus.Finish;
+ return;
+ }
+ MoveToTarget();
+ }
+
+ protected boolean MoveLeft() { return MoveTo(MovementDirection.Left); }
+ protected boolean MoveRight() { return MoveTo(MovementDirection.Right); }
+ protected boolean MoveUp() { return MoveTo(MovementDirection.Up); }
+ protected boolean MoveDown() { return MoveTo(MovementDirection.Down); }
+ protected ObjectParameters GetObjectParameters() { return _moveableObject.GetObjectPosition(); }
+
+ protected int GetStep()
+ {
+ if (_state != StrategyStatus.InProgress)
+ {
+ return 0;
+ }
+ return _moveableObject.GetStep();
+ }
+ protected abstract void MoveToTarget();
+ protected abstract boolean IsTargetDestination();
+ private boolean MoveTo(MovementDirection directionType)
+ {
+ if (_state != StrategyStatus.InProgress)
+ {
+ return false;
+ }
+ if (_moveableObject.TryMoveObject(directionType))
+ {
+ _moveableObject.MoveObject(directionType);
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/IMoveableObject.java b/ProjectAirFighter/src/MovementStrategy/IMoveableObject.java
new file mode 100644
index 0000000..0cb1a83
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/IMoveableObject.java
@@ -0,0 +1,8 @@
+package MovementStrategy;
+
+public interface IMoveableObject {
+ ObjectParameters GetObjectPosition();
+ int GetStep();
+ boolean TryMoveObject(MovementDirection direction);
+ void MoveObject(MovementDirection direction);
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/MoveToBorder.java b/ProjectAirFighter/src/MovementStrategy/MoveToBorder.java
new file mode 100644
index 0000000..52d6ad6
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/MoveToBorder.java
@@ -0,0 +1,47 @@
+package MovementStrategy;
+
+public class MoveToBorder extends AbstractStrategy {
+ protected boolean IsTargetDestination()
+ {
+ var objParams = GetObjectParameters();
+ if (objParams == null) {
+ return false;
+ }
+ return objParams.RightBorder() <= FieldWidth &&
+ objParams.RightBorder() + GetStep() >= FieldWidth &&
+ objParams.DownBorder() <= FieldHeight &&
+ objParams.DownBorder() + GetStep() >= FieldHeight;
+ }
+
+ protected void MoveToTarget()
+ {
+ var objParams = GetObjectParameters();
+ if (objParams == null) {
+ return;
+ }
+ int diffX = objParams.RightBorder() - FieldWidth;
+ if (Math.abs(diffX) > GetStep())
+ {
+ if (diffX > 0)
+ {
+ MoveLeft();
+ }
+ else
+ {
+ MoveRight();
+ }
+ }
+ int diffY = objParams.DownBorder() - FieldHeight;
+ if (Math.abs(diffY) > GetStep())
+ {
+ if (diffY > 0)
+ {
+ MoveUp();
+ }
+ else
+ {
+ MoveDown();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/MoveToCenter.java b/ProjectAirFighter/src/MovementStrategy/MoveToCenter.java
new file mode 100644
index 0000000..8a314f8
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/MoveToCenter.java
@@ -0,0 +1,46 @@
+package MovementStrategy;
+
+public class MoveToCenter extends AbstractStrategy {
+ protected boolean IsTargetDestination()
+ {
+ var objParams = GetObjectParameters();
+ if (objParams == null) {
+ return false;
+ }
+ return (objParams.ObjectMiddleHorizontal() - GetStep() <= FieldWidth / 2 &&
+ objParams.ObjectMiddleHorizontal() + GetStep() >= FieldWidth / 2 &&
+ objParams.ObjectMiddleVertical() - GetStep() <= FieldHeight / 2 &&
+ objParams.ObjectMiddleVertical() + GetStep() >= FieldHeight / 2);
+ }
+ protected void MoveToTarget()
+ {
+
+ var objParams = GetObjectParameters();
+ if (objParams == null) {
+ return;
+ }
+
+ var diffX = objParams.ObjectMiddleHorizontal() - FieldWidth / 2;
+ if (Math.abs(diffX) > GetStep()) {
+ if (diffX > 0)
+ {
+ MoveLeft();
+ }
+ else
+ {
+ MoveRight();
+ }
+ }
+ var diffY = objParams.ObjectMiddleVertical() - FieldHeight / 2;
+ if (Math.abs(diffY) > GetStep()) {
+ if (diffY > 0)
+ {
+ MoveUp();
+ }
+ else
+ {
+ MoveDown();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/MoveableAirCraft.java b/ProjectAirFighter/src/MovementStrategy/MoveableAirCraft.java
new file mode 100644
index 0000000..f1cc0a8
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/MoveableAirCraft.java
@@ -0,0 +1,24 @@
+package MovementStrategy;
+
+import Drawnings.DrawningAirCraft;
+
+public class MoveableAirCraft implements IMoveableObject {
+ private DrawningAirCraft _airCraft = null;
+ public MoveableAirCraft(DrawningAirCraft drawningAirCraft)
+ {
+ _airCraft = drawningAirCraft;
+ }
+
+ public ObjectParameters GetObjectPosition()
+ {
+ if (_airCraft == null || _airCraft.getEntityAirCraft() == null)
+ {
+ return null;
+ }
+ return new ObjectParameters(_airCraft.GetPosX(), _airCraft.GetPosY(), _airCraft.GetWidth(), _airCraft.GetHeight());
+ }
+
+ public int GetStep() { return (int) _airCraft.getEntityAirCraft().getStep(); }
+ public boolean TryMoveObject(MovementDirection direction) { return _airCraft.moveTransport(direction); }
+ public void MoveObject(MovementDirection direction) { _airCraft.moveTransport(direction); }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/MovementDirection.java b/ProjectAirFighter/src/MovementStrategy/MovementDirection.java
new file mode 100644
index 0000000..8c7cce5
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/MovementDirection.java
@@ -0,0 +1,8 @@
+package MovementStrategy;
+
+public enum MovementDirection {
+ Up,
+ Down,
+ Left,
+ Right;
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/ObjectParameters.java b/ProjectAirFighter/src/MovementStrategy/ObjectParameters.java
new file mode 100644
index 0000000..36d1273
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/ObjectParameters.java
@@ -0,0 +1,25 @@
+package MovementStrategy;
+
+public class ObjectParameters {
+ private int _x;
+ private int _y;
+ private int _width;
+ private int _height;
+
+ public int LeftBorder() { return _x; }
+ public int TopBorder() { return _y; }
+ public int RightBorder() { return _x + _width; }
+ public int DownBorder() { return _y + _height; }
+
+
+ public int ObjectMiddleHorizontal () { return _x + _width / 2; }
+ public int ObjectMiddleVertical () { return _y + _height / 2; }
+
+ public ObjectParameters(int x, int y, int width, int height)
+ {
+ _x = x;
+ _y = y;
+ _width = width;
+ _height = height;
+ }
+}
\ No newline at end of file
diff --git a/ProjectAirFighter/src/MovementStrategy/StrategyStatus.java b/ProjectAirFighter/src/MovementStrategy/StrategyStatus.java
new file mode 100644
index 0000000..c3c3950
--- /dev/null
+++ b/ProjectAirFighter/src/MovementStrategy/StrategyStatus.java
@@ -0,0 +1,7 @@
+package MovementStrategy;
+
+public enum StrategyStatus {
+ NotInit,
+ InProgress,
+ Finish
+}
\ No newline at end of file
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DirectionType.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DirectionType.class
deleted file mode 100644
index e7c83de18523be2ae85cf416713bfe32f7abebf8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1102
zcmZ`%YfsZ)6n@^dUANk~IWEcs<)&<)APRUXArQdCWQwt{Wbsos$|xx>LSX%UyAc6H+G9oS<%m?*evQF=0wa+1-oTan(eY9oieOu`fN>OytogpifrT$~&93
zK<;f1wSfT)>gY3Z9XF`9?uUUZ&|fT-51bQc&Ub>w+*a*?rnL+da8t*yi4okQet!}+
zgXST%IdS}^yR|2;+!DA~4uV)vkO|
zs-&P9q%<^|you~a2=mfRZA-*(#
zEFF}zbVt(C`2e{B9}QPaYI*d6aWc~tK
zt}yaq`W!_xw?EPA|Cn?v
zunNhPPLLdWr)N=?EaeQo5NgSi7NOEVFrt5hs46Wec2#Xbx2sx<7FtcVkg<8{Zj~uK
z#!{Q2-lnj=5<`AMIm6^B6bbIA66g}#)g&+^m`X~JIY;pnITmx-V31bM!ZM__K*Upo
P7buo!PyYl@W&GJMXAsUw
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DrawningAirFighter$1.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DrawningAirFighter$1.class
deleted file mode 100644
index 9bd108e877c27282d783c4d553008c772649ef6e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 728
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
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DrawningAirFighterEngine.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/DrawningAirFighterEngine.class
deleted file mode 100644
index 0ada8836d0065ea6b58710bc56707161b2c273e0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1392
zcmZ{k%}*0S7{;HWyIolqSiUR;0a3v%R>7+HQAH7`ffO~OMB_o1vMCF-HQTKoym&D2
z;L)2W^`aL^OcabJ#;fm9U4|*>|4zV}9?<{`m9d8-NK+>u5kogJM8M
zSioGdAKD{1JD(l7y13$Ge1Y&eH}Cr60wF85pko&rHRuL*!w}d#ozJ>?XR=VrOXWj5
zS8|GsV#V&HYnGDIt=T{eOo67X<4@;H_pg-hFFIZjcBT<+XxGqTpc8upx~4q)QQpmG
zCtNS(W|w`(D@PMB?mD$8o9fbN=n`lTwqQTIaye81X|LhS_X8(Ud++bmM&!M+=A`7
z^1EVG{AHK8yVE=IN)k6~s>Q8XK_WHi6+2jmQ_Rp|-nTQWbM}KEiH1`G&Gp^n=49>L
zn`71Nc@uu}f5a(56A)SAuP$w=1=LKrIc9aW+#AW)w>|$_p?He{QZ?VVd5p4&C4tVW
z(`LxT6e;NQg_4(XQm$m#yA!UXvh5h)VQk>-5FB|NISX;l>%s9bzee~Le5=D75Fa>c
zK%ApomeL~}jj{koDVBjoag3vMenEAZ?<1d~&BecshsKmnrS}c`md}KQGlF8Zks$oGE4EebnuNi3CSgrm2)5XUB1Z
zMVzFy8KFPWHH-<-^NTux(>PNuP|OB91=bFKM?@ABUq>{mens!?w*C$5TgQRnk7#9?
z>T6h0b?~{_cQ2wmH>dBJI;%faHH9mdie7t-Sas1H-=;V9dIvLH?{R9oM{C7YB{YVn
zV25G;Z48p=W;X}X&K-7Ome=nly0DBW9%C<_@iMCjqMq7JhT*-OoGs
z-23kM`+pxi0x*ar83IHJHU)M#7+Qu3>S9*Uri;O{G^iIM1@(%-;5eaYb>k$%4u5nc
zc2&Kp2GvC)7|CUFh5l$X8i-49GI)oxhHmIuF=z@)6ktS8&l_4nh6I_PRL5}8A065l
zW8?eGOd#$;JsKo5DsW>9!_G3SbpT888QdB_yXr`W*4Rt&^z-1&3bw+-AYU#TYQdPu
z6)!S0TTn7;HXV#+4K1w|OylhecC0r}a0Xixv|=ZNk|O#lgl+RzG8!$Y`FTBA?B^`)
zrW4lqD{DeSoS(f4Uc){jJFOWL=^TUT56nntV`y0On8@i_L&gCdl;BqoKs&=0Q(Fy~
z!AWLuHM5|ZQKB+@=;ZWwG1&c9y@JG9Rou){I+vBvjUH|nGX1CoJ{(bS6uk`W7X6}p
zr%%CgbBB7U8~qAS@VHJjl`6rLa8ki33@|iNE`zBQHAOC~X3Tz}O@E-mj@3glcHy*w
z2!<$7Q8P-G%~dp7hJiRY9Z@ifGYoZC^h{yzl8qhs>C|EO^)(ae$)
z0vnn45RaEOtLnIFtx8SR24>|--qds4GPGt{I+vn0SO_XXN-A^MK%Snfb
z=@3!mshnRfb!dpR^;3qLyf&uhP3k4g6GKzEg+fvr(RqEgmrGEYYTf+)(50=XK>#pX
zX;P6SkZi{rw8rV}bI5Sg)7ReG*5$FeWA2Gnu=asu)IOy@Ug
zZGcE?9fek~kJgLyHfe=H0yFeR0dWbvbO@K;!rLYYAKt-b)7OVt(%MX|N_%!wnnMx}
zQ%aE}kvEMm3#k1r#jgXzV*7n4Pq2j^O-~@xW7|{M?zMNU!rSo}yT-VF1$*wWDaUv4
zCB%ocaN`y1cZX)VJ(s+*tLT_Y*j}t{w6ykW?XeBM;}6lDSjC~Rtt)Kz+8^~g#9qlG
zc^qG0578!t!cMQv>%5P{d^xs)@NJ3Reg0dg1@QG140d{LD;TZ?v!^D^{+ci?-!LU%
z;dFTIVaY2!>UD~}E|1IOqrSo_Zcfhe
zvaBt|B)|9~_{IN)zP6w_;-N{h4b5~tw_-0z?bwb!`U?_=7Y17J5nbD5`V@YR-FQIH
z$7J;b&7z-Z82pMh{Db|h6$e-k{49(Bo2I`CNqXw&WCne&-^C$z8$E29zV+YWF#8cl
z*q=BmFdP$P^a(y37ee&xL%$Hg2_cG;LK3Hh_c17ZjMKtbhzL(HB>awH;V+ERv^pcU
zASwpv8N@j;jF>opaWR4OVgVP-0rn{x32!4bT%o^<(QV$y#LsF*
T{P}-GJiRU=AzviC0&e{W=?|-9
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningEngine.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningEngine.class
new file mode 100644
index 0000000000000000000000000000000000000000..2cac72a641ab32d2d9d6acb8599cb9e04c445eda
GIT binary patch
literal 1360
zcmZ`&-A)rx5dKcP+l6I;g;HpN@+;Uss8$4}h(H0;q-Y`rC0@W%Hf5o-q}{@;iN1k6
zfOz9IiGtCD2k)1;FKUJ5aD7__qAg!
zn$>cd=!>0wJ#8|$=8T+S&NDaz!3`NrXqF%=Xo14uSuSWNIU|=TMptqfBc~_wr5w*W
z*0LqN$j}=IzD@lX6z4~^DQJhv(3;WBm0aoYdFgORFIc6L&FF+%LYD#$x*5E+Q!18S
zl0n(h>x=i?TF?uhgkA-G=x19AOXwtDG+{?kE_;I72fXZDZ+(y0h&V9nQf4
z1wn+Uk6mK+r6qtANYanjjx;cyeMmSNNU_}x1xs-p!y7=B`ZTq1K%u305
zfJv?~hUpGEz!0XtgWp4XG)}VVt9vw&>Z%2URAvmV7^gcJfoc^VB3w7wQ?!b_4D1%T^$^q4#0*8-;Jk(`;Spnfe+b7g
zi@4n&^OMgrPs5Q5^n`!Hzu7r>iJ=ROhQ6YM+7r((685VD+a5t(*;Zw0`EJ>FmEAH@
zI>TrMIp2s>9CQz;=}V8V@m=9q6J?J)~C;y+JQc=))ZP@r=CJ7(j-!EMf%j
yF-o+LS^P}dvsGC+rHm&uIn9fCJSB0swLnZcEo+f1!QxDWb1uX$#S(2ekoX6SPaKQ@
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningOvalEngine.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningOvalEngine.class
new file mode 100644
index 0000000000000000000000000000000000000000..0e6ca4a7174c043d51e923d5c025a31dd4a1e15f
GIT binary patch
literal 1372
zcmZ`&-A)rx5dKbgw+qVx%TH+wlwZM83e}3B6cH$3nt)tjP~rtFWm6VPOWG~mn&=zI
z1Bf?XlPDNXcmUtRx9|#`v)f;gCOtbd=R0S<`DV_q>mOGD=CP>21wn?WLV}w?+t-iv
zNLtUNB5OPQM$%$%&zKq0nq?4zBO40pP%lGK(EydfvzXIQGG-=~k1SJVR%2znTFMj-UltB`jGUb+QIA%%$!J&MK?g&3<(87Q
zMp>M+4CI#qO`o1x7vS3j{LFLL_Po|()?7a8jEh854IvqYpVxKf7L
zq1ecVj2?#ea(F?{o5^)6mpw4Vxp#nq0Q$L{0}NttnQP|5JrzS3W~isD9V}f@b+;3v
z%Q-lxVgw=Lu}kXmA{pdhf_^-AxJLB^*P^6>7|-q+49zRl2uI0R`c9f6tt;82p5D-N
zCija$(b_YqLp@bW-4-_HP%iaF3=#(h$!;%0LyhJvL5*Cu^yI;+eq<++@sz=L*8ngm
zyucFsP?a2&Zp3ct&sCrSNkw-_h{|Tw3F4P@x~En4o#v5{TX{>*S#QeLCec{W7IH~r
z+2mSzZ;LR_dyRgYM;91I>F?q*Ne@UMo8AqrW8_8X%jheGF2T;paABNQzD+^e2GpYc
z01wGyh~g2g{P0IYyXiaj9r9}UYF3yOJ!0T9dcz(uIxYF73p93pf)ese-_UaYL1bV4
z{^m&pJ4vT~SRqyo=%qA6Xv8qhVi=m8xQ}ohWKYm4@icHKaO*K9iNq8|n;=|6k@1AF
zu0Mohm`2PY$O7c^lc%HM3wTF=BCy%odx^da42Hg`F2w%<
D*oGle
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/EngineCount.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/EngineCount.class
new file mode 100644
index 0000000000000000000000000000000000000000..fc2ebfc97fa9e61281f3617ed16fcafd6a609ee6
GIT binary patch
literal 1298
zcmZ`&T~8BH5IwiM+mB@n>k1SqC?aYm
z5*T^igHeZt%Mq9c1~EjWm0I0%1O`*-;=X-o=W4cB&28@NJCz`>BY}|!Mhzr!g{u4o
zta;4?DtBntn$G4MfyGo;_G-;;H1b^srNAc%^4%4fK=O|pxQc56;ezYA!IHpmH&rKd
zBVFb(uN#=e4FR3AUo;PP9A7|eM4{;vy~RwoNz01}h#`tt6b2)+2JT>*<&pz51d^$A
zFTtp_-zaspzDrsS6zL+{<+tpe8l7Y>D4FhY0RmRBUa@Os+jlv;L!o;10Wn$s%O+qx
zcY?k8?n~PzOyKy`uo~>SWOS!XiCD?4dUnwCiAPP*!~*fE6LgEEq|zI-QH4saqc$B7
z?BAOy^yqylPbEvVbQNda<-yIat)AiaSe_$&6Z8+zmPdKP0kX8d($dmW#NtZ?%p~tD
z`C*FBV4CuBHeEkOfv9Y_4?383m|{$R
zPmadF?$dCJED$HSNl||3c|dOn52=qw$kUgn&5`BqwaiCMypw=g`nCr(WQBI)TDyX&
z^XC3Z=3aqB_#4Ew(t=XjR$GXawzU>r6YFqZwUf@=3TaNa$S
z=j{$)j)4n{FbWlKWhT>#Mdn<}G?T)GO&I3<%2~l>%64%slA6%3M7?d!u}}otkH!ar
zcl=s}iNASEysg<<@yjVos#zHP;G!%_6+|C%Up6WctE>=u>~DQ)emDd|N0$PYj_JaI
NiE`1?M3)#2?*$hiGmZcN
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/EngineCount.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/EngineCount.class
deleted file mode 100644
index 7157044781b84dc284c5a6f8644fe7513e877d9b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1238
zcmZuvT~8BH5Iwiu?Y7HSYDFpt@*!$lgaU$Jtq36yNvfC>n-HItvX+vvP0AKu{Xsrx
zQ6U-)&;BUmnQhf=OM3WGtaZscaBEX_?=n8Zy5
zQ=(tA4tJfVg4&EiH|f1COm`Gg7ZH#lidYnuAg3+d#f%KeZ{SEFkt(xHlbCLx=GuphPyRn5R`T5O_8WUI?Itmv
z(`0d)w_l?$oj}*IQmyLRUaLtSEzRz@FIC424knz=Y;tD`m3nuwG!Qlx$SUwcPsPi5
zCMt26D$YhtnoI|l56QpE+aijc_tt+EW1cOLjNpg7?-0q
zNh!x{BmM=K&yoBK(dE^hyyC80bS3LOV#Gkl&|Oj)ezoF6<|W
z6P}<=F3&^W5FW9P$H?<5-R3BzdOiCI@T41D=Ih8=_{P}eR9HX7trLWOEv*^8X82l0Pegpx
hJVW*baT!R5H|Y;61R2Z-|EFmWb^Bb#Q{qBc`3*ym-%$Vn
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Entities/EntityAirCraft.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Entities/EntityAirCraft.class
new file mode 100644
index 0000000000000000000000000000000000000000..c01e072d39bf3d395667806353cead00251c7dbf
GIT binary patch
literal 859
zcmZ`$T~8B16g{`ykG8C3=?A5tB8s}~1N%yXF~L@oCXGJS;PbW}+aaY(wu^*c;GZ#3
z5*rg9`~m(bg5-gD3V`hEQqz!AJ6a>&~-9GI{Ojn~seCQ{4-om?Kt
zxD|&V6N1@06Jki9j-nJC6j35rAA}r@xlC;ZI}YxlOensJhL^2q62%0!dlG&MgYY5=
zG;&yii!~b+2UXO#uFI2fItt$PPsD(mSuf;NCNBwjZ||63^b&DKD2zmsieS9Mcqy66|FwNzd4nBx*5&UqIPx!X
zmQ(KQ$ad>k*LM?ybu{?gU^L)J98Lc_=!<^VNHhr3fKFU1aCPLpl)R%5kas8TGAaU{m-AGmN-lbtbKO_T
ziJG3LG7)I>qlka;Je&>USQmt_uhx2laA>H@}_X)GW{I%nJ1)H&;I
zJozNkMI8+^E!?r;U|XQQI(3kQA5wwJ3pH2ik$~%;9v7!|&jg&QOjq`D{BE&Uz#PPp
zB#WV%%h#8m$1-^zj%Um`!*~+T&ca0LI8U1CxmpN#!`0PtK@Pbchi5DezdI7BGt3DJ
z9IRQmxYTH*DU=r%Qbv^OlpU|6mYcz`Ky4gH*SXYr3GwZ_(i44O-rtUP&J-vpf*334s<|zB`P1w1T!A{DkD#vj
z=wO!-6~i9iBG~#?0NZQ9_tt_pis0s2u!H;g*dp^5m)}J@8}SO3Zj+PK-aZ~=ggt8ci0bLwV+vws-V=Jdn}?@V
RQ|s&D89j@b14bqI{{Z+Ipilq+
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/EntityAirFighter.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/EntityAirFighter.class
deleted file mode 100644
index b0b442cd85d2c741cab7b54a2d5a13dc8eb68877..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1325
zcmZuvU2hUm5IvWVUBE3+lv?bEv}g;f7Qd~jF{#By5~4;7CcG`Mfvw0Ay0z&q@OSub
zq9!FKKKKLtQO0v`DQ!3Va_7$6IdjjPnZN&j{{gU#rwN1*))6rfg(i^Rvp!qpzBTBU
z-?aAZwkM!Ha|Vw0Tp(O5HR6aNt|MXK5)7ul9C(g*wC#*`oo>&wM*`9M(6&1QqAGKf
z22x0~$Ol^{FkF%0jDgFzA`pM!c8+%3zDr=brvA1Ly|RjI$;3GWS7l;qyVG$z#~oOG
z^(fzR2CiX&yxw+Q7H-Pel7VFz)8D!6kG8ij5ZQ4%HVf38f&Kd6Q_CK`w_1HhGBvkt
z^&8g6k^UqY@p=wHnVP?`ErD3q_9o3yiYnPNaM~9m6#;{hb1h|xC4W<_%^Y7hWLfv@
zA!Xv5>W1Z-0tvcjjZ`@Xf%Rgw;xFp=o6S;#lh{9*gmyU5KHfT0J7rxIlrj#bjQZ$Q
zxJ2DO7`5$PM~ap8>#-q+g%wI3;v#80xe&aC}UQJ^Pq12=hI1Rq2H#>WuyJWs${Ab1VyQ*h{{uz8G`
z?>=xM5L`rQ3O=QMjM*PPa54~V27|9QW1xpUy?6uc1#Ui5>P0>Ne6o&5ZjQ;kuug1In;ZWhOwF>{eIX3bo5jI5c}
z#+Wy=`WTC6>#z)+kUaNh1qm`ra~0;e2#Z{WRjjEmU#XnJgfBn9y~*knaGwadtpz;b
bPDa%2A#YK2d&Ire)a@~EI*C4^7sBR$1FOKa
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$1.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$1.class
index 2b3997c55ced67b7fc9451772d46351e1da156dd..3706c14e1bdbfb340e11661f7dab887ab5c3558c 100644
GIT binary patch
delta 358
zcmZvYOG*Pl5QhJrBoot#v5n@TiEra;VIM#QM13wQ?)Ayyj1jf<}OtLm?hqMwRmpMQM6y#ola{mA>HDU=ynCq@mEIEilee^n5h
zP8?lYZ8!vG^Qe?Chk1r_=f+(BO&Lm|(aP$xi=GZGLv`o0rv^%1sU(u;))4hzx0^?e
zVaW~D&`LefiIqWU(+BS}y~}j#RWKotgHNY<^opocZlqtC=4gRxAB^H57Ae-8gQJNS
zRRDK;#3!92+r1$3GFB)ysC7*C36k%@rA;Sn0aPbR-)u0JRBYtZX7m&zkz^u4o;bm(`dXuq+nW~vVD4%@t
z-5=oNR&CWjtskLEs`dx?dwky7(~~S1sWMgR+tc^lzW1Da`}4n_{sAzHwIsUGts!Bc
z2fYGj(GNCfouKH{8<7ms(*nIw!wJ)u=__?Q3p)Cc)Sw&ahe7{y`-Po%ZLgkxvhiG2
zBgWo!JSUnF=+0y-8U_T09t8Hb=XmvlBsz{DnM4Xh8ioxV#Sa1lov8$df2$n|6gXNs
zd|g4qvHy$NiX1op)b?urrj8LL)pF9nDU1qep4^Enk5%?$EGuhiIL*8<2YWlp&-<<)
zDEx%N|0s~i5Ts)aXBFQx$uZ2zRutx(f%C`+^s77PeBYI}7n5FBx)!DCx~jNf;4bb_j!;JJ%qz}I*_J9Mb>F~G
zm?dQe@k1wad{U03q$DZK8+f3mBB45@p(rr6&sn~ZUX-7$s+f`!M$(f3Tb%iJz_Jy_
z&-*nd9xOSYT;AH;kij#1!{y0P$*?$PgoI2l1aa;lD)^H*cYI`kEPE2zq%
zqgV`g7J5nHS=WMBbt$S>Z`I7!Ez2-k^h3^%VR_VR-nGL}hM3?3?t{PrglVcr%y-?z
ze?K15E^;?Rt4{Q(3m+k-cA@kME7jTKCyfphSA7VvGqK?Z*yi$7`qBI+G3#+psEB-q#NJ<9l*0*&A;p7NG1B=C$G
Zy6_7sv@EiB{d=??0gWKWhL0
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$2.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$2.class
index 98499a1b0ab1909d7eda59c7e3ccdce1afc98f43..a8ad31f696f11b76f4f8e06564a3b39cbb8734f3 100644
GIT binary patch
delta 357
zcmZ{g-!20|7{$-5Zdb>uRa(^l|5Tz6Ad!@&Tu599_oLZvx2=_o375Qr^g%@8PvXJ@
zcm-a;E8y%3u1qrLeDi%LzkHcD_tTayA5YH!Dp!FU7f~1mXX`&zCDhwm
zHH?IZK?gY(Ll_pw)=u>aXSFbB8ea>zb?qzT?;p4Px)I2)?6uUnDtA;Aln;z1b7S?$
zL7{tNy?0-G4lnZ%o(CIg?qKouVT3-)YLgy!WNGalqVx#oHpz@p(-71uiqyh)3gejI
zi}{2mFv;3x?8;+!3e(gWyY-8`gUG4=2MqjiWy0D)2D|^TXD~}p3UfqRn8yM=#ZSp#
PG3j_%qDyAt-FdzM-Cr{&
literal 1628
zcmZuxO>Y}j6g|%#d+f<1cAYwq(6pfq#dgxTB-EvKnv&*&rZ{QHS7}-(6K9%Cac08I
zIDs9%fF)9Q>?(nTR8)+F#D`e2LPBB?s@0U_kVx+
zHGpxvl|%$l6^f1+;sWVu$K4vY+-YlL(>LAzVS%{6X?gwUxmIaiENe(0sY27y2A%5<
zj2)v`GwhAx&9w(+)#u((%eMS6foLwjqM-vR6=@yEkP+w!+>KqoXzrM{UmUOcmSa!J
zxj=Hm^cS7FTQvoa=kk?DYv4V~!H@f4mGP#I;;*g6zr
z(RaCn=kLKYDo*I=#mScQhYkXXO~c!qaMl@t70e{iM{F&~v%D?0pVn~({Vddcr*70d
zfo$&ZS@Ww2oE6Z*jg!uSIql<0tJD#aD72ipTr=}sTk5x1gY<6WuBGaTX&6J
zn^pXGS!Aj*c?c~hF^mxvFY35}l0f^U?Pw_0oIWtShp-Es(0Tpk(GHTvBmaM;W66
znZscjXv^6#mt4d4wjGyOmdPCml3$gn$8=nkc@C1b6|qB9kzYSdN?
z*OK-=s7Rs9wN|qGhs)H)tm$t$>+^<7Iq_l8FJ%NQ&YSLiz8P~};MD%zAF1iGJdj}S
z6QMwkc5133lx^mJV%iriwdR^$y++2xDsN%YH>z*X8r%CtXyL1wwq%)|t(6Q(5_#|`
zyIONRY9}m;lAbd?|GMKbraohn(21Jid8UUx{v8q!n1M*AcBs
zw8FsW5QQ(GJ`Q|l*~hsP6!0ATuFwlNF;9#BK{SEaIFHfo{WP5yu*jZa#Rqhk$@T^s
zX#WG|>Ht3<6ke%7^Bv#_{e~f1caoIGDZl(;pm1vv(G5bF6eL
znNtls`w*pQDfS5GX+Ia(XBBDp(SAO#yJFH#)6NHWJYI@rV;?idn{4unvh}hJv0Y`G
zFFb*Gf`QNQLIW4a9$};jTnT~GP2lAaIMxIvB+&bi+%ZT4(~`L;By%OSvmYkUBb;5p
zN4SVjaS4z49>2jAe8=QJ@b~>ACh!a2%5S`(-+3pJ=>in?drhYIu!LpO+J;}Tf?FiE
z9Y5oB+-9y-dY(bsKbS;ZMMOo1iXI^wkV>WWlj(H&FSKh6d55kM+{GIl6~57Az)6I&
MdqgxQkTT%+FQ$}q#Q*>R
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$3.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$3.class
new file mode 100644
index 0000000000000000000000000000000000000000..33cd85815badb5d302bc75b74fdad8340eb990b4
GIT binary patch
literal 1705
zcma)6-A^1<6#w1b*`3{CU>7JT2rW`@=DS3G)I(2zh=wX&tR-6X*`qjXghS?wYoro2dAfV^7Po
zKyuUcmz*89VhWtfWQ&iwE~q#q&@RRA=Da-4}1W)tY6Y%PehvMtT~b)3Zj3pL-_F{++G
zN9K60*>VEs1hmj_%Gt9M$Taw(x#1@;D9{w%FG}c>7{&z^BRX;*^esn`7ihh`?izbG
ztKefzy2b`E>nTnh$h_R)>F~CY#4{LG@vM&LkQeALIlE?!P_t6QH#gtQ9SWu_mruu+
z5Qwa73k(zwZ~j}ANWOp-s{
z%k&iqq7+Q%xDp5?ic&D8V_FJg0gM`9d_~7q*`A6_O2wQ&?}?pPv^?LmO_yzzd9>5B
ztF#aMAXT(%bAG3`X1dG9T9uvAR&**xb=7b!$sY(6IW_X`=*ta^7T9Pd)8BH|7YvuZ
z$tj~=$_OxDFx?Ffpt&w^=Ae;I9FT%cNHBI!*li~(HCim3fwq5j=D`H8ab45fsqz^_
znNPFi8OL?%9MSE`Q3MhuJMe9W7kf7S8mQ=hd7=w#LK
zJkvuTe>DjR%tEBo@^`~OP=wTkSGgB?8s{!0+ThS<5QCpXeGurBxW;J-%we8uXQ+j1
zSRhCJz?;BpJjbZ^ewxaQSmH{z;sdJ7VEaRLG=GEkIyy?x@!?BKBp>Ti>gf7dIsq(_
z@}XJQxZnEnj|(;K!yVUu{GIz)$IZnX+>2dG+nG9^yo-D^AG?Q(bDhCap9bv!?Q52FpiOQE2@A$U0y
zv^E5jQqX&s*wINHGZMKdByxE)b1f0)d7c*V5uy16%XolQe2v%fEz0;Fx9|fK`x$Ha
z6&3u3^#JKXD74*gAiYn!6~fwtUub=uz&7J2`nbVZWon*9)8CjvTt!4hi;8X`2}q?<
l`ss8!{U@3=y1Yr%2t&TXUEz!-156@3-KIoi0NDoo{sFMQl^Fm4
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$4.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/FormAirFighter$4.class
new file mode 100644
index 0000000000000000000000000000000000000000..d4a4cdec842bbd70f0316eea36b898373d78b903
GIT binary patch
literal 1880
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
literal 4192
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
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/IMoveableObject.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/IMoveableObject.class
new file mode 100644
index 0000000000000000000000000000000000000000..75624333cd1acac49e7182a93fd04456d8bffc81
GIT binary patch
literal 349
zcmbVII|{;35S;ZF{~z!GHe%A416T>71Qdmch22vYiNr*nPr<8McmNM2Zu~Ub+3YUE
z&g{(I?w2coK57ZIIIMH}~p5*i~m
zuXz?90u#g$p=~?kAHDaI(rU+s^`S?wgzFpL6VkTh5h`fj{Ph1(H#U@T*=fA#{3&t5`VHY9=66siwL
CV`60h
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveToBorder.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveToBorder.class
new file mode 100644
index 0000000000000000000000000000000000000000..64a6452a5858dc5249ac545dc7cf6d674d2b37af
GIT binary patch
literal 1229
zcmZuwTTc^F5dIFk?Y7$m1S%Dw0i9&zzB
zzs(Ecndz82TyUq#FcOPrS{l!nP3!1Dr-lm#y3qYUs^>cx0&7-jOEiWP-?X3j1`S+9
zFN3~f@p3U|6~z_Gv-rIcDVdX3uA5GYi)CIFR>c&SO~d?le%pOZ!ictFoPQI-Y0nC?
z@OIVQtrIY6b86TOo}#t6`Lce#qP1u3J*U7|EUBRDUru9ky|i&3eZ%snfV$u%dyAqJ
zos3RT;tSXbIc>O2R$j}}J7kSo0q)`+MJnziP8r$!iK->&qr@q+O!5aj%5m}(?TOFm
zImCqPo+9){#s`Q{e3{(vAwsTOzX~5fQ;(o3#{{Lg<0HgYlJG!-{E7n55h6QEWG2v#
z6^bRb-rD#&H4hdsi76sCO?Lq(X9#HMn4G7_#!OT4FKSY$AlG26o-{}oX9vDwi1MM2
z2o8KefZS`jBlze{L;ab&=dewMNF0rO!ivAWrH>v0$6+zelM&f>^?=t9=S#%#o+KifPgrbW(hVA*Q;9
LcJY8Xv|;`a?B@Q=
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveToCenter.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveToCenter.class
new file mode 100644
index 0000000000000000000000000000000000000000..d00a61732e97027becd3687315ffdb5802a247c0
GIT binary patch
literal 1274
zcmZuwYflqF6g@+?-9DBg4+{ttDS~YgiumRw2qMH*jV&$U7q{I37E6~b14e(03DJZv
zd?7JtjPa|9f5smmG2Yp2D*>ByX6MYgXU@HM=I5WU-vP{ECWr=jR45v}@Ge&c}hzn&*!zl9w%QoLx6`_|M
z>xMOTu?
zP}74y;Po619;1<#tw!<_BHr=`OxBQBF0zk7LN3)fQOW77A(BJLK2+rZisz8TJ&vIm
z`Iol5P$BPC2tiz?afIwWL?f1IEzL$;Lshe0
zxNa_E^l*R{%B7WZX(Q+D6d9#|C!Htrrjt$(q`XfMV~R6SMIO*j1E&81R&Nf8
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveableAirCraft.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MoveableAirCraft.class
new file mode 100644
index 0000000000000000000000000000000000000000..e33fd979de1e18406c3bafff2bee53f3a85f3466
GIT binary patch
literal 1412
zcma)5YflqF6g^W~w!3bD7I_FLARui~>J!u=ir|B!2uVp1znG;R%OKq)y90(l;VPtWxUhfEfvt%P3O+sx%bSu=g$26_2nCYIm{b~phZK}L=3GA9b49(mD{%L
zYHoRBix{64oMmW9XG%Ka&@~t)&cS3DUUK$$joY#)T}$%neoi^8jcqy%l390m$V*F7tZX6YSDslsh`5J^O;u~t}_gs3SA7l7xsQI
z{jY{)N(|9?r@|T93&Q3vc555lT~+O8NEMv2wOz7Yq1J&jDmR74Fmg7_=6jQ;yI2YC
z%5jU6Bxukx#}ld;hB0dUsY*^Zmf#XaX_enDSvvt2)n8xL#Hzcm5W=eUN+=b>=xOZm
zuwy|PjOP6R>;kE06rEkS%%2LSSeL?R)?iXSM!HFHdZP?E`bX5WqlX)#c?>sbyh*EN
z@<+(FXOF@&3N1Pvd_6~QeUQ;5^iq8t!0ZK;!JBMUk@i4J-UsX765
z7(oXF?$bPqNKz5Vqc}>4PQ?G4}ogt^Lw`a$QYmW`M>pgUJBn0Yxi?bcHc-
wh>4Q`-A#Jv4Lx)`z$`&9Jj9~_YBqo}La4Q4oqaMrO;|<)%V=QD)yY5p4MjOV8UO$Q
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MovementDirection.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/MovementDirection.class
new file mode 100644
index 0000000000000000000000000000000000000000..5b5f329a533af645e5dd4a542cf46459dd74a1fb
GIT binary patch
literal 1232
zcma)5VNcUw5PsgZUANk~Ibg~J#W~yt%0vOt5&{8COokXMOBO$Mql}WSHKm*Jn?FfM
zB1EI%vp>ps@5`nmO0p*H_3piU?w+UDpTEBT0I&{2MT8-@?RV^!?S*C-SfSngQ0@md
zoxpB{j_<|6AnQ;NWr*y)W5`$fIhPk1yeg(6&a322|Gj{@qC*#fioGB5jH^15JfOUG
zng=3sO-C9d3~Ii*UfJC;8K&P3(@(<~GAc%NT*nOpY`DH>GmI8Xl|!pzm0ingmUrrh
z#L3W*#Z46xIwo<8hWMMX<+WSXyJNX+duN|vu{cn@;aW#W#z27RJ6_Wm?7#s8{*;b8
z$T37$9M1_?88U-Vy~-D*Y7B}-LQKUFk3o+i$-R<}8O(AK#3V-yg<@$a8K_~uMBecC
zNP%R<@$8rFR^1NXSap{o%m10AG>pa!>5AX5+^Q8g9IA&Wdsd5J)Bh^NklMDx1Ap(8
z6;MuS2Sh~<4;(Ua(`kBE*bb;vDwe9WE-MYUC)Uyc7MFBonDJH(2F>)_LBoFTaH5(1
zp8nb8IsU2F=1Jl#{RGO|IA3dkEG??Aw4cJ#S^}voUq+ru=l3y7bq~nPk>!`xMd}Mi
z&oK6hJcc=XM#Y`I9IkBJvl=@(L}@W==7F2FCLv7xEucL_g2MJRXtvm~Ms2KJrxB
zB}f8no~%Si>dfrK32uL;*UOMpEN~VADIOs@^iKDpC|OEre95RKr?d!}p1`E~9jqpG
zA(=I~3)QSCT@tkx?IL0FsV}mO;R%*{5RD#$@r@ADccl~Lk0A+XS{9BfoO_CJG~pDY
m!bzN>c#IS$bKW3Bl7j#fWV1w~08U0Cs^`-$<0+j-@a#9sM*~>^
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/ObjectParameters.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/ObjectParameters.class
new file mode 100644
index 0000000000000000000000000000000000000000..8f1a1748036d4effe3988e0682ded1aabd4d7d84
GIT binary patch
literal 1024
zcmah`TW=CU6#iyeSXs7(7O0lCR;(AwgS<4pXiU7sNJ7=vhF2V5glU#tGfrFa$sgp4
ziNwSQe}F&AcxJeS&`sQA=Uisach32~KYxGy2JjSzSvW{}a08@~VW=L*7h)tLeWDfD
zVlZyJ>7I$6e#;df2`$to2B-6xfi+F#wE$UD=5)p;%moNcnCV=~z8;#?dVsu1d7Yt<
zgQ51ZflUv^040Y=2m4_g0S?GZ!vH2yemmV0Lgo=5(R_%fOY
zTT@n!WxpSaSFw^`;z;w5p|pI_7D`JRh_tW
zQeI{Kf#C^NB6NdvbIFoiFk@%^!x8u5pqii{-XVUB7#QF^3hehDL3Oi@k5uu~*p6cRB?xJ})S3SX^iK&Ac@h5F8f2-%&$tM5&S
zp0Yc^+IM>8z(`ZEDi%rU5-D89I;mNtX|@T;$aO^en^#l0jCU}Tvw}P1IrjE0c`57N
NBhRHd?o;HT_79EzmO}sl
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/StrategyStatus.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/MovementStrategy/StrategyStatus.class
new file mode 100644
index 0000000000000000000000000000000000000000..bd08a97b001002b1ca0df2cc7f61e74b1ab9ef0b
GIT binary patch
literal 1172
zcmah{?@!ZE6g_Wk*R2+r1wkf=Aj$^HGADeiBS!q8xMpIy>Q0(6Tmb$^KTj4Ri4_3Uu
z-D@?D+~|#SO`K@>4>R;)1apHZ$kufyKa0E9v?UnF|ixb
zgc_fC3|ZT&2b`sdRHaa?axm6vey2yvU0Sk}YkjYMz08TS!&X#tw>@cbsCQx)b9G}(4llsSVN4>Y56I=^$PuA&zkpfdi_E4OW*t4X3K$s;XEj7!X%V?dt#TGLASDhAl+JWo7JgQ?Cj
LSFlQ43NL;G;+pt#
literal 0
HcmV?d00001
--
2.25.1
From fba2fe80beb0e699a2bb1408cd08be10dbfa22a6 Mon Sep 17 00:00:00 2001
From: artur-kalimullin <144933634+artur-kalimullin@users.noreply.github.com>
Date: Tue, 21 May 2024 19:42:45 +0400
Subject: [PATCH 2/3] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?=
=?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?=
=?UTF-8?q?=D0=B0=20=E2=84=962?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Drawnings/DrawningAirCraft$1.class | Bin 0 -> 826 bytes
.../Drawnings/DrawningAirCraft.class | Bin 0 -> 6026 bytes
.../Drawnings/DrawningLongEngine.class | Bin 0 -> 1393 bytes
3 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningAirCraft$1.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningAirCraft.class
create mode 100644 out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningLongEngine.class
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningAirCraft$1.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningAirCraft$1.class
new file mode 100644
index 0000000000000000000000000000000000000000..edb7f7bdd883b4804316eee468ce1aea1b147d38
GIT binary patch
literal 826
zcma)4+iFum6kXF?P7+UTti8lqwbp18Ya0~wMG;EUU@%F+Xnp9@JThop}b(hTb@Jrc)4*^V{b
zivHWmgs4d)0xPv*NRN0p6cNKlseI6!1pNEO<18}BddT^>0H0yCX82f1)sHF@Z%3M{
z;fJ<(pJA)m8A}@sTKuGVKKU==w{m6<8d>V%qK`S`8InzLXc>zCQ<&?1-p6GuFnHSZ
zq~ak%qEv2pSYlW?;v-%Ox$0Nix-$$0bt%H$t})s;#e$D3PI2bdiGx>ttU8!_A^QXC
znCm`n#3j}ASb4a~ke_DU>mJcS88T0TP%3Gk#=`s5Kvnky!(3A;(HZ5~dpRC=yYAjdr_6e~IM_ZoAGSW*xW4774vWf;^!91?==&?i0L^
z?#zD1rR3gwB%jA{nP6%PR|ux3@ESoch98hb77JL$A_}B&hwKI(;33&Z^q*^F6Sz%!
u=~z`#1ZWeWC}0Vh*B(W*{=6t>DUK@RF4-hD>E4Q&O>C3R#XXUe&-?^-vcR_h
literal 0
HcmV?d00001
diff --git a/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningAirCraft.class b/out/production/PIbd-14_Calimullin_A.R._AirFighter_Hard/Drawnings/DrawningAirCraft.class
new file mode 100644
index 0000000000000000000000000000000000000000..60add023fee43ba9e7edb08519f53841a9e83a4f
GIT binary patch
literal 6026
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
Date: Tue, 21 May 2024 20:30:45 +0400
Subject: [PATCH 3/3] =?UTF-8?q?=D0=9F=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD?=
=?UTF-8?q?=D1=8F=D1=8F=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BA=D0=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
ProjectAirFighter/src/Drawnings/DrawningAirCraft.java | 1 -
1 file changed, 1 deletion(-)
diff --git a/ProjectAirFighter/src/Drawnings/DrawningAirCraft.java b/ProjectAirFighter/src/Drawnings/DrawningAirCraft.java
index 3979309..3bb5bcd 100644
--- a/ProjectAirFighter/src/Drawnings/DrawningAirCraft.java
+++ b/ProjectAirFighter/src/Drawnings/DrawningAirCraft.java
@@ -59,7 +59,6 @@ public class DrawningAirCraft {
Random random = new Random();
int[] countengine = {2, 4, 6};
int engineCount = countengine[random.nextInt(countengine.length)];
- System.out.print(engineCount);
drawEngine.setNumber(engineCount);
}
--
2.25.1