From fb2d9e01db0ac8bf1d47fa4b181c4555cfddc07d Mon Sep 17 00:00:00 2001 From: IlyasValiulov <148232695+IlyasValiulov@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:00:25 +0400 Subject: [PATCH 1/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=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=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarmlyShip/src/CanvasWarmlyShip.java | 16 --- WarmlyShip/src/DirectionType.java | 6 -- WarmlyShip/src/DrawingDecks.java | 23 ----- WarmlyShip/src/DrawingWarmlyShip.java | 127 ----------------------- WarmlyShip/src/EntityWarmlyShip.java | 24 ----- WarmlyShip/src/FormWarmlyShip.java | 140 ++++++++++++++++++++------ WarmlyShip/src/Main.java | 3 +- WarmlyShip/src/NumberOfDecks.java | 10 -- 8 files changed, 113 insertions(+), 236 deletions(-) delete mode 100644 WarmlyShip/src/CanvasWarmlyShip.java delete mode 100644 WarmlyShip/src/DirectionType.java delete mode 100644 WarmlyShip/src/DrawingDecks.java delete mode 100644 WarmlyShip/src/DrawingWarmlyShip.java delete mode 100644 WarmlyShip/src/EntityWarmlyShip.java delete mode 100644 WarmlyShip/src/NumberOfDecks.java diff --git a/WarmlyShip/src/CanvasWarmlyShip.java b/WarmlyShip/src/CanvasWarmlyShip.java deleted file mode 100644 index 2e1b6a2..0000000 --- a/WarmlyShip/src/CanvasWarmlyShip.java +++ /dev/null @@ -1,16 +0,0 @@ -import javax.swing.*; -import java.awt.*; - -public class CanvasWarmlyShip extends JComponent { - public DrawingWarmlyShip _drawingWarmlyShip; - public CanvasWarmlyShip(){} - public void paintComponent(Graphics g) { - if (_drawingWarmlyShip == null) { - return; - } - super.paintComponents(g); - Graphics2D g2d = (Graphics2D) g; - _drawingWarmlyShip.DrawTransport(g2d); - super.repaint(); - } -} diff --git a/WarmlyShip/src/DirectionType.java b/WarmlyShip/src/DirectionType.java deleted file mode 100644 index 35657f0..0000000 --- a/WarmlyShip/src/DirectionType.java +++ /dev/null @@ -1,6 +0,0 @@ -public enum DirectionType { - Up, - Down, - Left, - Right -} diff --git a/WarmlyShip/src/DrawingDecks.java b/WarmlyShip/src/DrawingDecks.java deleted file mode 100644 index f7afbdc..0000000 --- a/WarmlyShip/src/DrawingDecks.java +++ /dev/null @@ -1,23 +0,0 @@ -import java.awt.*; - -public class DrawingDecks { - private NumberOfDecks numberOfDecks; - public void setNumberOfDecks(int numberofdeck) { - for (NumberOfDecks numofenum : NumberOfDecks.values()) { - if (numofenum.getNumdecks() == numberofdeck) { - numberOfDecks = numofenum; - return; - } - } - } - public NumberOfDecks getNumberOfDecks() { - return numberOfDecks; - } - public void DrawDecks(Graphics 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/WarmlyShip/src/DrawingWarmlyShip.java b/WarmlyShip/src/DrawingWarmlyShip.java deleted file mode 100644 index 2a3a221..0000000 --- a/WarmlyShip/src/DrawingWarmlyShip.java +++ /dev/null @@ -1,127 +0,0 @@ -import javax.swing.*; -import java.awt.*; - -public class DrawingWarmlyShip extends JPanel { - public EntityWarmlyShip EntityWarmlyShip; - public DrawingDecks drawingDecks = null; - private Integer picture_width; - private Integer picture_height; - private Integer _StartPosX; - private Integer _StartPosY; - private int drawingShipWidth = 150; - private int drawingShipHeight = 140; - public void Init(int speed, double weight, Color bodycolor, Color additionalcolor, boolean sheeppipes, boolean fueltank) { - EntityWarmlyShip = new EntityWarmlyShip(); - EntityWarmlyShip.Init(speed, weight, bodycolor, additionalcolor, sheeppipes, fueltank); - 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 (EntityWarmlyShip == null || _StartPosX == null || _StartPosY == null) return false; - switch (direction) { - case Left: - if (_StartPosX - EntityWarmlyShip.Step > 0) { - _StartPosX -= (int)EntityWarmlyShip.Step; - } - return true; - case Up: - if (_StartPosY - EntityWarmlyShip.Step > 0) - { - _StartPosY -= (int)EntityWarmlyShip.Step; - } - return true; - case Right: - if (_StartPosX + drawingShipWidth + (int)EntityWarmlyShip.Step < picture_width - EntityWarmlyShip.Step) - { - _StartPosX += (int)EntityWarmlyShip.Step; - } - return true; - case Down: - if (_StartPosY + drawingShipHeight + (int)EntityWarmlyShip.Step < picture_height - EntityWarmlyShip.Step) - { - _StartPosY += (int)EntityWarmlyShip.Step; - } - return true; - default: - return false; - } - } - public void DrawTransport(Graphics2D g) { - if (EntityWarmlyShip == null || _StartPosX == null || _StartPosY == null) return; - int y = _StartPosY; - if (EntityWarmlyShip.getShipPipes()) { - //трубы - g.setColor(EntityWarmlyShip.getAdditionalColor()); - g.fillRect(_StartPosX + 70, _StartPosY, 12, 30); - g.fillRect(_StartPosX + 90, _StartPosY, 12, 30); - y += 30; - } - g.setColor(EntityWarmlyShip.getBodyColor()); - if (drawingDecks.getNumberOfDecks() != null) { - switch (drawingDecks.getNumberOfDecks()) { - case OneDeck: - drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityWarmlyShip.getBodyColor()); - y += 15; - break; - case TwoDecks: - drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityWarmlyShip.getBodyColor()); - drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityWarmlyShip.getBodyColor()); - y += 30; - break; - case ThreeDecks: - drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityWarmlyShip.getBodyColor()); - drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityWarmlyShip.getBodyColor()); - drawingDecks.DrawDecks(g, _StartPosX + 30, y + 30, 100, 15, EntityWarmlyShip.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); - g.setColor(EntityWarmlyShip.getAdditionalColor()); - if (EntityWarmlyShip.getFuelTank()) { - g.setColor(EntityWarmlyShip.getAdditionalColor()); - g.fillRect(_StartPosX + 40, y + 30, 70, 10); - } - drawingShipHeight = y + 50 - _StartPosY; - } -} diff --git a/WarmlyShip/src/EntityWarmlyShip.java b/WarmlyShip/src/EntityWarmlyShip.java deleted file mode 100644 index 6fd0aed..0000000 --- a/WarmlyShip/src/EntityWarmlyShip.java +++ /dev/null @@ -1,24 +0,0 @@ -import java.awt.*; -public class EntityWarmlyShip { - private int Speed; - private double Weight; - private Color BodyColor; - public Color getBodyColor() {return BodyColor;} - private Color AdditionalColor; - public Color getAdditionalColor() {return AdditionalColor;} - private boolean ShipPipes; - public boolean getShipPipes() {return ShipPipes;} - private boolean FuelTank; - public boolean getFuelTank() {return FuelTank;} - public double Step; - public void Init(int speed, double weight, Color bodycolor, Color additionalcolor, boolean shippipes, boolean fueltank) - { - Speed = speed; - Weight = weight; - BodyColor = bodycolor; - AdditionalColor = additionalcolor; - ShipPipes = shippipes; - FuelTank = fueltank; - Step = Speed * 100 / Weight; - } -} diff --git a/WarmlyShip/src/FormWarmlyShip.java b/WarmlyShip/src/FormWarmlyShip.java index 760d3fa..b712300 100644 --- a/WarmlyShip/src/FormWarmlyShip.java +++ b/WarmlyShip/src/FormWarmlyShip.java @@ -1,3 +1,9 @@ +import DrawingShip.CanvasWarmlyShip; +import DrawingShip.DirectionType; +import DrawingShip.DrawingShip; +import DrawingShip.DrawingWarmlyShip; +import MovementStrategy.*; + import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; @@ -10,24 +16,58 @@ public class FormWarmlyShip extends JFrame { private String title; private Dimension dimension; private int Width, Height; - private CanvasWarmlyShip canvasWarmlyShip = new CanvasWarmlyShip(); - private JButton CreateButton = new JButton("Create");; + public CanvasWarmlyShip canvasWarmlyShip = new CanvasWarmlyShip(); + private JButton CreateButton = new JButton("Create warmlyship");; + private JButton CreateShipButton = new JButton("Create ship"); 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 FormWarmlyShip(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": + canvasWarmlyShip._drawingShip = new DrawingShip(speed, weight, bodyColor); + canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); + canvasWarmlyShip._drawingShip.SetPosition(StartPositionX, StartPositionY); + canvasWarmlyShip.repaint(); + break; + case "DrawingWarmlyShip": + 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();; + canvasWarmlyShip._drawingShip = new DrawingWarmlyShip(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); + canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); + canvasWarmlyShip._drawingShip.SetPosition(StartPositionX, StartPositionY); + canvasWarmlyShip.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() - 35; + + Width = getWidth() - 10; + Height = getHeight() - 34; + _strategy = null; CreateButton.setName("CREATE"); + CreateShipButton.setName("CREATESHIPBUTTON"); Icon iconUp = new ImageIcon("src\\images\\up.jpg"); UpButton.setIcon(iconUp); UpButton.setName("UP"); @@ -44,39 +84,74 @@ public class FormWarmlyShip extends JFrame { 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();; - canvasWarmlyShip._drawingWarmlyShip = new DrawingWarmlyShip(); - canvasWarmlyShip._drawingWarmlyShip.Init(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - canvasWarmlyShip._drawingWarmlyShip.SetPictureSize(Width, Height); - canvasWarmlyShip._drawingWarmlyShip.SetPosition( StartPositionX, StartPositionY); - canvasWarmlyShip.repaint(); + CreateObject("DrawingWarmlyShip"); + } + }); + + CreateShipButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingShip"); + } + }); + + ButtonStrategy.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (canvasWarmlyShip._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(canvasWarmlyShip._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 (canvasWarmlyShip._drawingWarmlyShip == null) return; + if (canvasWarmlyShip._drawingShip == null) return; boolean result = false; switch ((((JButton)(event.getSource())).getName())) { case "UP": - result = canvasWarmlyShip._drawingWarmlyShip.MoveTransport(DirectionType.Up); + System.out.println("Кнопка UP нажата"); + result = canvasWarmlyShip._drawingShip.MoveTransport(DirectionType.Up); break; case "DOWN": - result = canvasWarmlyShip._drawingWarmlyShip.MoveTransport(DirectionType.Down); + result = canvasWarmlyShip._drawingShip.MoveTransport(DirectionType.Down); break; case "LEFT": - result = canvasWarmlyShip._drawingWarmlyShip.MoveTransport(DirectionType.Left); + result = canvasWarmlyShip._drawingShip.MoveTransport(DirectionType.Left); break; case "RIGHT": - result = canvasWarmlyShip._drawingWarmlyShip.MoveTransport(DirectionType.Right); + result = canvasWarmlyShip._drawingShip.MoveTransport(DirectionType.Right); break; } if (result) { @@ -92,31 +167,40 @@ public class FormWarmlyShip extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasWarmlyShip.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(canvasWarmlyShip); setVisible(true); //обработка события изменения размеров окна addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e) { - Width = getWidth() - 15; - Height = getHeight() - 35; - if (canvasWarmlyShip._drawingWarmlyShip != null) - canvasWarmlyShip._drawingWarmlyShip.SetPictureSize(Width, Height); + Width = getWidth() - 10; + Height = getHeight() - 34; + if (canvasWarmlyShip._drawingShip != null) + canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); canvasWarmlyShip.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/WarmlyShip/src/Main.java b/WarmlyShip/src/Main.java index c5fcc85..a785b53 100644 --- a/WarmlyShip/src/Main.java +++ b/WarmlyShip/src/Main.java @@ -1,8 +1,7 @@ import java.awt.*; - public class Main { public static void main(String[] args) { - FormWarmlyShip form = new FormWarmlyShip("Теплоход", new Dimension(500,500)); + FormWarmlyShip form = new FormWarmlyShip("Теплоход", new Dimension(700,500)); form.Init(); } } \ No newline at end of file diff --git a/WarmlyShip/src/NumberOfDecks.java b/WarmlyShip/src/NumberOfDecks.java deleted file mode 100644 index d1526e0..0000000 --- a/WarmlyShip/src/NumberOfDecks.java +++ /dev/null @@ -1,10 +0,0 @@ -public enum NumberOfDecks { - OneDeck(1), - TwoDecks(2), - ThreeDecks(3); - private int numberofdecks; - NumberOfDecks(int numberofdecks) { - this.numberofdecks = numberofdecks; - } - public int getNumdecks() {return numberofdecks;} -} -- 2.25.1 From cc0082b6c987d8e54d8a3d16c8299c91a605e186 Mon Sep 17 00:00:00 2001 From: IlyasValiulov <148232695+IlyasValiulov@users.noreply.github.com> Date: Thu, 14 Mar 2024 20:03:10 +0400 Subject: [PATCH 2/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=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=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarmlyShip/.idea/.name | 1 + .../DrawingDecksType1.java | 28 ++++ .../DrawingDecksType2.java | 34 ++++ .../DrawingDecksType3.java | 28 ++++ .../IDifferentDecks.java | 9 ++ .../DiffetentsDrawingDecks/NumberOfDecks.java | 12 ++ .../src/DrawingShip/CanvasWarmlyShip.java | 18 +++ WarmlyShip/src/DrawingShip/DirectionType.java | 9 ++ WarmlyShip/src/DrawingShip/DrawingShip.java | 146 ++++++++++++++++++ .../src/DrawingShip/DrawingWarmlyShip.java | 47 ++++++ WarmlyShip/src/Entities/EntityShip.java | 18 +++ WarmlyShip/src/Entities/EntityWarmlyShip.java | 16 ++ .../MovementStrategy/AbstractStrategy.java | 56 +++++++ .../MovementStrategy/IMoveableObjects.java | 7 + .../src/MovementStrategy/MoveToBorder.java | 27 ++++ .../src/MovementStrategy/MoveToCenter.java | 48 ++++++ .../src/MovementStrategy/MoveableShip.java | 45 ++++++ .../MovementStrategy/MovementDirection.java | 8 + .../MovementStrategy/ObjectParameters.java | 27 ++++ .../src/MovementStrategy/StrategyStatus.java | 7 + 20 files changed, 591 insertions(+) create mode 100644 WarmlyShip/.idea/.name create mode 100644 WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType1.java create mode 100644 WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType2.java create mode 100644 WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType3.java create mode 100644 WarmlyShip/src/DiffetentsDrawingDecks/IDifferentDecks.java create mode 100644 WarmlyShip/src/DiffetentsDrawingDecks/NumberOfDecks.java create mode 100644 WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java create mode 100644 WarmlyShip/src/DrawingShip/DirectionType.java create mode 100644 WarmlyShip/src/DrawingShip/DrawingShip.java create mode 100644 WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java create mode 100644 WarmlyShip/src/Entities/EntityShip.java create mode 100644 WarmlyShip/src/Entities/EntityWarmlyShip.java create mode 100644 WarmlyShip/src/MovementStrategy/AbstractStrategy.java create mode 100644 WarmlyShip/src/MovementStrategy/IMoveableObjects.java create mode 100644 WarmlyShip/src/MovementStrategy/MoveToBorder.java create mode 100644 WarmlyShip/src/MovementStrategy/MoveToCenter.java create mode 100644 WarmlyShip/src/MovementStrategy/MoveableShip.java create mode 100644 WarmlyShip/src/MovementStrategy/MovementDirection.java create mode 100644 WarmlyShip/src/MovementStrategy/ObjectParameters.java create mode 100644 WarmlyShip/src/MovementStrategy/StrategyStatus.java diff --git a/WarmlyShip/.idea/.name b/WarmlyShip/.idea/.name new file mode 100644 index 0000000..002da1d --- /dev/null +++ b/WarmlyShip/.idea/.name @@ -0,0 +1 @@ +Main.java \ No newline at end of file diff --git a/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType1.java b/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType1.java new file mode 100644 index 0000000..14d4f7b --- /dev/null +++ b/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType1.java @@ -0,0 +1,28 @@ +package DiffetentsDrawingDecks; + +import java.awt.*; + +public class DrawingDecksType1 implements IDifferentDecks { + private NumberOfDecks numberOfDecks; + @Override + public void setNumberOfDecks(int numberofdeck) { + for (NumberOfDecks numofenum : NumberOfDecks.values()) { + if (numofenum.getNumdecks() == numberofdeck) { + numberOfDecks = numofenum; + return; + } + } + } + @Override + public NumberOfDecks 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.BLACK); + g.drawRect(x, y, width, height); + g.setColor(bodyColor); + } +} diff --git a/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType2.java b/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType2.java new file mode 100644 index 0000000..d5e1e36 --- /dev/null +++ b/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType2.java @@ -0,0 +1,34 @@ +package DiffetentsDrawingDecks; + +import java.awt.*; + +public class DrawingDecksType2 implements IDifferentDecks { + private NumberOfDecks numberOfDecks; + @Override + public void setNumberOfDecks(int numberofdeck) { + for (NumberOfDecks numofenum : NumberOfDecks.values()) { + if (numofenum.getNumdecks() == numberofdeck) { + numberOfDecks = numofenum; + return; + } + } + } + @Override + public NumberOfDecks 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); + //верхняя часть полубы + g.drawLine(x, y, x + width, y); + //опорные балки + int countBalks = 4; + int wayBetweenBalks = width / countBalks; + for (int i = 0; i <= countBalks; i++) { + int nowX = x + wayBetweenBalks * i; + g.drawLine(nowX, y, nowX, y + height); + } + } +} diff --git a/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType3.java b/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType3.java new file mode 100644 index 0000000..89c15e0 --- /dev/null +++ b/WarmlyShip/src/DiffetentsDrawingDecks/DrawingDecksType3.java @@ -0,0 +1,28 @@ +package DiffetentsDrawingDecks; + +import java.awt.*; + +public class DrawingDecksType3 implements IDifferentDecks{ + private NumberOfDecks numberOfDecks; + @Override + public void setNumberOfDecks(int numberofdeck) { + for (NumberOfDecks numofenum : NumberOfDecks.values()) { + if (numofenum.getNumdecks() == numberofdeck) { + numberOfDecks = numofenum; + return; + } + } + } + @Override + public NumberOfDecks 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.BLACK); + g.fillRect(x+ 10, y+5, width - 20, height-5); + g.setColor(bodyColor); + } +} diff --git a/WarmlyShip/src/DiffetentsDrawingDecks/IDifferentDecks.java b/WarmlyShip/src/DiffetentsDrawingDecks/IDifferentDecks.java new file mode 100644 index 0000000..12fe36c --- /dev/null +++ b/WarmlyShip/src/DiffetentsDrawingDecks/IDifferentDecks.java @@ -0,0 +1,9 @@ +package DiffetentsDrawingDecks; + +import java.awt.*; + +public interface IDifferentDecks { + void setNumberOfDecks(int numberofdeck); + NumberOfDecks getNumberOfDecks(); + void DrawDecks(Graphics2D g, int x, int y, int width, int height, Color bodyColor); +} diff --git a/WarmlyShip/src/DiffetentsDrawingDecks/NumberOfDecks.java b/WarmlyShip/src/DiffetentsDrawingDecks/NumberOfDecks.java new file mode 100644 index 0000000..01d3246 --- /dev/null +++ b/WarmlyShip/src/DiffetentsDrawingDecks/NumberOfDecks.java @@ -0,0 +1,12 @@ +package DiffetentsDrawingDecks; + +public enum NumberOfDecks { + OneDeck(1), + TwoDecks(2), + ThreeDecks(3); + private int numberofdecks; + NumberOfDecks(int numberofdecks) { + this.numberofdecks = numberofdecks; + } + public int getNumdecks() {return numberofdecks;} +} diff --git a/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java b/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java new file mode 100644 index 0000000..11725eb --- /dev/null +++ b/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java @@ -0,0 +1,18 @@ +package DrawingShip; + +import javax.swing.*; +import java.awt.*; + +public class CanvasWarmlyShip extends JComponent { + public DrawingShip _drawingShip; + public CanvasWarmlyShip(){} + public void paintComponent(Graphics g) { + if (_drawingShip == null) { + return; + } + super.paintComponents(g); + Graphics2D g2d = (Graphics2D) g; + _drawingShip.DrawTransport(g2d); + super.repaint(); + } +} diff --git a/WarmlyShip/src/DrawingShip/DirectionType.java b/WarmlyShip/src/DrawingShip/DirectionType.java new file mode 100644 index 0000000..055aabb --- /dev/null +++ b/WarmlyShip/src/DrawingShip/DirectionType.java @@ -0,0 +1,9 @@ +package DrawingShip; + +public enum DirectionType { + Unknow, + Up, + Down, + Left, + Right +} diff --git a/WarmlyShip/src/DrawingShip/DrawingShip.java b/WarmlyShip/src/DrawingShip/DrawingShip.java new file mode 100644 index 0000000..b52faa1 --- /dev/null +++ b/WarmlyShip/src/DrawingShip/DrawingShip.java @@ -0,0 +1,146 @@ +package DrawingShip; +import DiffetentsDrawingDecks.DrawingDecksType2; +import DiffetentsDrawingDecks.DrawingDecksType3; +import DiffetentsDrawingDecks.IDifferentDecks; +import Entities.EntityShip; + +import DiffetentsDrawingDecks.DrawingDecksType1; + +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; + private 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 DrawingDecksType1(); + break; + case 2: + drawingDecks = new DrawingDecksType2(); + break; + case 3: + drawingDecks = new DrawingDecksType3(); + 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) { + switch (drawingDecks.getNumberOfDecks()) { + case OneDeck: + drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor()); + y += 15; + break; + case TwoDecks: + drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor()); + drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityShip.getBodyColor()); + y += 30; + break; + case ThreeDecks: + drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor()); + drawingDecks.DrawDecks(g, _StartPosX + 30, y + 15, 100, 15, EntityShip.getBodyColor()); + drawingDecks.DrawDecks(g, _StartPosX + 30, y + 30, 100, 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/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java b/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java new file mode 100644 index 0000000..a3d7ec7 --- /dev/null +++ b/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java @@ -0,0 +1,47 @@ +package DrawingShip; +import Entities.EntityWarmlyShip; + +import java.awt.*; + +public class DrawingWarmlyShip extends DrawingShip { + public DrawingWarmlyShip(int speed, double weight, Color bodycolor, Color additionalcolor, boolean sheeppipes, boolean fueltank) { + EntityShip = new EntityWarmlyShip(speed, weight, bodycolor, additionalcolor, sheeppipes, fueltank); + SetAmountandTypeDecks(); + } + @Override + public void DrawTransport(Graphics2D g) { + if (EntityShip == null || !(EntityShip instanceof EntityWarmlyShip warmlyship) || _StartPosX == null || _StartPosY == null) + return; + int y = _StartPosY; + if (warmlyship.ShipPipes) { + //трубы + g.setColor(warmlyship.getAdditionalColor()); + g.fillRect(_StartPosX + 70, _StartPosY, 12, 30); + g.fillRect(_StartPosX + 90, _StartPosY, 12, 30); + _StartPosY += 30; + } + super.DrawTransport(g); + 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; + } + } + if (warmlyship.FuelTank) { + g.setColor(warmlyship.getAdditionalColor()); + g.fillRect(_StartPosX + 40, _StartPosY + count_decks * 15 + 30, 70, 10); + } + if (warmlyship.ShipPipes) { + _StartPosY -= 30; + drawingShipHeight += 30; + } + } +} diff --git a/WarmlyShip/src/Entities/EntityShip.java b/WarmlyShip/src/Entities/EntityShip.java new file mode 100644 index 0000000..ba40143 --- /dev/null +++ b/WarmlyShip/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/WarmlyShip/src/Entities/EntityWarmlyShip.java b/WarmlyShip/src/Entities/EntityWarmlyShip.java new file mode 100644 index 0000000..8863dcc --- /dev/null +++ b/WarmlyShip/src/Entities/EntityWarmlyShip.java @@ -0,0 +1,16 @@ +package Entities; + +import java.awt.*; +public class EntityWarmlyShip extends EntityShip{ + public Color AdditionalColor; + public Color getAdditionalColor() {return AdditionalColor;} + public boolean ShipPipes; + public boolean FuelTank; + public EntityWarmlyShip(int speed, double weight, Color bodyColor, Color additionalcolor, boolean sheeppipes, boolean fueltank) + { + super(speed, weight, bodyColor); + AdditionalColor = additionalcolor; + ShipPipes = sheeppipes; + FuelTank = fueltank; + } +} diff --git a/WarmlyShip/src/MovementStrategy/AbstractStrategy.java b/WarmlyShip/src/MovementStrategy/AbstractStrategy.java new file mode 100644 index 0000000..c491f92 --- /dev/null +++ b/WarmlyShip/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/WarmlyShip/src/MovementStrategy/IMoveableObjects.java b/WarmlyShip/src/MovementStrategy/IMoveableObjects.java new file mode 100644 index 0000000..4ecb751 --- /dev/null +++ b/WarmlyShip/src/MovementStrategy/IMoveableObjects.java @@ -0,0 +1,7 @@ +package MovementStrategy; + +public interface IMoveableObjects { + ObjectParameters GetObjectPosition(); + int GetStep(); + boolean TryMoveObject(MovementDirection direction); +} diff --git a/WarmlyShip/src/MovementStrategy/MoveToBorder.java b/WarmlyShip/src/MovementStrategy/MoveToBorder.java new file mode 100644 index 0000000..c85b39f --- /dev/null +++ b/WarmlyShip/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/WarmlyShip/src/MovementStrategy/MoveToCenter.java b/WarmlyShip/src/MovementStrategy/MoveToCenter.java new file mode 100644 index 0000000..2669284 --- /dev/null +++ b/WarmlyShip/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/WarmlyShip/src/MovementStrategy/MoveableShip.java b/WarmlyShip/src/MovementStrategy/MoveableShip.java new file mode 100644 index 0000000..c6e4de3 --- /dev/null +++ b/WarmlyShip/src/MovementStrategy/MoveableShip.java @@ -0,0 +1,45 @@ +package MovementStrategy; + +import DrawingShip.CanvasWarmlyShip; +import DrawingShip.DirectionType; +import DrawingShip.DrawingShip; + +public class MoveableShip implements IMoveableObjects{ + private CanvasWarmlyShip canvas = new CanvasWarmlyShip(); + 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/WarmlyShip/src/MovementStrategy/MovementDirection.java b/WarmlyShip/src/MovementStrategy/MovementDirection.java new file mode 100644 index 0000000..c52f124 --- /dev/null +++ b/WarmlyShip/src/MovementStrategy/MovementDirection.java @@ -0,0 +1,8 @@ +package MovementStrategy; + +public enum MovementDirection { + Up, + Down, + Left, + Right +} diff --git a/WarmlyShip/src/MovementStrategy/ObjectParameters.java b/WarmlyShip/src/MovementStrategy/ObjectParameters.java new file mode 100644 index 0000000..b68fe75 --- /dev/null +++ b/WarmlyShip/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/WarmlyShip/src/MovementStrategy/StrategyStatus.java b/WarmlyShip/src/MovementStrategy/StrategyStatus.java new file mode 100644 index 0000000..4f087ea --- /dev/null +++ b/WarmlyShip/src/MovementStrategy/StrategyStatus.java @@ -0,0 +1,7 @@ +package MovementStrategy; + +public enum StrategyStatus { + NotInit, + InProgress, + Finish +} -- 2.25.1 From bc4761841a038570a3a1f0e538a829a1dd4c0470 Mon Sep 17 00:00:00 2001 From: IlyasValiulov <148232695+IlyasValiulov@users.noreply.github.com> Date: Thu, 4 Apr 2024 11:35:29 +0400 Subject: [PATCH 3/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=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=963=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdditionalCollections.java | 61 +++++ .../AbstractCompany.java | 34 +++ .../ICollectionGenericObjects.java | 12 + .../MassiveGenericObjects.java | 75 ++++++ .../ShipPortService.java | 50 ++++ .../DrawingShip/CanvasFormShipCollection.java | 31 +++ .../src/DrawingShip/CanvasWarmlyShip.java | 1 + WarmlyShip/src/DrawingShip/DrawingShip.java | 12 +- .../src/DrawingShip/DrawingWarmlyShip.java | 11 +- WarmlyShip/src/Entities/EntityShip.java | 2 + WarmlyShip/src/Entities/EntityWarmlyShip.java | 2 + WarmlyShip/src/FormAdditionalCollection.java | 137 +++++++++++ WarmlyShip/src/FormShipCollection.java | 220 ++++++++++++++++++ WarmlyShip/src/FormWarmlyShip.java | 59 +---- WarmlyShip/src/Main.java | 3 +- .../src/MovementStrategy/MoveableShip.java | 3 +- .../MovementStrategy/MovementDirection.java | 1 + 17 files changed, 654 insertions(+), 60 deletions(-) create mode 100644 WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java create mode 100644 WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java create mode 100644 WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java create mode 100644 WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java create mode 100644 WarmlyShip/src/CollectionGenericObjects/ShipPortService.java create mode 100644 WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java create mode 100644 WarmlyShip/src/FormAdditionalCollection.java create mode 100644 WarmlyShip/src/FormShipCollection.java diff --git a/WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java b/WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java new file mode 100644 index 0000000..ef5318a --- /dev/null +++ b/WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java @@ -0,0 +1,61 @@ +package CollectionAdditionalObjects; + +import DiffetentsDrawingDecks.IDifferentDecks; +import DrawingShip.DrawingShip; +import DrawingShip.DrawingWarmlyShip; +import Entities.EntityShip; +import Entities.EntityWarmlyShip; + +import java.lang.reflect.Array; +import java.util.Random; + +public class AdditionalCollections { + public T[] _collectionEntity; + public U[] _collectionDecks; + public AdditionalCollections(int size, Class type1, Class type2) { + _collectionEntity = (T[]) Array.newInstance(type1, size); + _collectionDecks = (U[]) Array.newInstance(type2, size); + CountEntities = size; + CountDecks = size; + } + public int CountEntities; + public int CountDecks; + public int Insert(T entity) { + int index = 0; + while (index < CountEntities) { + if (_collectionEntity[index] == null) + { + _collectionEntity[index] = entity; + return index; + } + ++index; + } + return -1; + } + public int Insert(U decks) { + int index = 0; + while (index < CountDecks) { + if (_collectionDecks[index] == null) + { + _collectionDecks[index] = decks; + return index; + } + ++index; + } + return -1; + } + public DrawingShip CreateAdditionalCollectionShip() { + Random random = new Random(); + if (_collectionEntity == null || _collectionDecks == null) return null; + T entity = _collectionEntity[random.nextInt(CountEntities)]; + U decks = _collectionDecks[random.nextInt(CountDecks)]; + DrawingShip drawingShip = null; + if (entity instanceof EntityWarmlyShip) { + drawingShip = new DrawingWarmlyShip((EntityWarmlyShip) entity, decks); + } + else { + drawingShip = new DrawingShip(entity, decks); + } + return drawingShip; + } +} diff --git a/WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java b/WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java new file mode 100644 index 0000000..676888e --- /dev/null +++ b/WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java @@ -0,0 +1,34 @@ +package CollectionGenericObjects; + +import DrawingShip.DrawingShip; + +import java.awt.*; + +public abstract class AbstractCompany { + protected int _placeSizeWidth = 210; + protected int _placeSizeHeight = 150; + protected int _pictureWidth; + protected int _pictureHeight; + public ICollectionGenericObjects _collection = null; + private int GetMaxCount() { + return _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight); + } + public AbstractCompany(int picWidth, int picHeight, ICollectionGenericObjects collection) + { + _pictureWidth = picWidth; + _pictureHeight = picHeight; + _collection = collection; + _collection.SetMaxCount(GetMaxCount(), (Class) DrawingShip.class); + } + //перегрузка операторов в джаве невозможна + public DrawingShip GetRandomObject() + { + return _collection.Get((int)(Math.random()*GetMaxCount() + 0)); + } + public void SetPosition() + { + SetObjectsPosition(); + } + public abstract void DrawBackgound(Graphics graphics); + protected abstract void SetObjectsPosition(); +} diff --git a/WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java b/WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java new file mode 100644 index 0000000..a633cfe --- /dev/null +++ b/WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java @@ -0,0 +1,12 @@ +package CollectionGenericObjects; + +public interface ICollectionGenericObjects +{ + int getCount(); + void SetMaxCount(int count, Class type); + int Insert(T obj); + int Insert(T obj, int position); + T Remove(int position); + T Get(int position); +} + diff --git a/WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java b/WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java new file mode 100644 index 0000000..063fb44 --- /dev/null +++ b/WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java @@ -0,0 +1,75 @@ +package CollectionGenericObjects; + +import java.lang.reflect.Array; + +public class MassiveGenericObjects implements ICollectionGenericObjects{ + private T[] _collection; + private int Count; + public void SetMaxCount(int size, Class type) { + if (size > 0) { + _collection = (T[]) Array.newInstance(type, size); + Count = size; + } + } + @Override + public int getCount() { + return Count; + } + @Override + public int Insert(T obj) { + int index = 0; + while (index < getCount()) + { + if (_collection[index] == null) + { + _collection[index] = obj; + return index; + } + ++index; + } + return -1; + } + @Override + public int Insert(T obj, int position) { + if (position >= getCount() || position < 0) + return -1; + if (_collection[position] == null) { + _collection[position] = obj; + return position; + } + int index = position + 1; + while (index < getCount()) + { + if (_collection[index] == null) + { + _collection[index] = obj; + return index; + } + ++index; + } + index = position - 1; + while (index >= 0) + { + if (_collection[index] == null) + { + _collection[index] = obj; + return index; + } + --index; + } + return -1; + } + @Override + public T Remove(int position) { + if (position >= getCount() || position < 0) + return null; + T obj = (T) _collection[position]; + _collection[position] = null; + return obj; + } + @Override + public T Get(int position) { + if (position >= getCount() || position < 0) return null; + return (T) _collection[position]; + } +} diff --git a/WarmlyShip/src/CollectionGenericObjects/ShipPortService.java b/WarmlyShip/src/CollectionGenericObjects/ShipPortService.java new file mode 100644 index 0000000..693c0df --- /dev/null +++ b/WarmlyShip/src/CollectionGenericObjects/ShipPortService.java @@ -0,0 +1,50 @@ +package CollectionGenericObjects; + +import DrawingShip.DrawingShip; + +import java.awt.*; + +public class ShipPortService extends AbstractCompany{ + public ShipPortService(int picWidth, int picHeight, ICollectionGenericObjects collection) { + super(picWidth, picHeight, collection); + } + @Override + public void DrawBackgound(Graphics g) { + //рисуем пристань + int width = _pictureWidth / _placeSizeWidth; + int height = _pictureHeight / _placeSizeHeight; + g.setColor(Color.BLACK); + for (int i = 0; i < width; i++) + { + for (int j = 0; j < height + 1; ++j) + { + g.drawLine(i * _placeSizeWidth, j * _placeSizeHeight, + i * _placeSizeWidth + _placeSizeWidth - 5, j * _placeSizeHeight ); + } + } + } + @Override + protected void SetObjectsPosition() { + int width = _pictureWidth / _placeSizeWidth; + int height = _pictureHeight / _placeSizeHeight; + + int curWidth = width - 1; + int curHeight = 0; + for (int i = 0; i < (_collection.getCount()); i++) { + if (_collection.Get(i) != null) { + _collection.Get(i).SetPictureSize(_pictureWidth, _pictureHeight); + _collection.Get(i).SetPosition(_placeSizeWidth * curWidth + 20, curHeight * _placeSizeHeight + 4); + } + if (curWidth > 0) + curWidth--; + else { + curWidth = width - 1; + curHeight++; + } + if (curHeight > height) { + return; + } + } + } +} + diff --git a/WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java b/WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java new file mode 100644 index 0000000..01f9908 --- /dev/null +++ b/WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java @@ -0,0 +1,31 @@ +package DrawingShip; + +import CollectionGenericObjects.AbstractCompany; + +import javax.swing.*; +import java.awt.*; + +public class CanvasFormShipCollection extends JComponent +{ + public AbstractCompany company = null; + public void SetCollectionToCanvas(AbstractCompany company) { + this.company = company; + } + public CanvasFormShipCollection(){}; + public void paintComponent(Graphics g) { + super.paintComponents(g); + if (company == null || company._collection == null) { + return; + } + company.DrawBackgound(g); + for (int i = 0; i < company._collection.getCount(); i++) { + + Graphics2D g2d = (Graphics2D) g; + T obj = (T)company._collection.Get(i); + if (obj instanceof DrawingShip) { + ((DrawingShip) obj).DrawTransport(g2d); + } + } + super.repaint(); + } +} diff --git a/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java b/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java index 11725eb..5cc72b3 100644 --- a/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java +++ b/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java @@ -16,3 +16,4 @@ public class CanvasWarmlyShip extends JComponent { super.repaint(); } } + diff --git a/WarmlyShip/src/DrawingShip/DrawingShip.java b/WarmlyShip/src/DrawingShip/DrawingShip.java index b52faa1..a81a88c 100644 --- a/WarmlyShip/src/DrawingShip/DrawingShip.java +++ b/WarmlyShip/src/DrawingShip/DrawingShip.java @@ -51,6 +51,16 @@ public class DrawingShip extends JPanel { EntityShip = new EntityShip(speed, weight, bodycolor); SetAmountandTypeDecks(); } + protected DrawingShip(int drawingShipWidth, int drawingShipHeight) { + super(); + this.drawingShipWidth = drawingShipWidth; + this.drawingShipHeight = drawingShipHeight; + } + //добавил + public DrawingShip(EntityShip entity, IDifferentDecks decks) { + EntityShip = entity; + drawingDecks = decks; + } public boolean SetPictureSize(int width, int height) { if (width < drawingShipWidth || height < drawingShipHeight) return false; picture_width = width; @@ -118,7 +128,7 @@ public class DrawingShip extends JPanel { if (EntityShip == null || _StartPosX == null || _StartPosY == null) return; int y = _StartPosY; g.setColor(EntityShip.getBodyColor()); - if (drawingDecks.getNumberOfDecks() != null) { + if (drawingDecks != null && drawingDecks.getNumberOfDecks() != null) { switch (drawingDecks.getNumberOfDecks()) { case OneDeck: drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor()); diff --git a/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java b/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java index a3d7ec7..e19ebca 100644 --- a/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java +++ b/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java @@ -1,4 +1,6 @@ package DrawingShip; +import DiffetentsDrawingDecks.IDifferentDecks; +import Entities.EntityShip; import Entities.EntityWarmlyShip; import java.awt.*; @@ -8,6 +10,11 @@ public class DrawingWarmlyShip extends DrawingShip { EntityShip = new EntityWarmlyShip(speed, weight, bodycolor, additionalcolor, sheeppipes, fueltank); SetAmountandTypeDecks(); } + //добавил + public DrawingWarmlyShip(EntityWarmlyShip entity, IDifferentDecks decks) { + EntityShip = entity; + drawingDecks = decks; + } @Override public void DrawTransport(Graphics2D g) { if (EntityShip == null || !(EntityShip instanceof EntityWarmlyShip warmlyship) || _StartPosX == null || _StartPosY == null) @@ -22,7 +29,7 @@ public class DrawingWarmlyShip extends DrawingShip { } super.DrawTransport(g); int count_decks = 0; - if (drawingDecks.getNumberOfDecks() != null) { + if (drawingDecks != null && drawingDecks.getNumberOfDecks() != null) { switch (drawingDecks.getNumberOfDecks()) { case OneDeck: count_decks = 1; @@ -35,7 +42,7 @@ public class DrawingWarmlyShip extends DrawingShip { break; } } - if (warmlyship.FuelTank) { + if (warmlyship.getFuelTank()) { g.setColor(warmlyship.getAdditionalColor()); g.fillRect(_StartPosX + 40, _StartPosY + count_decks * 15 + 30, 70, 10); } diff --git a/WarmlyShip/src/Entities/EntityShip.java b/WarmlyShip/src/Entities/EntityShip.java index ba40143..abd45ce 100644 --- a/WarmlyShip/src/Entities/EntityShip.java +++ b/WarmlyShip/src/Entities/EntityShip.java @@ -4,7 +4,9 @@ import java.awt.*; public class EntityShip { private int Speed; + public int getSpeed() {return Speed;} private double Weight; + public double getWeight() {return Weight;} private Color BodyColor; public Color getBodyColor() {return BodyColor;} public double Step; diff --git a/WarmlyShip/src/Entities/EntityWarmlyShip.java b/WarmlyShip/src/Entities/EntityWarmlyShip.java index 8863dcc..80313ad 100644 --- a/WarmlyShip/src/Entities/EntityWarmlyShip.java +++ b/WarmlyShip/src/Entities/EntityWarmlyShip.java @@ -5,7 +5,9 @@ public class EntityWarmlyShip extends EntityShip{ public Color AdditionalColor; public Color getAdditionalColor() {return AdditionalColor;} public boolean ShipPipes; + public boolean getShipPipes() {return ShipPipes;} public boolean FuelTank; + public boolean getFuelTank() {return FuelTank;} public EntityWarmlyShip(int speed, double weight, Color bodyColor, Color additionalcolor, boolean sheeppipes, boolean fueltank) { super(speed, weight, bodyColor); diff --git a/WarmlyShip/src/FormAdditionalCollection.java b/WarmlyShip/src/FormAdditionalCollection.java new file mode 100644 index 0000000..849c2dc --- /dev/null +++ b/WarmlyShip/src/FormAdditionalCollection.java @@ -0,0 +1,137 @@ +import CollectionAdditionalObjects.AdditionalCollections; +import CollectionGenericObjects.AbstractCompany; +import DiffetentsDrawingDecks.DrawingDecksType1; +import DiffetentsDrawingDecks.DrawingDecksType2; +import DiffetentsDrawingDecks.DrawingDecksType3; +import DiffetentsDrawingDecks.IDifferentDecks; +import DrawingShip.DrawingShip; +import DrawingShip.DrawingWarmlyShip; +import DrawingShip.CanvasWarmlyShip; +import Entities.EntityShip; +import Entities.EntityWarmlyShip; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Random; + +public class FormAdditionalCollection extends JFrame { + public DrawingShip drawingShip = null; + private AbstractCompany company = null; + private CanvasWarmlyShip canvasship = new CanvasWarmlyShip(); + private AdditionalCollections additionalCollection = null; + private Random random = new Random(); + private JButton buttonGenerate = new JButton("Создать"); + private JList listEntity = new JList(); + private JList listDecks = new JList(); + public FormAdditionalCollection() { + setTitle("Random ship"); + setMinimumSize(new Dimension(650,310)); + additionalCollection = new AdditionalCollections(3, + (Class) EntityShip.class, (Class) IDifferentDecks.class); + AddEntities(); + AddDecks(); + buttonGenerate.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + drawingShip = additionalCollection.CreateAdditionalCollectionShip(); + drawingShip.SetPictureSize(getWidth(), getHeight()); + drawingShip.SetPosition(50,50); + canvasship._drawingShip = drawingShip; + canvasship.repaint(); + DrawingShip copyShip; + if (drawingShip instanceof DrawingWarmlyShip) + copyShip = new DrawingWarmlyShip((EntityWarmlyShip) drawingShip.EntityShip, drawingShip.drawingDecks); + else + copyShip = new DrawingShip(drawingShip.EntityShip, drawingShip.drawingDecks); + company._collection.Insert(copyShip); + FormShipCollection.canvasShow(); + + String[] data1 = new String[additionalCollection.CountEntities]; + for (int i = 0; i < additionalCollection.CountEntities; i++) { + EntityShip entity = additionalCollection._collectionEntity[i]; + data1[i] = ToString(entity); + } + String[] data2 = new String[additionalCollection.CountDecks]; + for (int i = 0; i < additionalCollection.CountDecks; i++) { + IDifferentDecks decks = additionalCollection._collectionDecks[i]; + data2[i] = ToString(decks); + } + listEntity.setListData(data1); + listDecks.setListData(data2); + } + }); + buttonGenerate.setBounds(450, 10, 100, 50); + add(buttonGenerate); + listEntity.setBounds(10,200,300,60); + listDecks.setBounds(320,200,300,60); + add(listEntity); + add(listDecks); + add(canvasship); + setVisible(true); + } + private String ToString(EntityShip entity) { + String str = ""; + if (entity instanceof EntityWarmlyShip) str += "EntityWarmlyShip "; + else str += "EntityShip "; + str += entity.getBodyColor().toString(); + return str; + } + private String ToString(IDifferentDecks decks) { + if (decks == null || decks.getNumberOfDecks() == null) + return "Dont have decks"; + String str = "Deck "; + if (decks instanceof DrawingDecksType1) str += "Type 1 "; + else if (decks instanceof DrawingDecksType2) str += "Type 2 "; + else str += "Type 3 "; + str += decks.getNumberOfDecks().toString(); + return str; + } + public void AddEntities() { + for (int i = 0; i < additionalCollection.CountEntities; i++) { + random = new Random(); + int speed = random.nextInt(100, 300); + double weight = random.nextInt(1000, 3000); + Color bodycolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + EntityShip entity; + if (random.nextBoolean()) { + entity = new EntityShip(speed, weight, bodycolor); + } + else { + Color additionalcolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + boolean sheeppipes = random.nextBoolean(); + boolean fueltaln = random.nextBoolean(); + entity = new EntityWarmlyShip(speed, weight, bodycolor, + additionalcolor, sheeppipes, fueltaln); + } + additionalCollection.Insert(entity); + } + } + public void AddDecks() { + for (int i = 0; i < additionalCollection.CountDecks; i++) { + random = new Random(); + Integer numberOfDecks = random.nextInt(0, 4); + IDifferentDecks drawingDecks = null; + switch (random.nextInt(0,4)) { + case 1: + drawingDecks = new DrawingDecksType1(); + break; + case 2: + drawingDecks = new DrawingDecksType2(); + break; + case 3: + drawingDecks = new DrawingDecksType3(); + break; + default: + numberOfDecks = null; + break; + } + if (drawingDecks != null) drawingDecks.setNumberOfDecks(numberOfDecks); + additionalCollection.Insert(drawingDecks); + } + } + void setCompany(AbstractCompany company) { + this.company = company; + } +} diff --git a/WarmlyShip/src/FormShipCollection.java b/WarmlyShip/src/FormShipCollection.java new file mode 100644 index 0000000..3b09d7b --- /dev/null +++ b/WarmlyShip/src/FormShipCollection.java @@ -0,0 +1,220 @@ +import CollectionGenericObjects.AbstractCompany; +import CollectionGenericObjects.MassiveGenericObjects; +import CollectionGenericObjects.ShipPortService; +import DrawingShip.CanvasFormShipCollection; +import DrawingShip.DrawingShip; +import DrawingShip.DrawingWarmlyShip; + +import javax.swing.*; +import javax.swing.text.MaskFormatter; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; +import java.text.ParseException; +import java.util.Random; + +import static java.lang.Integer.parseInt; + +public class FormShipCollection extends JFrame{ + private String title; + private Dimension dimension; + public static CanvasFormShipCollection _canvasWarmlyShip = new CanvasFormShipCollection(); + private static AbstractCompany _company = null; + private JButton CreateButton = new JButton("Create warmlyship");; + private JButton CreateShipButton = new JButton("Create ship"); + private JButton RemoveButton = new JButton("Remove"); + private JButton GoToCheckButton = new JButton("Check"); + private JButton RandomButton = new JButton("RandomShip"); + private JButton RefreshButton = new JButton("Refresh"); + private JComboBox ComboBoxCollections = new JComboBox(new String[]{"", "Хранилище"}); + private JFormattedTextField MaskedTextField; + public FormShipCollection(String title, Dimension dimension) { + this.title = title; + this.dimension = dimension; + } + public static void canvasShow() { + _company.SetPosition(); + _canvasWarmlyShip.SetCollectionToCanvas(_company); + _canvasWarmlyShip.repaint(); + } + private void CreateObject(String typeOfClass) { + if (_company == null) return; + int speed = (int)(Math.random() * 300 + 100); + double weight = (double)(Math.random() * 3000 + 1000); + Color bodyColor = getColor(); + DrawingShip drawingShip; + switch (typeOfClass) { + case "DrawingShip": + drawingShip = new DrawingShip(speed, weight, bodyColor); + break; + case "DrawingWarmlyShip": + Color additionalColor = getColor(); + boolean sheepPipes = new Random().nextBoolean(); + boolean fuelTank = new Random().nextBoolean();; + drawingShip = new DrawingWarmlyShip(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); + break; + default: return; + } + if (_company._collection.Insert(drawingShip, 0) != -1) { + JOptionPane.showMessageDialog(null, "Объект добавлен"); + canvasShow(); + } + else { + JOptionPane.showMessageDialog(null, "Объект не удалось добавить"); + } + } + public Color getColor() { + Color initializator = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0)); + Color color = JColorChooser.showDialog(this, "Select a color", initializator); + return color; + } + public void Init() { + setTitle(title); + setMinimumSize(dimension); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + MaskFormatter mask = null; + try { + mask = new MaskFormatter("##"); + mask.setPlaceholder("00"); + } catch (ParseException e) { + throw new RuntimeException(e); + } + + MaskedTextField = new JFormattedTextField(mask); + + ComboBoxCollections.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + switch (ComboBoxCollections.getSelectedItem().toString()) { + case "Хранилище": + _company = new ShipPortService(getWidth()-200, getHeight()-70, new MassiveGenericObjects()); + break; + } + } + }); + + CreateShipButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingShip"); + } + }); + CreateButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingWarmlyShip"); + } + }); + + RemoveButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (_company == null || MaskedTextField.getText() == null) { + return; + } + int pos = parseInt(MaskedTextField.getText()); + int resultConfirmDialog = JOptionPane.showConfirmDialog(null, + "Удалить", "Удаление", + JOptionPane.YES_NO_OPTION); + if (resultConfirmDialog == JOptionPane.NO_OPTION) return; + if (_company._collection.Remove(pos) != null) { + JOptionPane.showMessageDialog(null, "Объект удален"); + canvasShow(); + } + else { + JOptionPane.showMessageDialog(null, "Объект не удалось удалить"); + } + } + }); + + GoToCheckButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (_company == null) + { + return; + } + DrawingShip ship = null; + int counter = 100; + while (ship == null) + { + ship = _company.GetRandomObject(); + counter--; + if (counter <= 0) + { + break; + } + } + if (ship == null) + { + return; + } + FormWarmlyShip form = new FormWarmlyShip("Теплоход", new Dimension(900,565)); + form.Init(ship); + } + }); + + RandomButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (_company == null) + { + return; + } + FormAdditionalCollection form = new FormAdditionalCollection(); + form.setCompany(_company); + } + }); + + RefreshButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (_company == null) + { + return; + } + canvasShow(); + } + }); + + _canvasWarmlyShip.setBounds(0, 0, getWidth()-200, getHeight()); + ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20); + CreateShipButton.setBounds(getWidth()-190, 60, 150, 30); + CreateButton.setBounds(getWidth()-190, 100, 150, 30); + MaskedTextField.setBounds(getWidth()-190,200,150,30); + RemoveButton.setBounds(getWidth()-190, 240, 150, 30); + GoToCheckButton.setBounds(getWidth()-190, 280, 150, 30); + RandomButton.setBounds(getWidth()-190, 320, 150, 30); + RefreshButton.setBounds(getWidth()-190, getHeight()-90, 150, 30); + + setSize(dimension.width,dimension.height); + setLayout(null); + add(_canvasWarmlyShip); + add(ComboBoxCollections); + add(CreateShipButton); + add(CreateButton); + add(MaskedTextField); + add(RemoveButton); + add(GoToCheckButton); + add(RandomButton); + add(RefreshButton); + setVisible(true); + + addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + _canvasWarmlyShip.setBounds(0, 0, getWidth()-200, getHeight()-70); + ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20); + CreateShipButton.setBounds(getWidth()-190, 60, 150, 30); + CreateButton.setBounds(getWidth()-190, 100, 150, 30); + MaskedTextField.setBounds(getWidth()-190,200,150,30); + RemoveButton.setBounds(getWidth()-190, 240, 150, 30); + GoToCheckButton.setBounds(getWidth()-190, 280, 150, 30); + RandomButton.setBounds(getWidth()-190, 320, 150, 30); + RefreshButton.setBounds(getWidth()-190, getHeight()-90, 150, 30); + } + }); + } +} diff --git a/WarmlyShip/src/FormWarmlyShip.java b/WarmlyShip/src/FormWarmlyShip.java index b712300..14f7a6f 100644 --- a/WarmlyShip/src/FormWarmlyShip.java +++ b/WarmlyShip/src/FormWarmlyShip.java @@ -1,7 +1,7 @@ +import DrawingShip.CanvasFormShipCollection; import DrawingShip.CanvasWarmlyShip; import DrawingShip.DirectionType; import DrawingShip.DrawingShip; -import DrawingShip.DrawingWarmlyShip; import MovementStrategy.*; import javax.swing.*; @@ -10,15 +10,12 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; -import java.util.Random; public class FormWarmlyShip extends JFrame { private String title; private Dimension dimension; private int Width, Height; public CanvasWarmlyShip canvasWarmlyShip = new CanvasWarmlyShip(); - private JButton CreateButton = new JButton("Create warmlyship");; - private JButton CreateShipButton = new JButton("Create ship"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton();; private JButton LeftButton = new JButton();; @@ -30,44 +27,17 @@ public class FormWarmlyShip extends JFrame { 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": - canvasWarmlyShip._drawingShip = new DrawingShip(speed, weight, bodyColor); - canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); - canvasWarmlyShip._drawingShip.SetPosition(StartPositionX, StartPositionY); - canvasWarmlyShip.repaint(); - break; - case "DrawingWarmlyShip": - 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();; - canvasWarmlyShip._drawingShip = new DrawingWarmlyShip(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); - canvasWarmlyShip._drawingShip.SetPosition(StartPositionX, StartPositionY); - canvasWarmlyShip.repaint(); - break; - default: return; - } - _strategy = null; - ComboBoxStrategy.setEnabled(true); - } - public void Init() { + public void Init(DrawingShip ship) { setTitle(title); setMinimumSize(dimension); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Width = getWidth() - 10; Height = getHeight() - 34; + ComboBoxStrategy.setEnabled(true); _strategy = null; + canvasWarmlyShip._drawingShip = ship; - CreateButton.setName("CREATE"); - CreateShipButton.setName("CREATESHIPBUTTON"); Icon iconUp = new ImageIcon("src\\images\\up.jpg"); UpButton.setIcon(iconUp); UpButton.setName("UP"); @@ -81,20 +51,6 @@ public class FormWarmlyShip extends JFrame { Icon iconRight = new ImageIcon("src\\images\\right.jpg"); RightButton.setIcon(iconRight); - CreateButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingWarmlyShip"); - } - }); - - CreateShipButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingShip"); - } - }); - ButtonStrategy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -141,7 +97,6 @@ public class FormWarmlyShip extends JFrame { boolean result = false; switch ((((JButton)(event.getSource())).getName())) { case "UP": - System.out.println("Кнопка UP нажата"); result = canvasWarmlyShip._drawingShip.MoveTransport(DirectionType.Up); break; case "DOWN": @@ -167,16 +122,12 @@ public class FormWarmlyShip extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasWarmlyShip.setBounds(0,0, getWidth(), getHeight()); - 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); @@ -193,8 +144,6 @@ public class FormWarmlyShip extends JFrame { if (canvasWarmlyShip._drawingShip != null) canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); canvasWarmlyShip.setBounds(0,0, getWidth(), getHeight()); - 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); diff --git a/WarmlyShip/src/Main.java b/WarmlyShip/src/Main.java index a785b53..e50a0ea 100644 --- a/WarmlyShip/src/Main.java +++ b/WarmlyShip/src/Main.java @@ -1,7 +1,8 @@ import java.awt.*; + public class Main { public static void main(String[] args) { - FormWarmlyShip form = new FormWarmlyShip("Теплоход", new Dimension(700,500)); + FormShipCollection form = new FormShipCollection("Коллекция судов", new Dimension(1100, 648)); form.Init(); } } \ No newline at end of file diff --git a/WarmlyShip/src/MovementStrategy/MoveableShip.java b/WarmlyShip/src/MovementStrategy/MoveableShip.java index c6e4de3..09f7b85 100644 --- a/WarmlyShip/src/MovementStrategy/MoveableShip.java +++ b/WarmlyShip/src/MovementStrategy/MoveableShip.java @@ -1,8 +1,9 @@ package MovementStrategy; -import DrawingShip.CanvasWarmlyShip; +import DrawingShip.CanvasFormShipCollection; import DrawingShip.DirectionType; import DrawingShip.DrawingShip; +import DrawingShip.CanvasWarmlyShip; public class MoveableShip implements IMoveableObjects{ private CanvasWarmlyShip canvas = new CanvasWarmlyShip(); diff --git a/WarmlyShip/src/MovementStrategy/MovementDirection.java b/WarmlyShip/src/MovementStrategy/MovementDirection.java index c52f124..4a0d6b3 100644 --- a/WarmlyShip/src/MovementStrategy/MovementDirection.java +++ b/WarmlyShip/src/MovementStrategy/MovementDirection.java @@ -5,4 +5,5 @@ public enum MovementDirection { Down, Left, Right + } -- 2.25.1 From cb4a9332af0212ccc87451133e90e77028b09649 Mon Sep 17 00:00:00 2001 From: IlyasValiulov <148232695+IlyasValiulov@users.noreply.github.com> Date: Thu, 4 Apr 2024 11:39:57 +0400 Subject: [PATCH 4/4] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=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=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdditionalCollections.java | 61 ----- .../AbstractCompany.java | 34 --- .../ICollectionGenericObjects.java | 12 - .../MassiveGenericObjects.java | 75 ------ .../ShipPortService.java | 50 ---- .../DrawingShip/CanvasFormShipCollection.java | 31 --- .../src/DrawingShip/CanvasWarmlyShip.java | 1 - WarmlyShip/src/DrawingShip/DrawingShip.java | 12 +- .../src/DrawingShip/DrawingWarmlyShip.java | 11 +- WarmlyShip/src/Entities/EntityShip.java | 2 - WarmlyShip/src/Entities/EntityWarmlyShip.java | 2 - WarmlyShip/src/FormAdditionalCollection.java | 137 ----------- WarmlyShip/src/FormShipCollection.java | 220 ------------------ WarmlyShip/src/FormWarmlyShip.java | 59 ++++- WarmlyShip/src/Main.java | 3 +- .../src/MovementStrategy/MoveableShip.java | 3 +- .../MovementStrategy/MovementDirection.java | 1 - 17 files changed, 60 insertions(+), 654 deletions(-) delete mode 100644 WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java delete mode 100644 WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java delete mode 100644 WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java delete mode 100644 WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java delete mode 100644 WarmlyShip/src/CollectionGenericObjects/ShipPortService.java delete mode 100644 WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java delete mode 100644 WarmlyShip/src/FormAdditionalCollection.java delete mode 100644 WarmlyShip/src/FormShipCollection.java diff --git a/WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java b/WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java deleted file mode 100644 index ef5318a..0000000 --- a/WarmlyShip/src/CollectionAdditionalObjects/AdditionalCollections.java +++ /dev/null @@ -1,61 +0,0 @@ -package CollectionAdditionalObjects; - -import DiffetentsDrawingDecks.IDifferentDecks; -import DrawingShip.DrawingShip; -import DrawingShip.DrawingWarmlyShip; -import Entities.EntityShip; -import Entities.EntityWarmlyShip; - -import java.lang.reflect.Array; -import java.util.Random; - -public class AdditionalCollections { - public T[] _collectionEntity; - public U[] _collectionDecks; - public AdditionalCollections(int size, Class type1, Class type2) { - _collectionEntity = (T[]) Array.newInstance(type1, size); - _collectionDecks = (U[]) Array.newInstance(type2, size); - CountEntities = size; - CountDecks = size; - } - public int CountEntities; - public int CountDecks; - public int Insert(T entity) { - int index = 0; - while (index < CountEntities) { - if (_collectionEntity[index] == null) - { - _collectionEntity[index] = entity; - return index; - } - ++index; - } - return -1; - } - public int Insert(U decks) { - int index = 0; - while (index < CountDecks) { - if (_collectionDecks[index] == null) - { - _collectionDecks[index] = decks; - return index; - } - ++index; - } - return -1; - } - public DrawingShip CreateAdditionalCollectionShip() { - Random random = new Random(); - if (_collectionEntity == null || _collectionDecks == null) return null; - T entity = _collectionEntity[random.nextInt(CountEntities)]; - U decks = _collectionDecks[random.nextInt(CountDecks)]; - DrawingShip drawingShip = null; - if (entity instanceof EntityWarmlyShip) { - drawingShip = new DrawingWarmlyShip((EntityWarmlyShip) entity, decks); - } - else { - drawingShip = new DrawingShip(entity, decks); - } - return drawingShip; - } -} diff --git a/WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java b/WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java deleted file mode 100644 index 676888e..0000000 --- a/WarmlyShip/src/CollectionGenericObjects/AbstractCompany.java +++ /dev/null @@ -1,34 +0,0 @@ -package CollectionGenericObjects; - -import DrawingShip.DrawingShip; - -import java.awt.*; - -public abstract class AbstractCompany { - protected int _placeSizeWidth = 210; - protected int _placeSizeHeight = 150; - protected int _pictureWidth; - protected int _pictureHeight; - public ICollectionGenericObjects _collection = null; - private int GetMaxCount() { - return _pictureWidth * _pictureHeight / (_placeSizeWidth * _placeSizeHeight); - } - public AbstractCompany(int picWidth, int picHeight, ICollectionGenericObjects collection) - { - _pictureWidth = picWidth; - _pictureHeight = picHeight; - _collection = collection; - _collection.SetMaxCount(GetMaxCount(), (Class) DrawingShip.class); - } - //перегрузка операторов в джаве невозможна - public DrawingShip GetRandomObject() - { - return _collection.Get((int)(Math.random()*GetMaxCount() + 0)); - } - public void SetPosition() - { - SetObjectsPosition(); - } - public abstract void DrawBackgound(Graphics graphics); - protected abstract void SetObjectsPosition(); -} diff --git a/WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java b/WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java deleted file mode 100644 index a633cfe..0000000 --- a/WarmlyShip/src/CollectionGenericObjects/ICollectionGenericObjects.java +++ /dev/null @@ -1,12 +0,0 @@ -package CollectionGenericObjects; - -public interface ICollectionGenericObjects -{ - int getCount(); - void SetMaxCount(int count, Class type); - int Insert(T obj); - int Insert(T obj, int position); - T Remove(int position); - T Get(int position); -} - diff --git a/WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java b/WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java deleted file mode 100644 index 063fb44..0000000 --- a/WarmlyShip/src/CollectionGenericObjects/MassiveGenericObjects.java +++ /dev/null @@ -1,75 +0,0 @@ -package CollectionGenericObjects; - -import java.lang.reflect.Array; - -public class MassiveGenericObjects implements ICollectionGenericObjects{ - private T[] _collection; - private int Count; - public void SetMaxCount(int size, Class type) { - if (size > 0) { - _collection = (T[]) Array.newInstance(type, size); - Count = size; - } - } - @Override - public int getCount() { - return Count; - } - @Override - public int Insert(T obj) { - int index = 0; - while (index < getCount()) - { - if (_collection[index] == null) - { - _collection[index] = obj; - return index; - } - ++index; - } - return -1; - } - @Override - public int Insert(T obj, int position) { - if (position >= getCount() || position < 0) - return -1; - if (_collection[position] == null) { - _collection[position] = obj; - return position; - } - int index = position + 1; - while (index < getCount()) - { - if (_collection[index] == null) - { - _collection[index] = obj; - return index; - } - ++index; - } - index = position - 1; - while (index >= 0) - { - if (_collection[index] == null) - { - _collection[index] = obj; - return index; - } - --index; - } - return -1; - } - @Override - public T Remove(int position) { - if (position >= getCount() || position < 0) - return null; - T obj = (T) _collection[position]; - _collection[position] = null; - return obj; - } - @Override - public T Get(int position) { - if (position >= getCount() || position < 0) return null; - return (T) _collection[position]; - } -} diff --git a/WarmlyShip/src/CollectionGenericObjects/ShipPortService.java b/WarmlyShip/src/CollectionGenericObjects/ShipPortService.java deleted file mode 100644 index 693c0df..0000000 --- a/WarmlyShip/src/CollectionGenericObjects/ShipPortService.java +++ /dev/null @@ -1,50 +0,0 @@ -package CollectionGenericObjects; - -import DrawingShip.DrawingShip; - -import java.awt.*; - -public class ShipPortService extends AbstractCompany{ - public ShipPortService(int picWidth, int picHeight, ICollectionGenericObjects collection) { - super(picWidth, picHeight, collection); - } - @Override - public void DrawBackgound(Graphics g) { - //рисуем пристань - int width = _pictureWidth / _placeSizeWidth; - int height = _pictureHeight / _placeSizeHeight; - g.setColor(Color.BLACK); - for (int i = 0; i < width; i++) - { - for (int j = 0; j < height + 1; ++j) - { - g.drawLine(i * _placeSizeWidth, j * _placeSizeHeight, - i * _placeSizeWidth + _placeSizeWidth - 5, j * _placeSizeHeight ); - } - } - } - @Override - protected void SetObjectsPosition() { - int width = _pictureWidth / _placeSizeWidth; - int height = _pictureHeight / _placeSizeHeight; - - int curWidth = width - 1; - int curHeight = 0; - for (int i = 0; i < (_collection.getCount()); i++) { - if (_collection.Get(i) != null) { - _collection.Get(i).SetPictureSize(_pictureWidth, _pictureHeight); - _collection.Get(i).SetPosition(_placeSizeWidth * curWidth + 20, curHeight * _placeSizeHeight + 4); - } - if (curWidth > 0) - curWidth--; - else { - curWidth = width - 1; - curHeight++; - } - if (curHeight > height) { - return; - } - } - } -} - diff --git a/WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java b/WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java deleted file mode 100644 index 01f9908..0000000 --- a/WarmlyShip/src/DrawingShip/CanvasFormShipCollection.java +++ /dev/null @@ -1,31 +0,0 @@ -package DrawingShip; - -import CollectionGenericObjects.AbstractCompany; - -import javax.swing.*; -import java.awt.*; - -public class CanvasFormShipCollection extends JComponent -{ - public AbstractCompany company = null; - public void SetCollectionToCanvas(AbstractCompany company) { - this.company = company; - } - public CanvasFormShipCollection(){}; - public void paintComponent(Graphics g) { - super.paintComponents(g); - if (company == null || company._collection == null) { - return; - } - company.DrawBackgound(g); - for (int i = 0; i < company._collection.getCount(); i++) { - - Graphics2D g2d = (Graphics2D) g; - T obj = (T)company._collection.Get(i); - if (obj instanceof DrawingShip) { - ((DrawingShip) obj).DrawTransport(g2d); - } - } - super.repaint(); - } -} diff --git a/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java b/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java index 5cc72b3..11725eb 100644 --- a/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java +++ b/WarmlyShip/src/DrawingShip/CanvasWarmlyShip.java @@ -16,4 +16,3 @@ public class CanvasWarmlyShip extends JComponent { super.repaint(); } } - diff --git a/WarmlyShip/src/DrawingShip/DrawingShip.java b/WarmlyShip/src/DrawingShip/DrawingShip.java index a81a88c..b52faa1 100644 --- a/WarmlyShip/src/DrawingShip/DrawingShip.java +++ b/WarmlyShip/src/DrawingShip/DrawingShip.java @@ -51,16 +51,6 @@ public class DrawingShip extends JPanel { EntityShip = new EntityShip(speed, weight, bodycolor); SetAmountandTypeDecks(); } - protected DrawingShip(int drawingShipWidth, int drawingShipHeight) { - super(); - this.drawingShipWidth = drawingShipWidth; - this.drawingShipHeight = drawingShipHeight; - } - //добавил - public DrawingShip(EntityShip entity, IDifferentDecks decks) { - EntityShip = entity; - drawingDecks = decks; - } public boolean SetPictureSize(int width, int height) { if (width < drawingShipWidth || height < drawingShipHeight) return false; picture_width = width; @@ -128,7 +118,7 @@ public class DrawingShip extends JPanel { if (EntityShip == null || _StartPosX == null || _StartPosY == null) return; int y = _StartPosY; g.setColor(EntityShip.getBodyColor()); - if (drawingDecks != null && drawingDecks.getNumberOfDecks() != null) { + if (drawingDecks.getNumberOfDecks() != null) { switch (drawingDecks.getNumberOfDecks()) { case OneDeck: drawingDecks.DrawDecks(g, _StartPosX + 30, y, 100, 15, EntityShip.getBodyColor()); diff --git a/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java b/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java index e19ebca..a3d7ec7 100644 --- a/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java +++ b/WarmlyShip/src/DrawingShip/DrawingWarmlyShip.java @@ -1,6 +1,4 @@ package DrawingShip; -import DiffetentsDrawingDecks.IDifferentDecks; -import Entities.EntityShip; import Entities.EntityWarmlyShip; import java.awt.*; @@ -10,11 +8,6 @@ public class DrawingWarmlyShip extends DrawingShip { EntityShip = new EntityWarmlyShip(speed, weight, bodycolor, additionalcolor, sheeppipes, fueltank); SetAmountandTypeDecks(); } - //добавил - public DrawingWarmlyShip(EntityWarmlyShip entity, IDifferentDecks decks) { - EntityShip = entity; - drawingDecks = decks; - } @Override public void DrawTransport(Graphics2D g) { if (EntityShip == null || !(EntityShip instanceof EntityWarmlyShip warmlyship) || _StartPosX == null || _StartPosY == null) @@ -29,7 +22,7 @@ public class DrawingWarmlyShip extends DrawingShip { } super.DrawTransport(g); int count_decks = 0; - if (drawingDecks != null && drawingDecks.getNumberOfDecks() != null) { + if (drawingDecks.getNumberOfDecks() != null) { switch (drawingDecks.getNumberOfDecks()) { case OneDeck: count_decks = 1; @@ -42,7 +35,7 @@ public class DrawingWarmlyShip extends DrawingShip { break; } } - if (warmlyship.getFuelTank()) { + if (warmlyship.FuelTank) { g.setColor(warmlyship.getAdditionalColor()); g.fillRect(_StartPosX + 40, _StartPosY + count_decks * 15 + 30, 70, 10); } diff --git a/WarmlyShip/src/Entities/EntityShip.java b/WarmlyShip/src/Entities/EntityShip.java index abd45ce..ba40143 100644 --- a/WarmlyShip/src/Entities/EntityShip.java +++ b/WarmlyShip/src/Entities/EntityShip.java @@ -4,9 +4,7 @@ import java.awt.*; public class EntityShip { private int Speed; - public int getSpeed() {return Speed;} private double Weight; - public double getWeight() {return Weight;} private Color BodyColor; public Color getBodyColor() {return BodyColor;} public double Step; diff --git a/WarmlyShip/src/Entities/EntityWarmlyShip.java b/WarmlyShip/src/Entities/EntityWarmlyShip.java index 80313ad..8863dcc 100644 --- a/WarmlyShip/src/Entities/EntityWarmlyShip.java +++ b/WarmlyShip/src/Entities/EntityWarmlyShip.java @@ -5,9 +5,7 @@ public class EntityWarmlyShip extends EntityShip{ public Color AdditionalColor; public Color getAdditionalColor() {return AdditionalColor;} public boolean ShipPipes; - public boolean getShipPipes() {return ShipPipes;} public boolean FuelTank; - public boolean getFuelTank() {return FuelTank;} public EntityWarmlyShip(int speed, double weight, Color bodyColor, Color additionalcolor, boolean sheeppipes, boolean fueltank) { super(speed, weight, bodyColor); diff --git a/WarmlyShip/src/FormAdditionalCollection.java b/WarmlyShip/src/FormAdditionalCollection.java deleted file mode 100644 index 849c2dc..0000000 --- a/WarmlyShip/src/FormAdditionalCollection.java +++ /dev/null @@ -1,137 +0,0 @@ -import CollectionAdditionalObjects.AdditionalCollections; -import CollectionGenericObjects.AbstractCompany; -import DiffetentsDrawingDecks.DrawingDecksType1; -import DiffetentsDrawingDecks.DrawingDecksType2; -import DiffetentsDrawingDecks.DrawingDecksType3; -import DiffetentsDrawingDecks.IDifferentDecks; -import DrawingShip.DrawingShip; -import DrawingShip.DrawingWarmlyShip; -import DrawingShip.CanvasWarmlyShip; -import Entities.EntityShip; -import Entities.EntityWarmlyShip; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Random; - -public class FormAdditionalCollection extends JFrame { - public DrawingShip drawingShip = null; - private AbstractCompany company = null; - private CanvasWarmlyShip canvasship = new CanvasWarmlyShip(); - private AdditionalCollections additionalCollection = null; - private Random random = new Random(); - private JButton buttonGenerate = new JButton("Создать"); - private JList listEntity = new JList(); - private JList listDecks = new JList(); - public FormAdditionalCollection() { - setTitle("Random ship"); - setMinimumSize(new Dimension(650,310)); - additionalCollection = new AdditionalCollections(3, - (Class) EntityShip.class, (Class) IDifferentDecks.class); - AddEntities(); - AddDecks(); - buttonGenerate.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - drawingShip = additionalCollection.CreateAdditionalCollectionShip(); - drawingShip.SetPictureSize(getWidth(), getHeight()); - drawingShip.SetPosition(50,50); - canvasship._drawingShip = drawingShip; - canvasship.repaint(); - DrawingShip copyShip; - if (drawingShip instanceof DrawingWarmlyShip) - copyShip = new DrawingWarmlyShip((EntityWarmlyShip) drawingShip.EntityShip, drawingShip.drawingDecks); - else - copyShip = new DrawingShip(drawingShip.EntityShip, drawingShip.drawingDecks); - company._collection.Insert(copyShip); - FormShipCollection.canvasShow(); - - String[] data1 = new String[additionalCollection.CountEntities]; - for (int i = 0; i < additionalCollection.CountEntities; i++) { - EntityShip entity = additionalCollection._collectionEntity[i]; - data1[i] = ToString(entity); - } - String[] data2 = new String[additionalCollection.CountDecks]; - for (int i = 0; i < additionalCollection.CountDecks; i++) { - IDifferentDecks decks = additionalCollection._collectionDecks[i]; - data2[i] = ToString(decks); - } - listEntity.setListData(data1); - listDecks.setListData(data2); - } - }); - buttonGenerate.setBounds(450, 10, 100, 50); - add(buttonGenerate); - listEntity.setBounds(10,200,300,60); - listDecks.setBounds(320,200,300,60); - add(listEntity); - add(listDecks); - add(canvasship); - setVisible(true); - } - private String ToString(EntityShip entity) { - String str = ""; - if (entity instanceof EntityWarmlyShip) str += "EntityWarmlyShip "; - else str += "EntityShip "; - str += entity.getBodyColor().toString(); - return str; - } - private String ToString(IDifferentDecks decks) { - if (decks == null || decks.getNumberOfDecks() == null) - return "Dont have decks"; - String str = "Deck "; - if (decks instanceof DrawingDecksType1) str += "Type 1 "; - else if (decks instanceof DrawingDecksType2) str += "Type 2 "; - else str += "Type 3 "; - str += decks.getNumberOfDecks().toString(); - return str; - } - public void AddEntities() { - for (int i = 0; i < additionalCollection.CountEntities; i++) { - random = new Random(); - int speed = random.nextInt(100, 300); - double weight = random.nextInt(1000, 3000); - Color bodycolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); - EntityShip entity; - if (random.nextBoolean()) { - entity = new EntityShip(speed, weight, bodycolor); - } - else { - Color additionalcolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); - boolean sheeppipes = random.nextBoolean(); - boolean fueltaln = random.nextBoolean(); - entity = new EntityWarmlyShip(speed, weight, bodycolor, - additionalcolor, sheeppipes, fueltaln); - } - additionalCollection.Insert(entity); - } - } - public void AddDecks() { - for (int i = 0; i < additionalCollection.CountDecks; i++) { - random = new Random(); - Integer numberOfDecks = random.nextInt(0, 4); - IDifferentDecks drawingDecks = null; - switch (random.nextInt(0,4)) { - case 1: - drawingDecks = new DrawingDecksType1(); - break; - case 2: - drawingDecks = new DrawingDecksType2(); - break; - case 3: - drawingDecks = new DrawingDecksType3(); - break; - default: - numberOfDecks = null; - break; - } - if (drawingDecks != null) drawingDecks.setNumberOfDecks(numberOfDecks); - additionalCollection.Insert(drawingDecks); - } - } - void setCompany(AbstractCompany company) { - this.company = company; - } -} diff --git a/WarmlyShip/src/FormShipCollection.java b/WarmlyShip/src/FormShipCollection.java deleted file mode 100644 index 3b09d7b..0000000 --- a/WarmlyShip/src/FormShipCollection.java +++ /dev/null @@ -1,220 +0,0 @@ -import CollectionGenericObjects.AbstractCompany; -import CollectionGenericObjects.MassiveGenericObjects; -import CollectionGenericObjects.ShipPortService; -import DrawingShip.CanvasFormShipCollection; -import DrawingShip.DrawingShip; -import DrawingShip.DrawingWarmlyShip; - -import javax.swing.*; -import javax.swing.text.MaskFormatter; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.text.ParseException; -import java.util.Random; - -import static java.lang.Integer.parseInt; - -public class FormShipCollection extends JFrame{ - private String title; - private Dimension dimension; - public static CanvasFormShipCollection _canvasWarmlyShip = new CanvasFormShipCollection(); - private static AbstractCompany _company = null; - private JButton CreateButton = new JButton("Create warmlyship");; - private JButton CreateShipButton = new JButton("Create ship"); - private JButton RemoveButton = new JButton("Remove"); - private JButton GoToCheckButton = new JButton("Check"); - private JButton RandomButton = new JButton("RandomShip"); - private JButton RefreshButton = new JButton("Refresh"); - private JComboBox ComboBoxCollections = new JComboBox(new String[]{"", "Хранилище"}); - private JFormattedTextField MaskedTextField; - public FormShipCollection(String title, Dimension dimension) { - this.title = title; - this.dimension = dimension; - } - public static void canvasShow() { - _company.SetPosition(); - _canvasWarmlyShip.SetCollectionToCanvas(_company); - _canvasWarmlyShip.repaint(); - } - private void CreateObject(String typeOfClass) { - if (_company == null) return; - int speed = (int)(Math.random() * 300 + 100); - double weight = (double)(Math.random() * 3000 + 1000); - Color bodyColor = getColor(); - DrawingShip drawingShip; - switch (typeOfClass) { - case "DrawingShip": - drawingShip = new DrawingShip(speed, weight, bodyColor); - break; - case "DrawingWarmlyShip": - Color additionalColor = getColor(); - boolean sheepPipes = new Random().nextBoolean(); - boolean fuelTank = new Random().nextBoolean();; - drawingShip = new DrawingWarmlyShip(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - break; - default: return; - } - if (_company._collection.Insert(drawingShip, 0) != -1) { - JOptionPane.showMessageDialog(null, "Объект добавлен"); - canvasShow(); - } - else { - JOptionPane.showMessageDialog(null, "Объект не удалось добавить"); - } - } - public Color getColor() { - Color initializator = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0)); - Color color = JColorChooser.showDialog(this, "Select a color", initializator); - return color; - } - public void Init() { - setTitle(title); - setMinimumSize(dimension); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - MaskFormatter mask = null; - try { - mask = new MaskFormatter("##"); - mask.setPlaceholder("00"); - } catch (ParseException e) { - throw new RuntimeException(e); - } - - MaskedTextField = new JFormattedTextField(mask); - - ComboBoxCollections.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - switch (ComboBoxCollections.getSelectedItem().toString()) { - case "Хранилище": - _company = new ShipPortService(getWidth()-200, getHeight()-70, new MassiveGenericObjects()); - break; - } - } - }); - - CreateShipButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingShip"); - } - }); - CreateButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingWarmlyShip"); - } - }); - - RemoveButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (_company == null || MaskedTextField.getText() == null) { - return; - } - int pos = parseInt(MaskedTextField.getText()); - int resultConfirmDialog = JOptionPane.showConfirmDialog(null, - "Удалить", "Удаление", - JOptionPane.YES_NO_OPTION); - if (resultConfirmDialog == JOptionPane.NO_OPTION) return; - if (_company._collection.Remove(pos) != null) { - JOptionPane.showMessageDialog(null, "Объект удален"); - canvasShow(); - } - else { - JOptionPane.showMessageDialog(null, "Объект не удалось удалить"); - } - } - }); - - GoToCheckButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (_company == null) - { - return; - } - DrawingShip ship = null; - int counter = 100; - while (ship == null) - { - ship = _company.GetRandomObject(); - counter--; - if (counter <= 0) - { - break; - } - } - if (ship == null) - { - return; - } - FormWarmlyShip form = new FormWarmlyShip("Теплоход", new Dimension(900,565)); - form.Init(ship); - } - }); - - RandomButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (_company == null) - { - return; - } - FormAdditionalCollection form = new FormAdditionalCollection(); - form.setCompany(_company); - } - }); - - RefreshButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (_company == null) - { - return; - } - canvasShow(); - } - }); - - _canvasWarmlyShip.setBounds(0, 0, getWidth()-200, getHeight()); - ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20); - CreateShipButton.setBounds(getWidth()-190, 60, 150, 30); - CreateButton.setBounds(getWidth()-190, 100, 150, 30); - MaskedTextField.setBounds(getWidth()-190,200,150,30); - RemoveButton.setBounds(getWidth()-190, 240, 150, 30); - GoToCheckButton.setBounds(getWidth()-190, 280, 150, 30); - RandomButton.setBounds(getWidth()-190, 320, 150, 30); - RefreshButton.setBounds(getWidth()-190, getHeight()-90, 150, 30); - - setSize(dimension.width,dimension.height); - setLayout(null); - add(_canvasWarmlyShip); - add(ComboBoxCollections); - add(CreateShipButton); - add(CreateButton); - add(MaskedTextField); - add(RemoveButton); - add(GoToCheckButton); - add(RandomButton); - add(RefreshButton); - setVisible(true); - - addComponentListener(new ComponentAdapter() { - public void componentResized(ComponentEvent e) { - _canvasWarmlyShip.setBounds(0, 0, getWidth()-200, getHeight()-70); - ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20); - CreateShipButton.setBounds(getWidth()-190, 60, 150, 30); - CreateButton.setBounds(getWidth()-190, 100, 150, 30); - MaskedTextField.setBounds(getWidth()-190,200,150,30); - RemoveButton.setBounds(getWidth()-190, 240, 150, 30); - GoToCheckButton.setBounds(getWidth()-190, 280, 150, 30); - RandomButton.setBounds(getWidth()-190, 320, 150, 30); - RefreshButton.setBounds(getWidth()-190, getHeight()-90, 150, 30); - } - }); - } -} diff --git a/WarmlyShip/src/FormWarmlyShip.java b/WarmlyShip/src/FormWarmlyShip.java index 14f7a6f..b712300 100644 --- a/WarmlyShip/src/FormWarmlyShip.java +++ b/WarmlyShip/src/FormWarmlyShip.java @@ -1,7 +1,7 @@ -import DrawingShip.CanvasFormShipCollection; import DrawingShip.CanvasWarmlyShip; import DrawingShip.DirectionType; import DrawingShip.DrawingShip; +import DrawingShip.DrawingWarmlyShip; import MovementStrategy.*; import javax.swing.*; @@ -10,12 +10,15 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; +import java.util.Random; public class FormWarmlyShip extends JFrame { private String title; private Dimension dimension; private int Width, Height; public CanvasWarmlyShip canvasWarmlyShip = new CanvasWarmlyShip(); + private JButton CreateButton = new JButton("Create warmlyship");; + private JButton CreateShipButton = new JButton("Create ship"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton();; private JButton LeftButton = new JButton();; @@ -27,17 +30,44 @@ public class FormWarmlyShip extends JFrame { this.title = title; this.dimension = dimension; } - public void Init(DrawingShip ship) { + 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": + canvasWarmlyShip._drawingShip = new DrawingShip(speed, weight, bodyColor); + canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); + canvasWarmlyShip._drawingShip.SetPosition(StartPositionX, StartPositionY); + canvasWarmlyShip.repaint(); + break; + case "DrawingWarmlyShip": + 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();; + canvasWarmlyShip._drawingShip = new DrawingWarmlyShip(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); + canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); + canvasWarmlyShip._drawingShip.SetPosition(StartPositionX, StartPositionY); + canvasWarmlyShip.repaint(); + break; + default: return; + } + _strategy = null; + ComboBoxStrategy.setEnabled(true); + } + public void Init() { setTitle(title); setMinimumSize(dimension); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Width = getWidth() - 10; Height = getHeight() - 34; - ComboBoxStrategy.setEnabled(true); _strategy = null; - canvasWarmlyShip._drawingShip = ship; + CreateButton.setName("CREATE"); + CreateShipButton.setName("CREATESHIPBUTTON"); Icon iconUp = new ImageIcon("src\\images\\up.jpg"); UpButton.setIcon(iconUp); UpButton.setName("UP"); @@ -51,6 +81,20 @@ public class FormWarmlyShip extends JFrame { Icon iconRight = new ImageIcon("src\\images\\right.jpg"); RightButton.setIcon(iconRight); + CreateButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingWarmlyShip"); + } + }); + + CreateShipButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingShip"); + } + }); + ButtonStrategy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -97,6 +141,7 @@ public class FormWarmlyShip extends JFrame { boolean result = false; switch ((((JButton)(event.getSource())).getName())) { case "UP": + System.out.println("Кнопка UP нажата"); result = canvasWarmlyShip._drawingShip.MoveTransport(DirectionType.Up); break; case "DOWN": @@ -122,12 +167,16 @@ public class FormWarmlyShip extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasWarmlyShip.setBounds(0,0, getWidth(), getHeight()); + 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); @@ -144,6 +193,8 @@ public class FormWarmlyShip extends JFrame { if (canvasWarmlyShip._drawingShip != null) canvasWarmlyShip._drawingShip.SetPictureSize(Width, Height); canvasWarmlyShip.setBounds(0,0, getWidth(), getHeight()); + 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); diff --git a/WarmlyShip/src/Main.java b/WarmlyShip/src/Main.java index e50a0ea..a785b53 100644 --- a/WarmlyShip/src/Main.java +++ b/WarmlyShip/src/Main.java @@ -1,8 +1,7 @@ import java.awt.*; - public class Main { public static void main(String[] args) { - FormShipCollection form = new FormShipCollection("Коллекция судов", new Dimension(1100, 648)); + FormWarmlyShip form = new FormWarmlyShip("Теплоход", new Dimension(700,500)); form.Init(); } } \ No newline at end of file diff --git a/WarmlyShip/src/MovementStrategy/MoveableShip.java b/WarmlyShip/src/MovementStrategy/MoveableShip.java index 09f7b85..c6e4de3 100644 --- a/WarmlyShip/src/MovementStrategy/MoveableShip.java +++ b/WarmlyShip/src/MovementStrategy/MoveableShip.java @@ -1,9 +1,8 @@ package MovementStrategy; -import DrawingShip.CanvasFormShipCollection; +import DrawingShip.CanvasWarmlyShip; import DrawingShip.DirectionType; import DrawingShip.DrawingShip; -import DrawingShip.CanvasWarmlyShip; public class MoveableShip implements IMoveableObjects{ private CanvasWarmlyShip canvas = new CanvasWarmlyShip(); diff --git a/WarmlyShip/src/MovementStrategy/MovementDirection.java b/WarmlyShip/src/MovementStrategy/MovementDirection.java index 4a0d6b3..c52f124 100644 --- a/WarmlyShip/src/MovementStrategy/MovementDirection.java +++ b/WarmlyShip/src/MovementStrategy/MovementDirection.java @@ -5,5 +5,4 @@ public enum MovementDirection { Down, Left, Right - } -- 2.25.1