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/ProjectContainerShip/src/DrawingDecks.java b/ProjectContainerShip/src/DiffDecks/DeckType1.java similarity index 52% rename from ProjectContainerShip/src/DrawingDecks.java rename to ProjectContainerShip/src/DiffDecks/DeckType1.java index 2c307a1..489e6fb 100644 --- a/ProjectContainerShip/src/DrawingDecks.java +++ b/ProjectContainerShip/src/DiffDecks/DeckType1.java @@ -1,23 +1,29 @@ +package DiffDecks; + import java.awt.*; -public class DrawingDecks { - private DecksCount decksCount; +public class DeckType1 implements IDifferentDecks { + private DecksCount numberOfDecks; + @Override public void setNumberOfDecks(int numberofdeck) { - for (DecksCount numofenum : decksCount.values()) { + for (DecksCount numofenum : DecksCount.values()) { if (numofenum.getDeckcount() == numberofdeck) { - decksCount = numofenum; + numberOfDecks = numofenum; return; } } } + @Override public DecksCount getNumberOfDecks() { - return decksCount; + return numberOfDecks; } - public void DrawDecks(Graphics g, int x, int y, int width, int height, Color bodyColor) { + @Override + public void DrawDecks(Graphics2D g, int x, int y, int width, int height, Color bodyColor) { g.setColor(bodyColor); g.fillRect(x, y, width, height); g.setColor(Color.BLACK); g.drawRect(x, y, width, height); g.setColor(bodyColor); } + } diff --git a/ProjectContainerShip/src/DiffDecks/DeckType2.java b/ProjectContainerShip/src/DiffDecks/DeckType2.java new file mode 100644 index 0000000..f97e7a1 --- /dev/null +++ b/ProjectContainerShip/src/DiffDecks/DeckType2.java @@ -0,0 +1,37 @@ +package DiffDecks; + +import java.awt.*; + +public class DeckType2 implements IDifferentDecks { + private DecksCount numberOfDecks; + @Override + public void setNumberOfDecks(int numberofdeck) { + for (DecksCount numofenum : DecksCount.values()) { + if (numofenum.getDeckcount() == numberofdeck) { + numberOfDecks = numofenum; + return; + } + } + } + @Override + public DecksCount getNumberOfDecks() { + return numberOfDecks; + } + @Override + public void DrawDecks(Graphics2D g, int x, int y, int width, int height, Color bodyColor) { + g.setStroke(new BasicStroke(3.0F)); + g.setColor(bodyColor); + + int curveRadius = 15; + g.drawRoundRect(x, y, width, height, curveRadius, curveRadius); + + int numSupports = 6; + int spaceBetweenSupports = width / (numSupports + 1); + int supportWidth = 5; + for (int i = 1; i <= numSupports; i++) { + int supportX = x + i * spaceBetweenSupports; + g.fillRect(supportX - supportWidth / 2, y, supportWidth, height); + } + } + +} diff --git a/ProjectContainerShip/src/DiffDecks/DeckType3.java b/ProjectContainerShip/src/DiffDecks/DeckType3.java new file mode 100644 index 0000000..b00958c --- /dev/null +++ b/ProjectContainerShip/src/DiffDecks/DeckType3.java @@ -0,0 +1,28 @@ +package DiffDecks; + +import java.awt.*; + +public class DeckType3 implements IDifferentDecks{ + private DecksCount numberOfDecks; + @Override + public void setNumberOfDecks(int numberofdeck) { + for (DecksCount numofenum : DecksCount.values()) { + if (numofenum.getDeckcount() == numberofdeck) { + numberOfDecks = numofenum; + return; + } + } + } + @Override + public DecksCount getNumberOfDecks() { + return numberOfDecks; + } + @Override + public void DrawDecks(Graphics2D g, int x, int y, int width, int height, Color bodyColor) { + g.setColor(bodyColor); + g.fillRect(x, y, width, height); + g.setColor(Color.CYAN); + g.fillRect(x+ 10, y+5, width - 20, height-5); + g.setColor(bodyColor); + } +} diff --git a/ProjectContainerShip/src/DecksCount.java b/ProjectContainerShip/src/DiffDecks/DecksCount.java similarity index 92% rename from ProjectContainerShip/src/DecksCount.java rename to ProjectContainerShip/src/DiffDecks/DecksCount.java index 7dfc72b..3bd6a50 100644 --- a/ProjectContainerShip/src/DecksCount.java +++ b/ProjectContainerShip/src/DiffDecks/DecksCount.java @@ -1,3 +1,5 @@ +package DiffDecks; + public enum DecksCount { OneDeck(1), TwoDecks(2), diff --git a/ProjectContainerShip/src/DiffDecks/IDifferentDecks.java b/ProjectContainerShip/src/DiffDecks/IDifferentDecks.java new file mode 100644 index 0000000..52158e2 --- /dev/null +++ b/ProjectContainerShip/src/DiffDecks/IDifferentDecks.java @@ -0,0 +1,9 @@ +package DiffDecks; + +import java.awt.*; + +public interface IDifferentDecks { + void setNumberOfDecks(int numberofdeck); + DecksCount getNumberOfDecks(); + void DrawDecks(Graphics2D g, int x, int y, int width, int height, Color bodyColor); +} diff --git a/ProjectContainerShip/src/DrawingContainerShip.java b/ProjectContainerShip/src/DrawingContainerShip.java deleted file mode 100644 index c5287e2..0000000 --- a/ProjectContainerShip/src/DrawingContainerShip.java +++ /dev/null @@ -1,145 +0,0 @@ -import javax.swing.*; -import java.awt.*; - -public class DrawingContainerShip extends JPanel { - public EntityContainerShip EntityContainerShip; - public Integer picture_width; - private Integer picture_height; - private Integer _StartPosX; - private Integer _StartPosY; - private int drawingShipWidth = 150; - private int drawingShipHeight = 80; - public DrawingDecks drawingDecks = null; - public void Init(int speed, double weight, Color bodycolor, Color additionalcolor, boolean crane, boolean container) { - EntityContainerShip = new EntityContainerShip(); - EntityContainerShip.Init(speed, weight, bodycolor, additionalcolor, crane, container); - picture_width = null; - picture_height = null; - _StartPosX = null; - _StartPosY = null; - drawingDecks = new DrawingDecks(); - drawingDecks.setNumberOfDecks((int)(Math.random() * 4 + 0)); - } - public boolean SetPictureSize(int width, int height) { - if (width < drawingShipWidth || height < drawingShipHeight) return false; - picture_width = width; - picture_height = height; - if (_StartPosX != null || _StartPosY != null) { - if (_StartPosX + drawingShipWidth > picture_width) - { - _StartPosX = _StartPosX - (_StartPosX + drawingShipWidth - picture_width); - } - else if (_StartPosX < 0) _StartPosX = 0; - if (_StartPosY + drawingShipHeight > picture_height) - { - _StartPosY = _StartPosY - (_StartPosY + drawingShipHeight - picture_height); - } - else if (_StartPosY < 0) _StartPosY = 0; - } - return true; - } - public void SetPosition(int x, int y) { - if (!(picture_width != null && picture_height != null)) return; - if (x + drawingShipWidth > picture_width) - { - _StartPosX = x - (x + drawingShipWidth - picture_width); - } - else if (x < 0) _StartPosX = 0; - else _StartPosX = x; - if (y + drawingShipHeight > picture_height) - { - _StartPosY = y - (y + drawingShipHeight - picture_height); - } - else if (y < 0) _StartPosY = 0; - else _StartPosY = y; - } - public boolean MoveTransport(DirectionType direction) { - if (EntityContainerShip == null || _StartPosX == null || _StartPosY == null) return false; - switch (direction) { - case Left: - if (_StartPosX - EntityContainerShip.Step > 0) { - _StartPosX -= (int)EntityContainerShip.Step; - } - return true; - case Up: - if (_StartPosY - EntityContainerShip.Step > 0) - { - _StartPosY -= (int)EntityContainerShip.Step; - } - return true; - case Right: - if (_StartPosX + drawingShipWidth + (int)EntityContainerShip.Step < picture_width - EntityContainerShip.Step) - { - _StartPosX += (int)EntityContainerShip.Step; - } - return true; - case Down: - if (_StartPosY + drawingShipHeight + (int)EntityContainerShip.Step < picture_height - EntityContainerShip.Step) - { - _StartPosY += (int)EntityContainerShip.Step; - } - return true; - default: - return false; - } - } - public void DrawTransport(Graphics2D g) { - if (EntityContainerShip == null || _StartPosX == null || _StartPosY == null) return; - int y = _StartPosY; - if (EntityContainerShip.getCrane()) { - //контейнер - g.setColor(Color.BLACK); - g.drawRect(_StartPosX + 70, _StartPosY + 15, 40, 15); - g.setColor(EntityContainerShip.getAdditionalColor()); - g.fillRect(_StartPosX + 70, _StartPosY + 15, 40, 15); - g.setColor(Color.BLACK); - g.drawRect(_StartPosX + 90, _StartPosY + 20, 40, 15); - g.setColor(EntityContainerShip.getAdditionalColor()); - g.fillRect(_StartPosX + 90, _StartPosY + 20, 40, 15); - y += 30; - } - g.setColor(EntityContainerShip.getBodyColor()); - if (drawingDecks.getNumberOfDecks() != null) { - switch (drawingDecks.getNumberOfDecks()) { - case OneDeck: - drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityContainerShip.getBodyColor()); - y += 15; - break; - case TwoDecks: - drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityContainerShip.getBodyColor()); - drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityContainerShip.getBodyColor()); - y += 30; - break; - case ThreeDecks: - drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityContainerShip.getBodyColor()); - drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityContainerShip.getBodyColor()); - drawingDecks.DrawDecks(g, _StartPosX + 30, y + 30, 100, 15, EntityContainerShip.getBodyColor()); - y += 45; - break; - } - } - int[] arrayX = {_StartPosX, _StartPosX+150, _StartPosX+150, _StartPosX+120, _StartPosX+120, _StartPosX+30, _StartPosX+30, _StartPosX}; - int[] arrayY = {y, y, y, y + 40, y + 40, y + 40, y + 40, y}; - Polygon poly = new Polygon(arrayX, arrayY, 8); - g.fillPolygon(poly); - g.setColor(EntityContainerShip.getAdditionalColor()); - if (EntityContainerShip.getContainer()) { - int craneX = _StartPosX + drawingShipWidth - 40; - int craneY = _StartPosY + drawingShipHeight - 90; - // основа крана - g.setColor(Color.BLACK); - g.drawLine(craneX + 10, craneY + 10, craneX + 10, craneY); - g.drawLine(craneX + 10, craneY, craneX + 50, craneY); - g.drawLine(craneX + 10, craneY, craneX + 50, craneY + 5); - g.drawLine(craneX + 50, craneY, craneX + 50, craneY + 30); - - // хваталка крана - g.drawLine(craneX + 40, craneY + 30, craneX + 60, craneY + 30); - g.drawLine(craneX + 40, craneY + 30, craneX + 40, craneY + 35); - g.drawLine(craneX + 60, craneY + 30, craneX + 60, craneY + 35); - y += 30; - } - - drawingShipHeight = y + 50 - _StartPosY; - } -} diff --git a/ProjectContainerShip/src/CanvasContainerShip.java b/ProjectContainerShip/src/DrawingShip/CanvasContainerShip.java similarity index 67% rename from ProjectContainerShip/src/CanvasContainerShip.java rename to ProjectContainerShip/src/DrawingShip/CanvasContainerShip.java index a0c8384..9d3d1a4 100644 --- a/ProjectContainerShip/src/CanvasContainerShip.java +++ b/ProjectContainerShip/src/DrawingShip/CanvasContainerShip.java @@ -1,16 +1,18 @@ +package DrawingShip; + import javax.swing.*; import java.awt.*; public class CanvasContainerShip extends JComponent { - public DrawingContainerShip _drawingContainerShip; + public DrawingShip _drawingShip; public CanvasContainerShip(){} public void paintComponent(Graphics g) { - if (_drawingContainerShip == null) { + if (_drawingShip == null) { return; } super.paintComponents(g); Graphics2D g2d = (Graphics2D) g; - _drawingContainerShip.DrawTransport(g2d); + _drawingShip.DrawTransport(g2d); super.repaint(); } } \ No newline at end of file diff --git a/ProjectContainerShip/src/DirectionType.java b/ProjectContainerShip/src/DrawingShip/DirectionType.java similarity index 66% rename from ProjectContainerShip/src/DirectionType.java rename to ProjectContainerShip/src/DrawingShip/DirectionType.java index 35657f0..055aabb 100644 --- a/ProjectContainerShip/src/DirectionType.java +++ b/ProjectContainerShip/src/DrawingShip/DirectionType.java @@ -1,4 +1,7 @@ +package DrawingShip; + public enum DirectionType { + Unknow, Up, Down, Left, diff --git a/ProjectContainerShip/src/DrawingShip/DrawingContainerShip.java b/ProjectContainerShip/src/DrawingShip/DrawingContainerShip.java new file mode 100644 index 0000000..ec2ce66 --- /dev/null +++ b/ProjectContainerShip/src/DrawingShip/DrawingContainerShip.java @@ -0,0 +1,83 @@ +package DrawingShip; +import DiffDecks.DecksCount; +import Entities.EntityContainerShip; + +import java.awt.*; + +public class DrawingContainerShip extends DrawingShip { + public DrawingContainerShip(int speed, double weight, Color bodycolor, Color additionalcolor, boolean crane, boolean container) { + EntityShip = new EntityContainerShip(speed, weight, bodycolor, additionalcolor, crane, container); + SetAmountandTypeDecks(); + } + + @Override + public void DrawTransport(Graphics2D g) { + if (EntityShip == null || !(EntityShip instanceof EntityContainerShip containerShip) || _StartPosX == null || _StartPosY == null) + return; + + int originalStartPosY = _StartPosY; + int containerOffsetY = 0; + + if (containerShip.Crane) { + int craneX = _StartPosX + drawingShipWidth - 40; + int craneY = _StartPosY + drawingShipHeight - 90; + + //Кран + g.setColor(Color.BLACK); + g.drawLine(craneX + 10, craneY + 40, craneX + 10, craneY); + g.drawLine(craneX + 10, craneY, craneX + 50, craneY); + g.drawLine(craneX + 10, craneY, craneX + 50, craneY + 5); + g.drawLine(craneX + 50, craneY, craneX + 50, craneY + 30); + + //Хваталка крана + g.drawLine(craneX + 40, craneY + 30, craneX + 60, craneY + 30); + g.drawLine(craneX + 40, craneY + 30, craneX + 40, craneY + 35); + g.drawLine(craneX + 60, craneY + 30, craneX + 60, craneY + 35); + containerOffsetY += 30; + } + + + _StartPosY += containerOffsetY; + super.DrawTransport(g); + _StartPosY = originalStartPosY; + + + int count_decks = 0; + if (drawingDecks.getNumberOfDecks() != null) { + switch (drawingDecks.getNumberOfDecks()) { + case OneDeck: + count_decks = 1; + break; + case TwoDecks: + count_decks = 2; + break; + case ThreeDecks: + count_decks = 3; + break; + } + } + + int containerY; + if (count_decks == 0) { + containerY = _StartPosY + 15; + } else { + containerY = _StartPosY + 15 + containerOffsetY; + } + + if (containerShip.Container) { + //Контейнер + g.setColor(Color.BLACK); + g.drawRect(_StartPosX + 40, containerY, 40, 15); + g.setColor(containerShip.getAdditionalColor()); + g.fillRect(_StartPosX + 40, containerY, 40, 15); + g.setColor(Color.BLACK); + g.drawRect(_StartPosX + 60, containerY + 5, 40, 15); + g.setColor(containerShip.getAdditionalColor()); + g.fillRect(_StartPosX + 60, containerY + 5, 40, 15); + } + + if (containerShip.Crane) { + drawingShipHeight += 30; + } + } +} diff --git a/ProjectContainerShip/src/DrawingShip/DrawingShip.java b/ProjectContainerShip/src/DrawingShip/DrawingShip.java new file mode 100644 index 0000000..f41ddfc --- /dev/null +++ b/ProjectContainerShip/src/DrawingShip/DrawingShip.java @@ -0,0 +1,147 @@ +package DrawingShip; +import DiffDecks.DeckType2; +import DiffDecks.DeckType3; +import DiffDecks.IDifferentDecks; +import Entities.EntityShip; + +import DiffDecks.DeckType1; + +import javax.swing.*; +import java.awt.*; + +public class DrawingShip extends JPanel { + public Entities.EntityShip EntityShip; + public IDifferentDecks drawingDecks; + private Integer picture_width; + private Integer picture_height; + public Integer _StartPosX; + public Integer _StartPosY; + protected int drawingShipWidth = 150; + protected int drawingShipHeight = 50; + public Integer GetPosX() {return _StartPosX;} + public Integer GetPosY() {return _StartPosY;} + public Integer GetWidth() {return drawingShipWidth;} + public Integer GetHeight() {return drawingShipHeight;} + protected DrawingShip() { + picture_width = null; + picture_height = null; + _StartPosX = null; + _StartPosY = null; + } + protected void SetAmountandTypeDecks() { + int numberOfDecks = (int)(Math.random() * 4 + 0); + switch ((int)(Math.random() * 3 + 1)) { + case 1: + drawingDecks = new DeckType1(); + break; + case 2: + drawingDecks = new DeckType2(); + break; + case 3: + drawingDecks = new DeckType3(); + break; + default: + numberOfDecks = 0; + break; + } + drawingDecks.setNumberOfDecks(numberOfDecks); + } + public DrawingShip(int speed, double weight, Color bodycolor) { + super(); + EntityShip = new EntityShip(speed, weight, bodycolor); + SetAmountandTypeDecks(); + } + public boolean SetPictureSize(int width, int height) { + if (width < drawingShipWidth || height < drawingShipHeight) return false; + picture_width = width; + picture_height = height; + if (_StartPosX != null || _StartPosY != null) { + if (_StartPosX + drawingShipWidth > picture_width) + { + _StartPosX = _StartPosX - (_StartPosX + drawingShipWidth - picture_width); + } + else if (_StartPosX < 0) _StartPosX = 0; + if (_StartPosY + drawingShipHeight > picture_height) + { + _StartPosY = _StartPosY - (_StartPosY + drawingShipHeight - picture_height); + } + else if (_StartPosY < 0) _StartPosY = 0; + } + return true; + } + public void SetPosition(int x, int y) { + if (!(picture_width != null && picture_height != null)) return; + if (x + drawingShipWidth > picture_width) + { + _StartPosX = x - (x + drawingShipWidth - picture_width); + } + else if (x < 0) _StartPosX = 0; + else _StartPosX = x; + if (y + drawingShipHeight > picture_height) + { + _StartPosY = y - (y + drawingShipHeight - picture_height); + } + else if (y < 0) _StartPosY = 0; + else _StartPosY = y; + } + public boolean MoveTransport(DirectionType direction) { + if (EntityShip == null || _StartPosX == null || _StartPosY == null) return false; + switch (direction) { + case DirectionType.Left: + if (_StartPosX - EntityShip.Step > 0) { + _StartPosX -= (int)EntityShip.Step; + } + return true; + case DirectionType.Up: + if (_StartPosY - EntityShip.Step > 0) + { + _StartPosY -= (int)EntityShip.Step; + } + return true; + case DirectionType.Right: + if (_StartPosX + drawingShipWidth + (int)EntityShip.Step < picture_width - EntityShip.Step) + { + _StartPosX += (int)EntityShip.Step; + } + return true; + case DirectionType.Down: + if (_StartPosY + drawingShipHeight + (int)EntityShip.Step < picture_height - EntityShip.Step) + { + _StartPosY += (int)EntityShip.Step; + } + return true; + default: + return false; + } + } + public void DrawTransport(Graphics2D g) { + if (EntityShip == null || _StartPosX == null || _StartPosY == null) return; + int y = _StartPosY; + g.setColor(EntityShip.getBodyColor()); + if (drawingDecks.getNumberOfDecks() != null) { + y += 30; + switch (drawingDecks.getNumberOfDecks()) { + case OneDeck: + drawingDecks.DrawDecks(g, _StartPosX + 30, y, 80, 15, EntityShip.getBodyColor()); + y += 15; + break; + case TwoDecks: + drawingDecks.DrawDecks(g, _StartPosX + 30, y, 80, 15, EntityShip.getBodyColor()); + drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 80, 15, EntityShip.getBodyColor()); + y += 30; + break; + case ThreeDecks: + drawingDecks.DrawDecks(g, _StartPosX + 30, y, 80, 15, EntityShip.getBodyColor()); + drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 80, 15, EntityShip.getBodyColor()); + drawingDecks.DrawDecks(g, _StartPosX + 30, y + 30, 80, 15, EntityShip.getBodyColor()); + y += 45; + break; + } + } + int[] arrayX = {_StartPosX, _StartPosX+150, _StartPosX+150, _StartPosX+120, _StartPosX+120, _StartPosX+30, _StartPosX+30, _StartPosX}; + int[] arrayY = {y, y, y, y + 50, y + 50, y + 50, y + 50, y}; + Polygon poly = new Polygon(arrayX, arrayY, 8); + g.fillPolygon(poly); + drawingShipHeight = y + 50 - _StartPosY; + } +} \ No newline at end of file diff --git a/ProjectContainerShip/src/Entities/EntityContainerShip.java b/ProjectContainerShip/src/Entities/EntityContainerShip.java new file mode 100644 index 0000000..a6024ed --- /dev/null +++ b/ProjectContainerShip/src/Entities/EntityContainerShip.java @@ -0,0 +1,18 @@ +package Entities; + +import java.awt.*; + +public class EntityContainerShip extends EntityShip{ + private Color AdditionalColor; + public Color getAdditionalColor() {return AdditionalColor;} + public boolean Crane; + public boolean Container; + + public EntityContainerShip(int speed, double weight, Color bodycolor, Color additionalcolor, boolean crane, boolean container) + { + super(speed,weight,bodycolor); + AdditionalColor = additionalcolor; + Crane = crane; + Container = container; + } +} diff --git a/ProjectContainerShip/src/Entities/EntityShip.java b/ProjectContainerShip/src/Entities/EntityShip.java new file mode 100644 index 0000000..ba40143 --- /dev/null +++ b/ProjectContainerShip/src/Entities/EntityShip.java @@ -0,0 +1,18 @@ +package Entities; + +import java.awt.*; + +public class EntityShip { + private int Speed; + private double Weight; + private Color BodyColor; + public Color getBodyColor() {return BodyColor;} + public double Step; + public EntityShip(int speed, double weight, Color bodycolor) + { + Speed = speed; + Weight = weight; + BodyColor = bodycolor; + Step = Speed * 100 / Weight; + } +} diff --git a/ProjectContainerShip/src/EntityContainerShip.java b/ProjectContainerShip/src/EntityContainerShip.java deleted file mode 100644 index bc166a6..0000000 --- a/ProjectContainerShip/src/EntityContainerShip.java +++ /dev/null @@ -1,26 +0,0 @@ -import java.awt.*; - -public class EntityContainerShip { - private int Speed; - private double Weight; - private Color BodyColor; - public Color getBodyColor() {return BodyColor;} - private Color AdditionalColor; - public Color getAdditionalColor() {return AdditionalColor;} - private boolean Crane; - public boolean getCrane() {return Crane;} - private boolean Container; - public boolean getContainer() {return Container;} - public double Step; - - public void Init(int speed, double weight, Color bodycolor, Color additionalcolor, boolean crane, boolean container) - { - Speed = speed; - Weight = weight; - BodyColor = bodycolor; - AdditionalColor = additionalcolor; - Crane = crane; - Container = container; - Step = Speed * 100 / Weight; - } -} diff --git a/ProjectContainerShip/src/FormContainerShip.java b/ProjectContainerShip/src/FormContainerShip.java index a295dd3..b3e4908 100644 --- a/ProjectContainerShip/src/FormContainerShip.java +++ b/ProjectContainerShip/src/FormContainerShip.java @@ -1,3 +1,9 @@ +import DrawingShip.CanvasContainerShip; +import DrawingShip.DirectionType; +import DrawingShip.DrawingShip; +import DrawingShip.DrawingContainerShip; +import MovementStrategy.*; + import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; @@ -6,77 +12,146 @@ import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.util.Random; -public class FormContainerShip extends JFrame{ +public class FormContainerShip extends JFrame { private String title; private Dimension dimension; private int Width, Height; - private CanvasContainerShip canvasContainerShip = new CanvasContainerShip(); - private JButton CreateButton = new JButton("Создать");; + public CanvasContainerShip canvasContainerShip = new CanvasContainerShip(); + private JButton CreateButton = new JButton("Создать контейнеровоз");; + private JButton CreateShipButton = new JButton("Создать корабль"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton();; private JButton LeftButton = new JButton();; private JButton RightButton = new JButton(); + private AbstractStrategy _strategy; + private JComboBox ComboBoxStrategy = new JComboBox(new String[]{"К центру", "К краю"}); + private JButton ButtonStrategy = new JButton("Шаг"); public FormContainerShip(String title, Dimension dimension) { this.title = title; this.dimension = dimension; } + private void CreateObject(String typeOfClass) { + int StartPositionX = (int)(Math.random() * 90 + 10); + int StartPositionY = (int)(Math.random() * 90 + 10); + int speed = (int)(Math.random() * 300 + 100); + double weight = (double)(Math.random() * 3000 + 1000); + Color bodyColor = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0)); + switch (typeOfClass) { + case "DrawingShip": + canvasContainerShip._drawingShip = new DrawingShip(speed, weight, bodyColor); + canvasContainerShip._drawingShip.SetPictureSize(Width, Height); + canvasContainerShip._drawingShip.SetPosition(StartPositionX, StartPositionY); + canvasContainerShip.repaint(); + break; + case "DrawingContainerShip": + Color additionalColor = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0));; + boolean crane = new Random().nextBoolean(); + boolean container = new Random().nextBoolean();; + canvasContainerShip._drawingShip = new DrawingContainerShip(speed, weight, bodyColor, additionalColor, crane, container); + canvasContainerShip._drawingShip.SetPictureSize(Width, Height); + canvasContainerShip._drawingShip.SetPosition(StartPositionX, StartPositionY); + canvasContainerShip.repaint(); + break; + default: return; + } + _strategy = null; + ComboBoxStrategy.setEnabled(true); + } public void Init() { setTitle(title); setMinimumSize(dimension); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - Width = getWidth() - 15; - Height = getHeight(); + + Width = getWidth() - 10; + Height = getHeight() - 34; + _strategy = null; CreateButton.setName("CREATE"); - Icon iconUp = new ImageIcon("resources\\up.jpg"); + CreateShipButton.setName("CREATESHIPBUTTON"); + Icon iconUp = new ImageIcon("src\\images\\up.jpg"); UpButton.setIcon(iconUp); - UpButton.setName("Up"); - DownButton.setName("Down"); - Icon iconDown = new ImageIcon("resources\\down.jpg"); + UpButton.setName("UP"); + DownButton.setName("DOWN"); + Icon iconDown = new ImageIcon("src\\images\\down.jpg"); DownButton.setIcon(iconDown); - LeftButton.setName("Left"); - Icon iconLeft = new ImageIcon("resources\\left.jpg"); + LeftButton.setName("LEFT"); + Icon iconLeft = new ImageIcon("src\\images\\left.jpg"); LeftButton.setIcon(iconLeft); - RightButton.setName("Right"); - Icon iconRight = new ImageIcon("resources\\right.jpg"); + RightButton.setName("RIGHT"); + Icon iconRight = new ImageIcon("src\\images\\right.jpg"); RightButton.setIcon(iconRight); CreateButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - int StartPositionX = (int)(Math.random() * 90 + 10); - int StartPositionY = (int)(Math.random() * 90 + 10); - int speed = (int)(Math.random() * 300 + 100); - double weight = (double)(Math.random() * 3000 + 1000); - Color bodyColor = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0)); - Color additionalColor = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0));; - boolean sheepPipes = new Random().nextBoolean(); - boolean fuelTank = new Random().nextBoolean();; - canvasContainerShip._drawingContainerShip = new DrawingContainerShip(); - canvasContainerShip._drawingContainerShip.Init(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - canvasContainerShip._drawingContainerShip.SetPictureSize(Width, Height); - canvasContainerShip._drawingContainerShip.SetPosition( StartPositionX, StartPositionY); - canvasContainerShip.repaint(); + CreateObject("DrawingContainerShip"); + } + }); + + CreateShipButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingShip"); + } + }); + + ButtonStrategy.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (canvasContainerShip._drawingShip == null) return; + if (ComboBoxStrategy.isEnabled()) + { + int index = ComboBoxStrategy.getSelectedIndex(); + switch(index) + { + case 0: + _strategy = new MoveToCenter(); + break; + case 1: + _strategy = new MoveToBorder(); + break; + default: + _strategy = null; + break; + }; + if (_strategy == null) + { + return; + } + _strategy.SetData(new MoveableShip(canvasContainerShip._drawingShip), Width, Height); + } + if (_strategy == null) + { + return; + } + ComboBoxStrategy.setEnabled(false); + _strategy.MakeStep(); + if (_strategy.GetStatus() == StrategyStatus.Finish) + { + ComboBoxStrategy.setEnabled(true); + _strategy = null; + } } }); ActionListener actionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent event) { - if (canvasContainerShip._drawingContainerShip == null) return; + if (canvasContainerShip._drawingShip == null) return; boolean result = false; switch ((((JButton)(event.getSource())).getName())) { - case "Up": - result = canvasContainerShip._drawingContainerShip.MoveTransport(DirectionType.Up); + case "UP": + System.out.println("Кнопка UP нажата"); + result = canvasContainerShip._drawingShip.MoveTransport(DirectionType.Up); break; - case "Down": - result = canvasContainerShip._drawingContainerShip.MoveTransport(DirectionType.Down); + case "DOWN": + result = canvasContainerShip._drawingShip.MoveTransport(DirectionType.Down); break; - case "Left": - result = canvasContainerShip._drawingContainerShip.MoveTransport(DirectionType.Left); + case "LEFT": + result = canvasContainerShip._drawingShip.MoveTransport(DirectionType.Left); break; - case "Right": - result = canvasContainerShip._drawingContainerShip.MoveTransport(DirectionType.Right); + case "RIGHT": + result = canvasContainerShip._drawingShip.MoveTransport(DirectionType.Right); break; } if (result) { @@ -92,31 +167,40 @@ public class FormContainerShip extends JFrame{ setSize(dimension.width,dimension.height); setLayout(null); canvasContainerShip.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 90, 100, 40); + CreateButton.setBounds(10, getHeight() - 90, 140, 40); + CreateShipButton.setBounds(160, getHeight() - 90, 140, 40); UpButton.setBounds(getWidth() - 140, getHeight() - 160, 50, 50); DownButton.setBounds(getWidth() - 140, getHeight() - 100, 50, 50); RightButton.setBounds(getWidth() - 80, getHeight() - 100, 50, 50); LeftButton.setBounds(getWidth() - 200, getHeight() - 100, 50, 50); + ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 35); + ButtonStrategy.setBounds(getWidth() - 130, 55, 100, 25); add(CreateButton); + add(CreateShipButton); add(UpButton); add(DownButton); add(RightButton); add(LeftButton); + add(ComboBoxStrategy); + add(ButtonStrategy); add(canvasContainerShip); setVisible(true); //обработка события изменения размеров окна addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { - Width = getWidth() - 15; - Height = getHeight() - 35; - if (canvasContainerShip._drawingContainerShip != null) - canvasContainerShip._drawingContainerShip.SetPictureSize(Width, Height); + Width = getWidth() - 10; + Height = getHeight() - 34; + if (canvasContainerShip._drawingShip != null) + canvasContainerShip._drawingShip.SetPictureSize(Width, Height); canvasContainerShip.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 90, 100, 40); + CreateButton.setBounds(10, getHeight() - 90, 140, 40); + CreateShipButton.setBounds(160, getHeight() - 90, 140, 40); UpButton.setBounds(getWidth() - 140, getHeight() - 160, 50, 50); DownButton.setBounds(getWidth() - 140, getHeight() - 100, 50, 50); RightButton.setBounds(getWidth() - 80, getHeight() - 100, 50, 50); LeftButton.setBounds(getWidth() - 200, getHeight() - 100, 50, 50); + ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 35); + ButtonStrategy.setBounds(getWidth() - 130, 55, 100, 25); } }); } diff --git a/ProjectContainerShip/src/MovementStrategy/AbstractStrategy.java b/ProjectContainerShip/src/MovementStrategy/AbstractStrategy.java new file mode 100644 index 0000000..c491f92 --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/AbstractStrategy.java @@ -0,0 +1,56 @@ +package MovementStrategy; + +public abstract class AbstractStrategy { + private IMoveableObjects _moveableObject; + private StrategyStatus _state = StrategyStatus.NotInit; + public int FieldWidth; + public int FieldHeight; + public StrategyStatus GetStatus() {return _state;} + public void SetData(IMoveableObjects moveableObjects, int width, int height) + { + if (moveableObjects == null) + { + _state = StrategyStatus.NotInit; + return; + } + _state = StrategyStatus.InProgress; + _moveableObject = moveableObjects; + FieldWidth = width; + FieldHeight = height; + } + public void MakeStep() + { + if (_state != StrategyStatus.InProgress) return; + if (IsTargetDestinaion()) + { + _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 Integer GetStep() + { + if (_state != StrategyStatus.InProgress) + { + return null; + } + return _moveableObject.GetStep(); + } + protected abstract void MoveToTarget(); + protected abstract boolean IsTargetDestinaion(); + private boolean MoveTo(MovementDirection movementDirection) + { + if (_state != StrategyStatus.InProgress) + { + return false; + } + boolean stateTryMoveObject = _moveableObject.TryMoveObject(movementDirection); + if (stateTryMoveObject) return stateTryMoveObject; + return false; + } +} diff --git a/ProjectContainerShip/src/MovementStrategy/IMoveableObjects.java b/ProjectContainerShip/src/MovementStrategy/IMoveableObjects.java new file mode 100644 index 0000000..4ecb751 --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/IMoveableObjects.java @@ -0,0 +1,7 @@ +package MovementStrategy; + +public interface IMoveableObjects { + ObjectParameters GetObjectPosition(); + int GetStep(); + boolean TryMoveObject(MovementDirection direction); +} diff --git a/ProjectContainerShip/src/MovementStrategy/MoveToBorder.java b/ProjectContainerShip/src/MovementStrategy/MoveToBorder.java new file mode 100644 index 0000000..c85b39f --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/MoveToBorder.java @@ -0,0 +1,27 @@ +package MovementStrategy; + +public class MoveToBorder extends AbstractStrategy{ + @Override + protected boolean IsTargetDestinaion() { + ObjectParameters objParams = GetObjectParameters(); + if (objParams == null) + { + return false; + } + return objParams.RightBorder + GetStep() >= FieldWidth-GetStep() && + objParams.DownBorder + GetStep() >= FieldHeight-GetStep(); + } + @Override + protected void MoveToTarget() { + ObjectParameters objParams = GetObjectParameters(); + if (objParams == null) + { + return; + } + //реализация в правый нижний угол + int x = objParams.RightBorder; + if (x + GetStep() < FieldWidth) MoveRight(); + int y = objParams.DownBorder; + if (y + GetStep() < FieldHeight) MoveDown(); + } +} diff --git a/ProjectContainerShip/src/MovementStrategy/MoveToCenter.java b/ProjectContainerShip/src/MovementStrategy/MoveToCenter.java new file mode 100644 index 0000000..2669284 --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/MoveToCenter.java @@ -0,0 +1,48 @@ +package MovementStrategy; + +public class MoveToCenter extends AbstractStrategy{ + @Override + protected boolean IsTargetDestinaion() { + ObjectParameters 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; + } + @Override + protected void MoveToTarget() { + ObjectParameters objParams = GetObjectParameters(); + if (objParams == null) + { + return; + } + int diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2; + if (Math.abs(diffX) > GetStep()) + { + if (diffX > 0) + { + MoveLeft(); + } + else + { + MoveRight(); + } + } + int diffY = objParams.ObjectMiddleVertical - FieldHeight / 2; + if (Math.abs(diffY) > GetStep()) + { + if (diffY > 0) + { + MoveUp(); + } + else + { + MoveDown(); + } + } + } +} diff --git a/ProjectContainerShip/src/MovementStrategy/MoveableShip.java b/ProjectContainerShip/src/MovementStrategy/MoveableShip.java new file mode 100644 index 0000000..9c9e90c --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/MoveableShip.java @@ -0,0 +1,45 @@ +package MovementStrategy; + +import DrawingShip.CanvasContainerShip; +import DrawingShip.DirectionType; +import DrawingShip.DrawingShip; + +public class MoveableShip implements IMoveableObjects{ + private CanvasContainerShip canvas = new CanvasContainerShip(); + public MoveableShip(DrawingShip drawningship) + { + canvas._drawingShip = drawningship; + } + @Override + public ObjectParameters GetObjectPosition() { + if (canvas._drawingShip == null || canvas._drawingShip.EntityShip == null || + canvas._drawingShip.GetPosX() == null || canvas._drawingShip.GetPosY() == null) + { + return null; + } + return new ObjectParameters(canvas._drawingShip.GetPosX(), canvas._drawingShip.GetPosY(), + canvas._drawingShip.GetWidth(), canvas._drawingShip.GetHeight()); + } + @Override + public int GetStep() { + return (int)(canvas._drawingShip.EntityShip.Step); + } + @Override + public boolean TryMoveObject(MovementDirection direction) { + if (canvas._drawingShip == null || canvas._drawingShip.EntityShip == null) + { + return false; + } + return canvas._drawingShip.MoveTransport(GetDirectionType(direction)); + } + private static DirectionType GetDirectionType(MovementDirection direction) + { + switch (direction) { + case MovementDirection.Left: return DirectionType.Left; + case MovementDirection.Right: return DirectionType.Right; + case MovementDirection.Up: return DirectionType.Up; + case MovementDirection.Down: return DirectionType.Down; + default: return DirectionType.Unknow; + } + } +} diff --git a/ProjectContainerShip/src/MovementStrategy/MovementDirection.java b/ProjectContainerShip/src/MovementStrategy/MovementDirection.java new file mode 100644 index 0000000..c52f124 --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/MovementDirection.java @@ -0,0 +1,8 @@ +package MovementStrategy; + +public enum MovementDirection { + Up, + Down, + Left, + Right +} diff --git a/ProjectContainerShip/src/MovementStrategy/ObjectParameters.java b/ProjectContainerShip/src/MovementStrategy/ObjectParameters.java new file mode 100644 index 0000000..b68fe75 --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/ObjectParameters.java @@ -0,0 +1,27 @@ +package MovementStrategy; + +public class ObjectParameters { + private int _x; + private int _y; + private int _width; + private int _height; + public int LeftBorder = _x; + public int TopBorder = _y; + public int RightBorder = _x + _width; + public int DownBorder = _y + _height; + public int ObjectMiddleHorizontal = _x + _width / 2; + public int ObjectMiddleVertical = _y + _height / 2; + public ObjectParameters(int x, int y, int width, int height) + { + _x = x; + _y = y; + _width = width; + _height = height; + LeftBorder = _x; + TopBorder = _y; + RightBorder = _x + _width; + DownBorder = _y + _height; + ObjectMiddleHorizontal = _x + _width / 2; + ObjectMiddleVertical = _y + _height / 2; + } +} diff --git a/ProjectContainerShip/src/MovementStrategy/StrategyStatus.java b/ProjectContainerShip/src/MovementStrategy/StrategyStatus.java new file mode 100644 index 0000000..4f087ea --- /dev/null +++ b/ProjectContainerShip/src/MovementStrategy/StrategyStatus.java @@ -0,0 +1,7 @@ +package MovementStrategy; + +public enum StrategyStatus { + NotInit, + InProgress, + Finish +} diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType1.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType1.class new file mode 100644 index 0000000..e579fc6 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType1.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType2.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType2.class new file mode 100644 index 0000000..cce6d0f Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType2.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType3.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType3.class new file mode 100644 index 0000000..8b30b57 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DeckType3.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DecksCount.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DecksCount.class new file mode 100644 index 0000000..c73f527 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/DecksCount.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/IDifferentDecks.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/IDifferentDecks.class new file mode 100644 index 0000000..01c59d1 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DiffDecks/IDifferentDecks.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/CanvasContainerShip.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/CanvasContainerShip.class new file mode 100644 index 0000000..ab7298f Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/CanvasContainerShip.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DirectionType.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DirectionType.class new file mode 100644 index 0000000..ff94221 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DirectionType.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingContainerShip$1.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingContainerShip$1.class new file mode 100644 index 0000000..7490968 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingContainerShip$1.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingContainerShip.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingContainerShip.class new file mode 100644 index 0000000..596c3c4 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingContainerShip.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingShip$1.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingShip$1.class new file mode 100644 index 0000000..46cd0f3 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingShip$1.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingShip.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingShip.class new file mode 100644 index 0000000..4650c05 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/DrawingShip/DrawingShip.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Entities/EntityContainerShip.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Entities/EntityContainerShip.class new file mode 100644 index 0000000..c7881f0 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Entities/EntityContainerShip.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Entities/EntityShip.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Entities/EntityShip.class new file mode 100644 index 0000000..c4d5c73 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Entities/EntityShip.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$1.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$1.class new file mode 100644 index 0000000..e28e2ff Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$1.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$2.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$2.class new file mode 100644 index 0000000..951a171 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$2.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$3.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$3.class new file mode 100644 index 0000000..a826fb5 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$3.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$4.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$4.class new file mode 100644 index 0000000..e3197b9 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$4.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$5.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$5.class new file mode 100644 index 0000000..7f2601b Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip$5.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip.class new file mode 100644 index 0000000..afb73a4 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/FormContainerShip.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Main.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Main.class new file mode 100644 index 0000000..8e03774 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/Main.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/AbstractStrategy.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/AbstractStrategy.class new file mode 100644 index 0000000..6b7aa37 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/AbstractStrategy.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/IMoveableObjects.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/IMoveableObjects.class new file mode 100644 index 0000000..a8f18a0 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/IMoveableObjects.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveToBorder.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveToBorder.class new file mode 100644 index 0000000..1e1fbd5 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveToBorder.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveToCenter.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveToCenter.class new file mode 100644 index 0000000..6c2116e Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveToCenter.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveableShip$1.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveableShip$1.class new file mode 100644 index 0000000..c482656 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveableShip$1.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveableShip.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveableShip.class new file mode 100644 index 0000000..e979127 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MoveableShip.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MovementDirection.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MovementDirection.class new file mode 100644 index 0000000..3e0b919 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/MovementDirection.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/ObjectParameters.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/ObjectParameters.class new file mode 100644 index 0000000..5030faa Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/ObjectParameters.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/StrategyStatus.class b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/StrategyStatus.class new file mode 100644 index 0000000..3275804 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/MovementStrategy/StrategyStatus.class differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/down.jpg b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/down.jpg new file mode 100644 index 0000000..fc21b6a Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/down.jpg differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/left.jpg b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/left.jpg new file mode 100644 index 0000000..453db80 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/left.jpg differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/right.jpg b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/right.jpg new file mode 100644 index 0000000..1f9989a Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/right.jpg differ diff --git a/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/up.jpg b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/up.jpg new file mode 100644 index 0000000..bfdaef6 Binary files /dev/null and b/out/production/PIbd-11_Kudrinsky_O.S._ContainerShip_Hard/up.jpg differ