From 00b64fdcddb93160dd4c835d69e2bafb864119cd Mon Sep 17 00:00:00 2001 From: Esenia12 <148366616+Esenia12@users.noreply.github.com> Date: Sun, 12 May 2024 17:20:10 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DrawingObjects/DrawingDumpTruck.java | 15 ++- .../DrawingObjects/DrawingTruck.java | 31 +++++-- .../Entities/EntityDumpTruck.java | 2 +- .../{ => DumpTruck}/Entities/EntityTruck.java | 2 +- src/src/DumpTruck/FrameDop.java | 17 ++++ src/src/{ => DumpTruck}/FrameDumpTruck.java | 4 +- src/src/DumpTruck/FrameTruckCollection.java | 20 ++++ src/src/DumpTruck/Generics/GenericDop.java | 61 ++++++++++++ src/src/DumpTruck/Generics/SetGeneric.java | 54 +++++++++++ .../Generics/TrucksGenericCollection.java | 70 ++++++++++++++ .../MovementStrategy/AbstractStrategy.java | 2 +- .../MovementStrategy/DrawingObjectTruck.java | 4 +- .../MovementStrategy/IMoveableObject.java | 2 +- .../MovementStrategy/MoveToBorder.java | 2 +- .../MovementStrategy/MoveToCenter.java | 2 +- .../MovementStrategy/ObjectParameters.java | 2 +- .../MovementStrategy/Status.java | 2 +- src/src/DumpTruck/PictureBoxCollection.java | 92 +++++++++++++++++++ src/src/DumpTruck/PictureBoxDop.java | 50 ++++++++++ .../{ => DumpTruck}/PictureBoxDumpTruck.java | 65 ++++++++----- .../{ => DumpTruck}/Wheels/DrawingWheels.java | 2 +- .../Wheels/DrawingWheelsCircles.java | 2 +- .../Wheels/DrawingWheelsStar.java | 2 +- .../Wheels/IDrawingWheels.java | 2 +- .../{ => DumpTruck}/Wheels/WheelNumber.java | 2 +- 25 files changed, 458 insertions(+), 51 deletions(-) rename src/src/{ => DumpTruck}/DrawingObjects/DrawingDumpTruck.java (79%) rename src/src/{ => DumpTruck}/DrawingObjects/DrawingTruck.java (83%) rename src/src/{ => DumpTruck}/Entities/EntityDumpTruck.java (96%) rename src/src/{ => DumpTruck}/Entities/EntityTruck.java (95%) create mode 100644 src/src/DumpTruck/FrameDop.java rename src/src/{ => DumpTruck}/FrameDumpTruck.java (81%) create mode 100644 src/src/DumpTruck/FrameTruckCollection.java create mode 100644 src/src/DumpTruck/Generics/GenericDop.java create mode 100644 src/src/DumpTruck/Generics/SetGeneric.java create mode 100644 src/src/DumpTruck/Generics/TrucksGenericCollection.java rename src/src/{ => DumpTruck}/MovementStrategy/AbstractStrategy.java (98%) rename src/src/{ => DumpTruck}/MovementStrategy/DrawingObjectTruck.java (93%) rename src/src/{ => DumpTruck}/MovementStrategy/IMoveableObject.java (86%) rename src/src/{ => DumpTruck}/MovementStrategy/MoveToBorder.java (96%) rename src/src/{ => DumpTruck}/MovementStrategy/MoveToCenter.java (97%) rename src/src/{ => DumpTruck}/MovementStrategy/ObjectParameters.java (95%) rename src/src/{ => DumpTruck}/MovementStrategy/Status.java (63%) create mode 100644 src/src/DumpTruck/PictureBoxCollection.java create mode 100644 src/src/DumpTruck/PictureBoxDop.java rename src/src/{ => DumpTruck}/PictureBoxDumpTruck.java (74%) rename src/src/{ => DumpTruck}/Wheels/DrawingWheels.java (98%) rename src/src/{ => DumpTruck}/Wheels/DrawingWheelsCircles.java (98%) rename src/src/{ => DumpTruck}/Wheels/DrawingWheelsStar.java (98%) rename src/src/{ => DumpTruck}/Wheels/IDrawingWheels.java (88%) rename src/src/{ => DumpTruck}/Wheels/WheelNumber.java (68%) diff --git a/src/src/DrawingObjects/DrawingDumpTruck.java b/src/src/DumpTruck/DrawingObjects/DrawingDumpTruck.java similarity index 79% rename from src/src/DrawingObjects/DrawingDumpTruck.java rename to src/src/DumpTruck/DrawingObjects/DrawingDumpTruck.java index a6cae43..3914d18 100644 --- a/src/src/DrawingObjects/DrawingDumpTruck.java +++ b/src/src/DumpTruck/DrawingObjects/DrawingDumpTruck.java @@ -1,6 +1,6 @@ -package DrawingObjects; -import Entities.*; - +package DumpTruck.DrawingObjects; +import DumpTruck.Entities.*; +import DumpTruck.Wheels.IDrawingWheels; import java.awt.*; public class DrawingDumpTruck extends DrawingTruck { @@ -12,7 +12,14 @@ public class DrawingDumpTruck extends DrawingTruck { setEntityTruck(new EntityDumpTruck(speed, weight, bodyColor, tent, dumpBox, tentColor, dumpBoxColor)); } } - + public DrawingDumpTruck(EntityDumpTruck entityDumpTruck, int width, int height, int wheelNumber, IDrawingWheels iDrawingWheels) + { + super(entityDumpTruck, width, height, wheelNumber, iDrawingWheels); + if (getEntityTruck() != null) + { + setEntityTruck(entityDumpTruck); + } + } @Override public void DrawTransport(Graphics2D g2D) { if (!(getEntityTruck() instanceof EntityDumpTruck dumpTruck)) { diff --git a/src/src/DrawingObjects/DrawingTruck.java b/src/src/DumpTruck/DrawingObjects/DrawingTruck.java similarity index 83% rename from src/src/DrawingObjects/DrawingTruck.java rename to src/src/DumpTruck/DrawingObjects/DrawingTruck.java index 558a819..8fb1c98 100644 --- a/src/src/DrawingObjects/DrawingTruck.java +++ b/src/src/DumpTruck/DrawingObjects/DrawingTruck.java @@ -1,12 +1,12 @@ -package DrawingObjects; +package DumpTruck.DrawingObjects; import java.awt.*; import java.util.Random; -import Entities.*; +import DumpTruck.Entities.*; import DumpTruck.DirectionType; -import Wheels.*; - +import DumpTruck.Wheels.*; +import DumpTruck.MovementStrategy.*; public class DrawingTruck { private EntityTruck entityTruck; @@ -18,8 +18,7 @@ public class DrawingTruck { this.entityTruck = entityTruck; } - private IDrawingWheels drawingWheels; - + private IDrawingWheels drawingWheels; /// объявление объекта от интерфейса private int _pictureWidth; private int _pictureHeight; protected int _startPosX; @@ -42,8 +41,10 @@ public class DrawingTruck { public int getHeight() { return _truckHeight; } - - public DrawingTruck(int speed, double weight, Color bodyColor, boolean tent, boolean dumpBox, Color tentColor, Color dumpBoxColor, int width, int height, int wheelNumber) + public IMoveableObject GetMoveableObject() { + return new DrawingObjectTruck(this); + } + public DrawingTruck(int speed, double weight, Color bodyColor, int width, int height, int wheelNumber) { if (height < _truckHeight || width < _truckWidth) { return; @@ -53,7 +54,7 @@ public class DrawingTruck { entityTruck = new EntityTruck(speed, weight, bodyColor); Random random = new Random(); drawingWheels = switch (random.nextInt(3)) { - case 0 -> new DrawingWheels(); + case 0 -> new DrawingWheels();///инициализация case 1 -> new DrawingWheelsStar(); case 2 -> new DrawingWheelsCircles(); default -> new DrawingWheels(); @@ -78,6 +79,18 @@ public class DrawingTruck { }; drawingWheels.setWheelNumber(wheelNumber); } + public DrawingTruck(EntityTruck entityTruck, int width, int height, int wheelNumber, IDrawingWheels iDrawingWheels) + { + if (height < _truckHeight || width < _truckWidth) { + return; + } + _pictureWidth = width; + _pictureHeight = height; + this.entityTruck = entityTruck; + Random random = new Random(); + drawingWheels = iDrawingWheels; + drawingWheels.setWheelNumber(wheelNumber); + } public void SetPosition(int x, int y) { diff --git a/src/src/Entities/EntityDumpTruck.java b/src/src/DumpTruck/Entities/EntityDumpTruck.java similarity index 96% rename from src/src/Entities/EntityDumpTruck.java rename to src/src/DumpTruck/Entities/EntityDumpTruck.java index aba01ef..da9a3b1 100644 --- a/src/src/Entities/EntityDumpTruck.java +++ b/src/src/DumpTruck/Entities/EntityDumpTruck.java @@ -1,4 +1,4 @@ -package Entities; +package DumpTruck.Entities; import java.awt.*; diff --git a/src/src/Entities/EntityTruck.java b/src/src/DumpTruck/Entities/EntityTruck.java similarity index 95% rename from src/src/Entities/EntityTruck.java rename to src/src/DumpTruck/Entities/EntityTruck.java index 5b7db0e..fb1f286 100644 --- a/src/src/Entities/EntityTruck.java +++ b/src/src/DumpTruck/Entities/EntityTruck.java @@ -1,4 +1,4 @@ -package Entities; +package DumpTruck.Entities; import java.awt.*; diff --git a/src/src/DumpTruck/FrameDop.java b/src/src/DumpTruck/FrameDop.java new file mode 100644 index 0000000..80d5212 --- /dev/null +++ b/src/src/DumpTruck/FrameDop.java @@ -0,0 +1,17 @@ +package DumpTruck; + +import javax.swing.*; + +public class FrameDop extends JFrame { + + private PictureBoxDop pictureBoxDop; + + public FrameDop() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + pictureBoxDop = new PictureBoxDop(); + add(pictureBoxDop); + pack(); + setLocationRelativeTo(null); + setVisible(true); + } +} \ No newline at end of file diff --git a/src/src/FrameDumpTruck.java b/src/src/DumpTruck/FrameDumpTruck.java similarity index 81% rename from src/src/FrameDumpTruck.java rename to src/src/DumpTruck/FrameDumpTruck.java index 5e68960..ba61745 100644 --- a/src/src/FrameDumpTruck.java +++ b/src/src/DumpTruck/FrameDumpTruck.java @@ -1,8 +1,10 @@ +package DumpTruck; + import javax.swing.*; public class FrameDumpTruck extends JFrame { - private PictureBoxDumpTruck pictureBoxDumpTruck; + public PictureBoxDumpTruck pictureBoxDumpTruck; public FrameDumpTruck() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); diff --git a/src/src/DumpTruck/FrameTruckCollection.java b/src/src/DumpTruck/FrameTruckCollection.java new file mode 100644 index 0000000..8e4a565 --- /dev/null +++ b/src/src/DumpTruck/FrameTruckCollection.java @@ -0,0 +1,20 @@ +package DumpTruck; + +import DumpTruck.PictureBoxCollection; +import javax.swing.*; + +public class FrameTruckCollection extends JFrame { + + private PictureBoxCollection pictureBoxCollection; + + public FrameTruckCollection() { + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + pictureBoxCollection = new PictureBoxCollection(); + add(pictureBoxCollection); + pack(); + setLocationRelativeTo(null); + setVisible(true); + } + + +} \ No newline at end of file diff --git a/src/src/DumpTruck/Generics/GenericDop.java b/src/src/DumpTruck/Generics/GenericDop.java new file mode 100644 index 0000000..2394dc7 --- /dev/null +++ b/src/src/DumpTruck/Generics/GenericDop.java @@ -0,0 +1,61 @@ +package DumpTruck.Generics; + +import DumpTruck.Entities.*; +import DumpTruck.Wheels.*; +import DumpTruck.DrawingObjects.*; + +import java.util.Random; + +public class GenericDop { + + private T[] Trucks; + private U[] Wheels; + private int maxTruckAmount; + private int truckAmount; + private int maxWheelAmount ; + private int wheelAmount; + private Random random; + private int _pictureWidth; + private int _pictureHeight; + public GenericDop(int maxTruckAmount, int maxWheelAmount, int pictureWidth, int pictureHeight){ + this.maxTruckAmount = maxTruckAmount; + this.maxWheelAmount = maxWheelAmount; + Trucks = (T[]) new EntityTruck[maxTruckAmount]; + Wheels = (U[]) new IDrawingWheels[maxWheelAmount]; + truckAmount = 0; + wheelAmount = 0; + _pictureWidth = pictureWidth; + _pictureHeight = pictureHeight; + random = new Random(); + } + + public boolean add(T truck){ + if (truck == null || truckAmount > maxTruckAmount) + return false; + Trucks[truckAmount] = truck; + truckAmount++; + return true; + } + + public boolean add(U wheel){ + if (wheel == null || wheelAmount > maxWheelAmount) + return false; + Wheels[wheelAmount] = wheel; + wheelAmount++; + return true; + } + + public DrawingTruck DrawingTruckDop(){ + if (truckAmount == 0 || wheelAmount == 0) + return null; + T truck = Trucks[random.nextInt(truckAmount)]; + DrawingTruck drawingTruck; + if (truck instanceof EntityDumpTruck){ + drawingTruck = new DrawingDumpTruck((EntityDumpTruck)truck, _pictureWidth, _pictureHeight, random.nextInt(5), Wheels[random.nextInt(wheelAmount)]); + } + else{ + drawingTruck = new DrawingTruck(truck, _pictureWidth, _pictureHeight, random.nextInt(5), Wheels[random.nextInt(wheelAmount)]); + } + return drawingTruck; + } +} \ No newline at end of file diff --git a/src/src/DumpTruck/Generics/SetGeneric.java b/src/src/DumpTruck/Generics/SetGeneric.java new file mode 100644 index 0000000..3ee0b5f --- /dev/null +++ b/src/src/DumpTruck/Generics/SetGeneric.java @@ -0,0 +1,54 @@ +package DumpTruck.Generics; + +public class SetGeneric { + private Object[] _places; + + public int Count() {return _places.length;} + + public SetGeneric(int count) { + _places = new Object[count]; + } + + public int Insert(T truck) { + return Insert(truck, 0); + } + + public int Insert(T truck, int position) { + if (position < 0 || position >= Count()) + return -1; + if (_places[position] == null) + { + _places[position] = truck; + return position; + } + int index = -1; + for (int i = position; i < Count(); i++) + { + if (_places[i] == null) + { + index = i; + break; + } + } + if (index < 0) return -1; + for (int i = index; i > position; i--) + { + _places[i] = _places[i - 1]; + } + _places[position] = truck; + return position; + } + + public boolean Remove(int position) { + if (position < 0 || position >= Count()) + return false; + _places[position] = null; + return true; + } + + public T Get(int position) { + if (position < 0 || position >= Count()) + return null; + return (T) _places[position]; + } +} diff --git a/src/src/DumpTruck/Generics/TrucksGenericCollection.java b/src/src/DumpTruck/Generics/TrucksGenericCollection.java new file mode 100644 index 0000000..65f554d --- /dev/null +++ b/src/src/DumpTruck/Generics/TrucksGenericCollection.java @@ -0,0 +1,70 @@ +package DumpTruck.Generics; + +import DumpTruck.DrawingObjects.*; +import DumpTruck.MovementStrategy.*; + +import java.awt.*; +import java.awt.image.BufferedImage; + +public class TrucksGenericCollection{ + private int _pictureWidth; + private int _pictureHeight; + + private int _placeSizeWidth = 180; + private int _placeSizeHeight = 100; + + private DumpTruck.Generics.SetGeneric _collection; + public TrucksGenericCollection(int pictureWidth, int pictureHeight) { + int width = pictureWidth / _placeSizeWidth; + int height = pictureHeight / _placeSizeHeight; + _pictureWidth = pictureWidth; + _pictureHeight = pictureHeight; + _collection = new DumpTruck.Generics.SetGeneric(width * height); + } + public int Add(T obj) { + if (obj == null) { + return -1; + } + return _collection.Insert(obj); + } + public boolean remove(int pos) { + T obj = _collection.Get(pos); + if (obj != null) { + _collection.Remove(pos); + } + return false; + } + public U GetU(int pos) { + return (U) _collection.Get(pos).GetMoveableObject(); + } + public BufferedImage ShowTrucks() { + BufferedImage bitmap = new BufferedImage(_pictureWidth, _pictureHeight, BufferedImage.TYPE_INT_ARGB); + Graphics2D g = bitmap.createGraphics(); + DrawBackground(g); + DrawObjects(g); + g.dispose(); + return bitmap; + } + private void DrawBackground(Graphics g) { + g.setColor(Color.BLACK); + for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++) + { + for (int j = 0; j < _pictureHeight / _placeSizeHeight + 1; ++j) + { + g.drawLine(i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 2, j * _placeSizeHeight); + } + g.drawLine(i * _placeSizeWidth, 0, i * _placeSizeWidth, _pictureHeight / _placeSizeHeight * _placeSizeHeight); + } + } + private void DrawObjects(Graphics g) { + for (int i = 0; i < _collection.Count(); i++) + { + T obj = _collection.Get(i); + if (obj != null) + { + obj.SetPosition(i % (_pictureWidth / _placeSizeWidth) * _placeSizeWidth, i / (_pictureWidth / _placeSizeWidth) * _placeSizeHeight); + obj.DrawTransport((Graphics2D) g); + } + } + } +} \ No newline at end of file diff --git a/src/src/MovementStrategy/AbstractStrategy.java b/src/src/DumpTruck/MovementStrategy/AbstractStrategy.java similarity index 98% rename from src/src/MovementStrategy/AbstractStrategy.java rename to src/src/DumpTruck/MovementStrategy/AbstractStrategy.java index 0b1d507..e27ecae 100644 --- a/src/src/MovementStrategy/AbstractStrategy.java +++ b/src/src/DumpTruck/MovementStrategy/AbstractStrategy.java @@ -1,4 +1,4 @@ -package MovementStrategy; +package DumpTruck.MovementStrategy; import DumpTruck.DirectionType; diff --git a/src/src/MovementStrategy/DrawingObjectTruck.java b/src/src/DumpTruck/MovementStrategy/DrawingObjectTruck.java similarity index 93% rename from src/src/MovementStrategy/DrawingObjectTruck.java rename to src/src/DumpTruck/MovementStrategy/DrawingObjectTruck.java index 8679562..449f6ab 100644 --- a/src/src/MovementStrategy/DrawingObjectTruck.java +++ b/src/src/DumpTruck/MovementStrategy/DrawingObjectTruck.java @@ -1,7 +1,7 @@ -package MovementStrategy; +package DumpTruck.MovementStrategy; import DumpTruck.DirectionType; -import DrawingObjects.DrawingTruck; +import DumpTruck.DrawingObjects.DrawingTruck; public class DrawingObjectTruck implements IMoveableObject { diff --git a/src/src/MovementStrategy/IMoveableObject.java b/src/src/DumpTruck/MovementStrategy/IMoveableObject.java similarity index 86% rename from src/src/MovementStrategy/IMoveableObject.java rename to src/src/DumpTruck/MovementStrategy/IMoveableObject.java index dd11227..03ad34c 100644 --- a/src/src/MovementStrategy/IMoveableObject.java +++ b/src/src/DumpTruck/MovementStrategy/IMoveableObject.java @@ -1,4 +1,4 @@ -package MovementStrategy; +package DumpTruck.MovementStrategy; import DumpTruck.DirectionType; public interface IMoveableObject { diff --git a/src/src/MovementStrategy/MoveToBorder.java b/src/src/DumpTruck/MovementStrategy/MoveToBorder.java similarity index 96% rename from src/src/MovementStrategy/MoveToBorder.java rename to src/src/DumpTruck/MovementStrategy/MoveToBorder.java index f0ef979..e2b60d5 100644 --- a/src/src/MovementStrategy/MoveToBorder.java +++ b/src/src/DumpTruck/MovementStrategy/MoveToBorder.java @@ -1,4 +1,4 @@ -package MovementStrategy; +package DumpTruck.MovementStrategy; public class MoveToBorder extends AbstractStrategy { diff --git a/src/src/MovementStrategy/MoveToCenter.java b/src/src/DumpTruck/MovementStrategy/MoveToCenter.java similarity index 97% rename from src/src/MovementStrategy/MoveToCenter.java rename to src/src/DumpTruck/MovementStrategy/MoveToCenter.java index 033a06b..2905269 100644 --- a/src/src/MovementStrategy/MoveToCenter.java +++ b/src/src/DumpTruck/MovementStrategy/MoveToCenter.java @@ -1,4 +1,4 @@ -package MovementStrategy; +package DumpTruck.MovementStrategy; public class MoveToCenter extends AbstractStrategy { diff --git a/src/src/MovementStrategy/ObjectParameters.java b/src/src/DumpTruck/MovementStrategy/ObjectParameters.java similarity index 95% rename from src/src/MovementStrategy/ObjectParameters.java rename to src/src/DumpTruck/MovementStrategy/ObjectParameters.java index cfc7991..f5e67ba 100644 --- a/src/src/MovementStrategy/ObjectParameters.java +++ b/src/src/DumpTruck/MovementStrategy/ObjectParameters.java @@ -1,4 +1,4 @@ -package MovementStrategy; +package DumpTruck.MovementStrategy; public class ObjectParameters { diff --git a/src/src/MovementStrategy/Status.java b/src/src/DumpTruck/MovementStrategy/Status.java similarity index 63% rename from src/src/MovementStrategy/Status.java rename to src/src/DumpTruck/MovementStrategy/Status.java index 88fa38d..ba75493 100644 --- a/src/src/MovementStrategy/Status.java +++ b/src/src/DumpTruck/MovementStrategy/Status.java @@ -1,4 +1,4 @@ -package MovementStrategy; +package DumpTruck.MovementStrategy; public enum Status { NotInit, diff --git a/src/src/DumpTruck/PictureBoxCollection.java b/src/src/DumpTruck/PictureBoxCollection.java new file mode 100644 index 0000000..6bf07db --- /dev/null +++ b/src/src/DumpTruck/PictureBoxCollection.java @@ -0,0 +1,92 @@ +package DumpTruck; + +import javax.swing.*; +import java.awt.*; + +import DumpTruck.DrawingObjects.*; + +import DumpTruck.MovementStrategy.*; + +public class PictureBoxCollection extends JPanel { + public DumpTruck.Generics.TrucksGenericCollection _trucks; + private JLabel labelTools; + private JButton buttonAddTruck, buttonDeleteTruck, buttonRefreshCollection, buttonShowDop; + private JTextField textFieldNumber; + public PictureBoxCollection() { + setLayout(null); + setBounds(0, 0, 800, 450); + _trucks = new DumpTruck.Generics.TrucksGenericCollection<>(this.getWidth() - 200, this.getHeight()); + labelTools = new JLabel("Инструменты"); + labelTools.setBounds(660, 10, 150, 30); + add(labelTools); + buttonAddTruck = new JButton("Добавить грузовик"); + buttonAddTruck.setFocusable(false); + buttonAddTruck.setBounds(620, 50, 150, 30); + buttonAddTruck.addActionListener(e -> { + FrameDumpTruck frameDumpTruck = new FrameDumpTruck(); + frameDumpTruck.pictureBoxDumpTruck.buttonSelectTruck.addActionListener(e1 -> { + if (_trucks.Add(frameDumpTruck.pictureBoxDumpTruck.drawingTruck) != -1) { + JOptionPane.showMessageDialog(null, "Объект добавлен", "Информация", JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(null, "Не удалось добавить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + } + frameDumpTruck.dispose(); + repaint(); + } + ); + }); + add(buttonAddTruck); + + textFieldNumber = new JTextField(); + textFieldNumber.setBounds(620, 100, 150, 30); + add(textFieldNumber); + + buttonDeleteTruck = new JButton("Удалить грузовик"); + buttonDeleteTruck.setFocusable(false); + buttonDeleteTruck.setBounds(620, 150, 150, 30); + buttonDeleteTruck.addActionListener(e -> { + if (JOptionPane.showConfirmDialog(null, "Удалить объект?", "Удаление", JOptionPane.YES_NO_OPTION) == JOptionPane.NO_OPTION) { + return; + } + for (char it : textFieldNumber.getText().toCharArray()) + if (it < '0' || it > '9') { + JOptionPane.showMessageDialog(null, "Не удалось удалить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + return; + } + if (textFieldNumber.getText().length() == 0) { + JOptionPane.showMessageDialog(null, "Не удалось удалить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + return; + } + + int pos = Integer.parseInt(textFieldNumber.getText()); + if (_trucks.remove(pos)) { + JOptionPane.showMessageDialog(null, "Объект удален", "Информация", JOptionPane.INFORMATION_MESSAGE); + } else { + JOptionPane.showMessageDialog(null, "Не удалось удалить объект", "Информация", JOptionPane.INFORMATION_MESSAGE); + } + repaint(); + }); + add(buttonDeleteTruck); + + buttonRefreshCollection = new JButton("Обновить коллекцию"); + buttonRefreshCollection.setFocusable(false); + buttonRefreshCollection.setBounds(620, 200, 150, 30); + buttonRefreshCollection.addActionListener(e -> repaint()); + add(buttonRefreshCollection); + + buttonShowDop = new JButton("Показать доп"); + buttonShowDop.setFocusable(false); + buttonShowDop.setBounds(620, 250, 150, 30); + buttonShowDop.addActionListener(e -> new FrameDop()); + add(buttonShowDop); + + setPreferredSize(new Dimension(800, 450)); + } + + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + g2d.drawImage(_trucks.ShowTrucks(), 0, 0, null); + } +} \ No newline at end of file diff --git a/src/src/DumpTruck/PictureBoxDop.java b/src/src/DumpTruck/PictureBoxDop.java new file mode 100644 index 0000000..50b184e --- /dev/null +++ b/src/src/DumpTruck/PictureBoxDop.java @@ -0,0 +1,50 @@ +package DumpTruck; + +import DumpTruck.DrawingObjects.DrawingTruck; +import DumpTruck.Entities.*; +import DumpTruck.Generics.*; +import DumpTruck.Wheels.*; + +import javax.swing.*; +import java.awt.*; +import java.util.Random; + +public class PictureBoxDop extends JPanel { + GenericDop genericDop; + private JButton buttonCreate; + public DrawingTruck drawingTruck; + + public PictureBoxDop(){ + setLayout(null); + setBounds(0, 0, 800, 450); + genericDop = new GenericDop<>(100, 100, this.getWidth(), this.getHeight()); + genericDop.add(new EntityTruck(100, 100, Color.BLUE)); + genericDop.add(new EntityTruck(100, 100, Color.RED)); + genericDop.add(new EntityTruck(100, 100, Color.GREEN)); + genericDop.add(new EntityDumpTruck(100, 100, Color.BLUE, true, true, Color.BLACK, Color.RED)); + genericDop.add(new EntityDumpTruck(100, 100, Color.GREEN, true, true, Color.MAGENTA, Color.YELLOW)); + genericDop.add(new DrawingWheels()); + genericDop.add(new DrawingWheelsCircles()); + genericDop.add(new DrawingWheelsStar()); + + buttonCreate = new JButton("Создать грузовик"); + buttonCreate.setFocusable(false); + buttonCreate.setBounds(12, 415, 150, 30); + buttonCreate.addActionListener(e -> { + drawingTruck = genericDop.DrawingTruckDop(); + repaint(); + }); + add(buttonCreate); + setPreferredSize(new Dimension(800, 450)); + } + @Override + protected void paintComponent(Graphics g) { + if (drawingTruck == null) { + return; + } + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + drawingTruck.SetPosition(100, 100); + drawingTruck.DrawTransport(g2d); + } +} diff --git a/src/src/PictureBoxDumpTruck.java b/src/src/DumpTruck/PictureBoxDumpTruck.java similarity index 74% rename from src/src/PictureBoxDumpTruck.java rename to src/src/DumpTruck/PictureBoxDumpTruck.java index a621c26..b1d3172 100644 --- a/src/src/PictureBoxDumpTruck.java +++ b/src/src/DumpTruck/PictureBoxDumpTruck.java @@ -1,13 +1,14 @@ +package DumpTruck; + import javax.swing.*; import java.awt.*; import java.awt.event.ActionListener; import java.util.Random; -import DrawingObjects.*; -import DumpTruck.DirectionType; -import MovementStrategy.*; +import DumpTruck.DrawingObjects.*; +import DumpTruck.MovementStrategy.*; public class PictureBoxDumpTruck extends JPanel { - private DrawingTruck drawingTruck; + public DrawingTruck drawingTruck; private AbstractStrategy abstractStrategy; @@ -23,6 +24,7 @@ public class PictureBoxDumpTruck extends JPanel { private JButton buttonCreateTruck; private JComboBox comboBoxStrategy; private JButton buttonStep; + public JButton buttonSelectTruck; public PictureBoxDumpTruck() { setLayout(null); @@ -34,15 +36,15 @@ public class PictureBoxDumpTruck extends JPanel { buttonCreateTruck.addActionListener(e -> { Random random = new Random(); + Color bodyColor = new Color(random.nextInt( 256), random.nextInt(256), random.nextInt(256)); + Color selectedColor = JColorChooser.showDialog(this, "Выберите цвет", Color.WHITE); + if (selectedColor != null) + { + bodyColor = selectedColor; + } drawingTruck = new DrawingTruck((random.nextInt((200-300)+300)), random.nextInt((1000-3000)+ 3000), - new Color(random.nextInt( 256), random.nextInt(256), - random.nextInt(256)), - random.nextBoolean(), random.nextBoolean(), - new Color(random.nextInt(256), random.nextInt( 256), - random.nextInt(256)), - new Color(random.nextInt( 256), random.nextInt(256), - random.nextInt( 256)), + bodyColor, this.getWidth(), this.getHeight(), random.nextInt(5)); drawingTruck.SetPosition(random.nextInt((-90)+ 100), random.nextInt((-90)+ 100)); repaint(); @@ -55,20 +57,39 @@ public class PictureBoxDumpTruck extends JPanel { buttonCreateDumpTruck.addActionListener(e -> { Random random = new Random(); + Color bodyColor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + Color selectedColor = JColorChooser.showDialog(this, "Выберите цвет", Color.WHITE); + if (selectedColor != null) + { + bodyColor = selectedColor; + } + Color dumpBoxColor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + selectedColor = JColorChooser.showDialog(this, "Выберите цвет", Color.WHITE); + if (selectedColor != null) + { + dumpBoxColor = selectedColor; + } + Color tentColor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + selectedColor = JColorChooser.showDialog(this, "Выберите цвет", Color.WHITE); + if (selectedColor != null) + { + tentColor = selectedColor; + } drawingTruck = new DrawingDumpTruck((random.nextInt((200-300)+300)), random.nextInt((1000-3000)+ 3000), - new Color(random.nextInt( 256), random.nextInt(256), - random.nextInt(256)), - random.nextBoolean(), random.nextBoolean(), - new Color(random.nextInt(256), random.nextInt( 256), - random.nextInt(256)), - new Color(random.nextInt( 256), random.nextInt(256), - random.nextInt( 256)), + bodyColor, + random.nextBoolean(), true, + tentColor, dumpBoxColor, this.getWidth(), this.getHeight(), random.nextInt(5)); drawingTruck.SetPosition(random.nextInt((-90)+ 100), random.nextInt((-90)+ 100)); repaint(); }); + buttonSelectTruck = new JButton("Выбрать"); + buttonSelectTruck.setFocusable(false); + buttonSelectTruck.setBounds(350, 415, 150, 30); + add(buttonSelectTruck); + ActionListener buttonMoveListener = e -> { if (drawingTruck == null) { @@ -97,7 +118,7 @@ public class PictureBoxDumpTruck extends JPanel { buttonLeft.setName("buttonLeft"); buttonLeft.setFocusable(false); buttonLeft.setPreferredSize(new Dimension(30, 30)); - buttonLeft.setIcon(new ImageIcon("G:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\left.jpg")); + buttonLeft.setIcon(new ImageIcon("H:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\left.jpg")); buttonLeft.addActionListener(buttonMoveListener); buttonLeft.setBounds(686, 408, 30, 30); @@ -107,7 +128,7 @@ public class PictureBoxDumpTruck extends JPanel { buttonRight.setName("buttonRight"); buttonRight.setFocusable(false); buttonRight.setPreferredSize(new Dimension(30, 30)); - buttonRight.setIcon(new ImageIcon("G:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\right.jpg")); + buttonRight.setIcon(new ImageIcon("H:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\right.jpg")); buttonRight.addActionListener(buttonMoveListener); buttonRight.setBounds(758, 408, 30, 30); @@ -117,7 +138,7 @@ public class PictureBoxDumpTruck extends JPanel { buttonDown.setName("buttonDown"); buttonDown.setFocusable(false); buttonDown.setPreferredSize(new Dimension(30, 30)); - buttonDown.setIcon(new ImageIcon("G:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\down.jpg")); + buttonDown.setIcon(new ImageIcon("H:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\down.jpg")); buttonDown.addActionListener(buttonMoveListener); buttonDown.setBounds(722, 408, 30, 30); @@ -127,7 +148,7 @@ public class PictureBoxDumpTruck extends JPanel { buttonUp.setName("buttonUp"); buttonUp.setFocusable(false); buttonUp.setPreferredSize(new Dimension(30, 30)); - buttonUp.setIcon(new ImageIcon("G:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\up.jpg")); + buttonUp.setIcon(new ImageIcon("H:\\1 КУРС\\ООП Hard\\PIbd-11_Andrianova_E.N._Hard\\src\\images\\up.jpg")); buttonUp.addActionListener(buttonMoveListener); buttonUp.setBounds(722, 372, 30, 30); diff --git a/src/src/Wheels/DrawingWheels.java b/src/src/DumpTruck/Wheels/DrawingWheels.java similarity index 98% rename from src/src/Wheels/DrawingWheels.java rename to src/src/DumpTruck/Wheels/DrawingWheels.java index 17d3bf5..5a6303b 100644 --- a/src/src/Wheels/DrawingWheels.java +++ b/src/src/DumpTruck/Wheels/DrawingWheels.java @@ -1,4 +1,4 @@ -package Wheels; +package DumpTruck.Wheels; import java.awt.*; diff --git a/src/src/Wheels/DrawingWheelsCircles.java b/src/src/DumpTruck/Wheels/DrawingWheelsCircles.java similarity index 98% rename from src/src/Wheels/DrawingWheelsCircles.java rename to src/src/DumpTruck/Wheels/DrawingWheelsCircles.java index a576fc6..e7dc7b0 100644 --- a/src/src/Wheels/DrawingWheelsCircles.java +++ b/src/src/DumpTruck/Wheels/DrawingWheelsCircles.java @@ -1,4 +1,4 @@ -package Wheels; +package DumpTruck.Wheels; import java.awt.*; diff --git a/src/src/Wheels/DrawingWheelsStar.java b/src/src/DumpTruck/Wheels/DrawingWheelsStar.java similarity index 98% rename from src/src/Wheels/DrawingWheelsStar.java rename to src/src/DumpTruck/Wheels/DrawingWheelsStar.java index bb46ffe..26f8546 100644 --- a/src/src/Wheels/DrawingWheelsStar.java +++ b/src/src/DumpTruck/Wheels/DrawingWheelsStar.java @@ -1,4 +1,4 @@ -package Wheels; +package DumpTruck.Wheels; import java.awt.*; diff --git a/src/src/Wheels/IDrawingWheels.java b/src/src/DumpTruck/Wheels/IDrawingWheels.java similarity index 88% rename from src/src/Wheels/IDrawingWheels.java rename to src/src/DumpTruck/Wheels/IDrawingWheels.java index 5c0fff0..907c8a2 100644 --- a/src/src/Wheels/IDrawingWheels.java +++ b/src/src/DumpTruck/Wheels/IDrawingWheels.java @@ -1,4 +1,4 @@ -package Wheels; +package DumpTruck.Wheels; import java.awt.*; diff --git a/src/src/Wheels/WheelNumber.java b/src/src/DumpTruck/Wheels/WheelNumber.java similarity index 68% rename from src/src/Wheels/WheelNumber.java rename to src/src/DumpTruck/Wheels/WheelNumber.java index 195baf7..e8c9aca 100644 --- a/src/src/Wheels/WheelNumber.java +++ b/src/src/DumpTruck/Wheels/WheelNumber.java @@ -1,4 +1,4 @@ -package Wheels; +package DumpTruck.Wheels; public enum WheelNumber { Two,