From 6d2ced70f76dab5875c0f20934603ad1c235f567 Mon Sep 17 00:00:00 2001 From: insideq <114825525+insideq@users.noreply.github.com> Date: Sat, 11 May 2024 18:02:54 +0400 Subject: [PATCH 01/25] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=E2=84=963?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdditionalCollections.java | 61 ++++++ .../AbstractCompany.java | 34 +++ .../BulldozerSharingService.java | 49 +++++ .../ICollectionGenericObjects.java | 12 ++ .../MassiveGenericObjects.java | 75 +++++++ .../CanvasFormBulldozerCollection.java | 34 +++ src/Drawings/DrawingBulldozer.java | 13 +- src/Drawings/DrawingExcavator.java | 10 +- src/Entities/EntityExcavator.java | 6 + src/FormAdditionalCollection.java | 137 ++++++++++++ src/FormBulldozerCollection.java | 204 ++++++++++++++++++ src/FormExcavator.java | 62 +----- src/Program.java | 2 +- 13 files changed, 638 insertions(+), 61 deletions(-) create mode 100644 src/CollectionAdditionalObjects/AdditionalCollections.java create mode 100644 src/CollectionGenericObjects/AbstractCompany.java create mode 100644 src/CollectionGenericObjects/BulldozerSharingService.java create mode 100644 src/CollectionGenericObjects/ICollectionGenericObjects.java create mode 100644 src/CollectionGenericObjects/MassiveGenericObjects.java create mode 100644 src/Drawings/CanvasFormBulldozerCollection.java create mode 100644 src/FormAdditionalCollection.java create mode 100644 src/FormBulldozerCollection.java diff --git a/src/CollectionAdditionalObjects/AdditionalCollections.java b/src/CollectionAdditionalObjects/AdditionalCollections.java new file mode 100644 index 0000000..6ce5115 --- /dev/null +++ b/src/CollectionAdditionalObjects/AdditionalCollections.java @@ -0,0 +1,61 @@ +package CollectionAdditionalObjects; + +import DifferentRollers.IDifferentRollers; +import Drawings.DrawingBulldozer; +import Drawings.DrawingExcavator; +import Entities.EntityBulldozer; +import Entities.EntityExcavator; + +import java.lang.reflect.Array; +import java.util.Random; + +public class AdditionalCollections { + public T[] _collectionEntity; + public U[] _collectionRollers; + public AdditionalCollections(int size, Class type1, Class type2) { + _collectionEntity = (T[]) Array.newInstance(type1, size); + _collectionRollers = (U[]) Array.newInstance(type2, size); + CountEntities = size; + CountRollers = size; + } + public int CountEntities; + public int CountRollers; + 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 rollers) { + int index = 0; + while (index < CountRollers) { + if (_collectionRollers[index] == null) + { + _collectionRollers[index] = rollers; + return index; + } + ++index; + } + return -1; + } + public DrawingBulldozer CreateAdditionalCollectionBulldozer() { + Random random = new Random(); + if (_collectionEntity == null || _collectionRollers == null) return null; + T entity = _collectionEntity[random.nextInt(CountEntities)]; + U rollers = _collectionRollers[random.nextInt(CountRollers)]; + DrawingBulldozer drawingBulldozer = null; + if (entity instanceof EntityExcavator) { + drawingBulldozer = new DrawingExcavator((EntityExcavator) entity, rollers); + } + else { + drawingBulldozer = new DrawingBulldozer(entity, rollers); + } + return drawingBulldozer; + } +} diff --git a/src/CollectionGenericObjects/AbstractCompany.java b/src/CollectionGenericObjects/AbstractCompany.java new file mode 100644 index 0000000..6314a1b --- /dev/null +++ b/src/CollectionGenericObjects/AbstractCompany.java @@ -0,0 +1,34 @@ +package CollectionGenericObjects; + +import Drawings.DrawingBulldozer; + +import java.awt.*; + +public abstract class AbstractCompany { + protected int _placeSizeWidth = 195; + protected int _placeSizeHeight = 80; + 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(), DrawingBulldozer.class); + } + //перегрузка операторов в джаве невозможна + public DrawingBulldozer GetRandomObject() + { + return _collection.Get((int)(Math.random()*GetMaxCount())); + } + public void SetPosition() + { + SetObjectsPosition(); + } + public abstract void DrawBackground(Graphics graphics); + protected abstract void SetObjectsPosition(); +} diff --git a/src/CollectionGenericObjects/BulldozerSharingService.java b/src/CollectionGenericObjects/BulldozerSharingService.java new file mode 100644 index 0000000..d40d4a2 --- /dev/null +++ b/src/CollectionGenericObjects/BulldozerSharingService.java @@ -0,0 +1,49 @@ +package CollectionGenericObjects; + +import Drawings.DrawingBulldozer; + +import java.awt.*; + +public class BulldozerSharingService extends AbstractCompany{ + public BulldozerSharingService(int picWidth, int picHeight, ICollectionGenericObjects collection) { + super(picWidth, picHeight, collection); + } + @Override + public void DrawBackground(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 / 2, j * _placeSizeHeight); + } + g.drawLine(i * _placeSizeWidth, 0, i * _placeSizeWidth, _pictureHeight); + } + } + @Override + protected void SetObjectsPosition() { + int width = _pictureWidth / _placeSizeWidth; + int height = _pictureHeight / _placeSizeHeight; + + int posWidth = width - 1; + int posHeight = 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 * posWidth + 4, posHeight * _placeSizeHeight + 4); + } + if (posWidth > 0) + posWidth--; + else { + posWidth = width - 1; + posHeight++; + } + if (posHeight > height) { + return; + } + } + } +} + diff --git a/src/CollectionGenericObjects/ICollectionGenericObjects.java b/src/CollectionGenericObjects/ICollectionGenericObjects.java new file mode 100644 index 0000000..a633cfe --- /dev/null +++ b/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/src/CollectionGenericObjects/MassiveGenericObjects.java b/src/CollectionGenericObjects/MassiveGenericObjects.java new file mode 100644 index 0000000..063fb44 --- /dev/null +++ b/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/src/Drawings/CanvasFormBulldozerCollection.java b/src/Drawings/CanvasFormBulldozerCollection.java new file mode 100644 index 0000000..7f7127c --- /dev/null +++ b/src/Drawings/CanvasFormBulldozerCollection.java @@ -0,0 +1,34 @@ +package Drawings; + +import CollectionGenericObjects.AbstractCompany; +import CollectionGenericObjects.ICollectionGenericObjects; +import CollectionGenericObjects.MassiveGenericObjects; + +import javax.swing.*; +import java.awt.*; + +public class CanvasFormBulldozerCollection extends JComponent +{ + public AbstractCompany company = null; + public void SetCollectionToCanvas(AbstractCompany company) { + this.company = company; + } + public CanvasFormBulldozerCollection(){} + public void paintComponent(Graphics g) { + super.paintComponents(g); + if (company == null || company._collection == null) { + return; + } + company.DrawBackground(g); + for (int i = 0; i < company._collection.getCount(); i++) { + + Graphics2D g2d = (Graphics2D) g; + T obj = (T)company._collection.Get(i); + if (obj instanceof DrawingBulldozer) { + ((DrawingBulldozer) obj).DrawTransport(g2d); + } + } + super.repaint(); + } +} + diff --git a/src/Drawings/DrawingBulldozer.java b/src/Drawings/DrawingBulldozer.java index 3b0f2e9..6b7c9fe 100644 --- a/src/Drawings/DrawingBulldozer.java +++ b/src/Drawings/DrawingBulldozer.java @@ -56,6 +56,17 @@ public class DrawingBulldozer extends JPanel { SetTypeRollers(); } + protected DrawingBulldozer(int _drawingExcWidth, int _drawingExcHeight) { + super(); + this._drawingExcWidth = _drawingExcWidth; + this._drawingExcHeight = _drawingExcHeight; + } + + public DrawingBulldozer(EntityBulldozer entity, IDifferentRollers rollers) { + EntityBulldozer = entity; + drawingRollers = rollers; + } + // Смена границ формы отрисовки public void SetPictureSize(int width, int height) { @@ -171,7 +182,7 @@ public class DrawingBulldozer extends JPanel { g.fillOval(_startPosX + 50, _startPosY + 48, 5, 5); int x = _startPosX; - if (drawingRollers.getRollersCount() != null){ + if (drawingRollers != null && drawingRollers.getRollersCount() != null){ switch (drawingRollers.getRollersCount()){ case OneRoller: drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); diff --git a/src/Drawings/DrawingExcavator.java b/src/Drawings/DrawingExcavator.java index 6600b23..07dbe34 100644 --- a/src/Drawings/DrawingExcavator.java +++ b/src/Drawings/DrawingExcavator.java @@ -1,5 +1,6 @@ package Drawings; +import DifferentRollers.IDifferentRollers; import Entities.EntityExcavator; import java.awt.*; @@ -11,6 +12,11 @@ public class DrawingExcavator extends DrawingBulldozer{ SetTypeRollers(); } + public DrawingExcavator(EntityExcavator entity, IDifferentRollers rollers) { + EntityBulldozer = entity; + drawingRollers = rollers; + } + // Отрисовка Экскаватора @Override public void DrawTransport(Graphics2D g){ @@ -18,7 +24,7 @@ public class DrawingExcavator extends DrawingBulldozer{ return; } super.DrawTransport(g); - if (excavator.Prop){ + if (excavator.getProp()){ g.setColor(Color.BLACK); //Опоры //справа @@ -43,7 +49,7 @@ public class DrawingExcavator extends DrawingBulldozer{ g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); } - if(excavator.Ladle){ + if(excavator.getLadle()){ g.setColor(Color.BLACK); //Ковш //ковш(стрела) diff --git a/src/Entities/EntityExcavator.java b/src/Entities/EntityExcavator.java index eca47e9..d19d645 100644 --- a/src/Entities/EntityExcavator.java +++ b/src/Entities/EntityExcavator.java @@ -8,7 +8,13 @@ public class EntityExcavator extends EntityBulldozer{ return AdditionalColor; } public boolean Prop; + public boolean getProp(){ + return Prop; + } public boolean Ladle; + public boolean getLadle(){ + return Ladle; + } public EntityExcavator(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ super(speed, weight, bodyColor); AdditionalColor = additionalColor; diff --git a/src/FormAdditionalCollection.java b/src/FormAdditionalCollection.java new file mode 100644 index 0000000..8dec13d --- /dev/null +++ b/src/FormAdditionalCollection.java @@ -0,0 +1,137 @@ +import CollectionAdditionalObjects.AdditionalCollections; +import CollectionGenericObjects.AbstractCompany; +import DifferentRollers.DrawingRollersCross; +import DifferentRollers.DrawingRollersPlus; +import DifferentRollers.DrawingRollersStar; +import DifferentRollers.IDifferentRollers; +import Drawings.DrawingBulldozer; +import Drawings.CanvasExcavator; +import Drawings.DrawingExcavator; +import Entities.EntityBulldozer; +import Entities.EntityExcavator; + +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 DrawingBulldozer drawingBulldozer = null; + private AbstractCompany company = null; + private CanvasExcavator canvasExc = new CanvasExcavator(); + private AdditionalCollections additionalCollection = null; + private Random random = new Random(); + private JButton buttonGenerate = new JButton("Создать"); + private JList listEntity = new JList(); + private JList listRollers = new JList(); + public FormAdditionalCollection() { + setTitle("Случайный объект"); + setMinimumSize(new Dimension(650,310)); + additionalCollection = new AdditionalCollections(3, (Class) EntityBulldozer.class, (Class) IDifferentRollers.class); + AddEntities(); + AddRollers(); + buttonGenerate.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + drawingBulldozer = additionalCollection.CreateAdditionalCollectionBulldozer(); + drawingBulldozer.SetPictureSize(getWidth(), getHeight()); + drawingBulldozer.SetPosition(50,50); + canvasExc._drawingBulldozer = drawingBulldozer; + canvasExc.repaint(); + DrawingBulldozer copyBulldozer; + if (drawingBulldozer instanceof DrawingExcavator) + copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + else + copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + company._collection.Insert(copyBulldozer); + FormBulldozerCollection.canvasShow(); + + String[] data1 = new String[additionalCollection.CountEntities]; + for (int i = 0; i < additionalCollection.CountEntities; i++) { + EntityBulldozer entity = additionalCollection._collectionEntity[i]; + data1[i] = ToString(entity); + } + String[] data2 = new String[additionalCollection.CountRollers]; + for (int i = 0; i < additionalCollection.CountRollers; i++) { + IDifferentRollers rollers = additionalCollection._collectionRollers[i]; + data2[i] = ToString(rollers); + } + listEntity.setListData(data1); + listRollers.setListData(data2); + } + }); + buttonGenerate.setBounds(450, 10, 100, 50); + add(buttonGenerate); + listEntity.setBounds(10,200,300,60); + listRollers.setBounds(320,200,300,60); + add(listEntity); + add(listRollers); + add(canvasExc); + setVisible(true); + } + private String ToString(EntityBulldozer entity) { + String str = ""; + if (entity instanceof EntityExcavator) str += "EntityExcavator "; + else str += "EntityBulldozer "; + str += entity.getBodyColor().toString(); + return str; + } + private String ToString(IDifferentRollers rollers) { + if (rollers == null || rollers.getRollersCount() == null) + return "Dont have rollers"; + String str = "Rollers "; + if (rollers instanceof DrawingRollersCross) str += "Type Cross "; + else if (rollers instanceof DrawingRollersPlus) str += "Type Plus "; + else str += "Type Star "; + str += rollers.getRollersCount().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)); + EntityBulldozer entity; + if (random.nextBoolean()) { + entity = new EntityBulldozer(speed, weight, bodycolor); + } + else { + Color additionalcolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + boolean prop = random.nextBoolean(); + boolean ladle = random.nextBoolean(); + entity = new EntityExcavator(speed, weight, bodycolor, + additionalcolor, prop, ladle); + } + additionalCollection.Insert(entity); + } + } + public void AddRollers() { + for (int i = 0; i < additionalCollection.CountRollers; i++) { + random = new Random(); + Integer numberOfRollers = random.nextInt(0, 4); + IDifferentRollers drawingRollers = null; + switch (random.nextInt(0,4)) { + case 1: + drawingRollers = new DrawingRollersCross(); + break; + case 2: + drawingRollers = new DrawingRollersPlus(); + break; + case 3: + drawingRollers = new DrawingRollersStar(); + break; + default: + numberOfRollers = null; + break; + } + if (drawingRollers != null) drawingRollers.setRollersCount(numberOfRollers); + additionalCollection.Insert(drawingRollers); + } + } + void setCompany(AbstractCompany company) { + this.company = company; + } +} diff --git a/src/FormBulldozerCollection.java b/src/FormBulldozerCollection.java new file mode 100644 index 0000000..ade84e6 --- /dev/null +++ b/src/FormBulldozerCollection.java @@ -0,0 +1,204 @@ +import CollectionGenericObjects.AbstractCompany; +import CollectionGenericObjects.BulldozerSharingService; +import CollectionGenericObjects.MassiveGenericObjects; +import Drawings.CanvasFormBulldozerCollection; +import Drawings.DrawingBulldozer; +import Drawings.DrawingExcavator; + +import javax.swing.*; +import javax.swing.text.MaskFormatter; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.text.ParseException; +import java.util.Random; + +import static java.lang.Integer.parseInt; + +public class FormBulldozerCollection extends JFrame{ + private String title; + private Dimension dimension; + public static CanvasFormBulldozerCollection _canvasExcavator = new CanvasFormBulldozerCollection(); + private static AbstractCompany _company = null; + private JButton CreateExcButton = new JButton("Создать экскаватор"); + private JButton CreateBullButton = new JButton("Создать бульдозер"); + private JButton RemoveButton = new JButton("Удалить"); + private JButton GoToCheckButton = new JButton("Тест"); + private JButton RandomButton = new JButton("Случайный объект"); + private JButton RefreshButton = new JButton("Обновить"); + private JComboBox ComboBoxCollections = new JComboBox(new String[]{"", "Хранилище"}); + private JFormattedTextField MaskedTextField; + public FormBulldozerCollection(String title, Dimension dimension) { + this.title = title; + this.dimension = dimension; + } + public static void canvasShow() { + _company.SetPosition(); + _canvasExcavator.SetCollectionToCanvas(_company); + _canvasExcavator.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(); + DrawingBulldozer drawingBulldozer; + switch (typeOfClass) { + case "DrawingBulldozer": + drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); + break; + case "DrawingExcavator": + Color additionalColor = getColor(); + boolean prop = new Random().nextBoolean(); + boolean ladle = new Random().nextBoolean(); + drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, prop, ladle); + break; + default: return; + } + if (_company._collection.Insert(drawingBulldozer, 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, "Выберите цвет", 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 BulldozerSharingService(getWidth()-200, getHeight()-70, new MassiveGenericObjects()); + break; + } + } + }); + + CreateBullButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingBulldozer"); + } + }); + CreateExcButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingExcavator"); + } + }); + + 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; + } + DrawingBulldozer bulldozer = null; + int counter = 100; + while (bulldozer == null) + { + bulldozer = _company.GetRandomObject(); + counter--; + if (counter <= 0) + { + break; + } + } + if (bulldozer == null) + { + return; + } + FormExcavator form = new FormExcavator("Экскаватор", new Dimension(900,565)); + form.Init(bulldozer); + } + }); + + 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(); + } + }); + + _canvasExcavator.setBounds(0, 0, getWidth()-200, getHeight()); + ComboBoxCollections.setBounds(getWidth()-190, 10, 150, 20); + CreateBullButton.setBounds(getWidth()-190, 60, 150, 30); + CreateExcButton.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(_canvasExcavator); + add(ComboBoxCollections); + add(CreateBullButton); + add(CreateExcButton); + add(MaskedTextField); + add(RemoveButton); + add(GoToCheckButton); + add(RandomButton); + add(RefreshButton); + setVisible(true); + } +} diff --git a/src/FormExcavator.java b/src/FormExcavator.java index 7d9b2dc..5c6b8dd 100644 --- a/src/FormExcavator.java +++ b/src/FormExcavator.java @@ -1,24 +1,16 @@ -import Drawings.CanvasExcavator; -import Drawings.DirectionType; -import Drawings.DrawingBulldozer; -import Drawings.DrawingExcavator; +import Drawings.*; import MovementStrategy.*; import javax.swing.*; 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.util.Random; public class FormExcavator extends JFrame { private String title; private Dimension dimension; private int Width, Height; private CanvasExcavator canvasExcavator = new CanvasExcavator(); - private JButton CreateButton = new JButton("Создать экскаватор"); - private JButton CreateBullButton = new JButton("Создать бульдозер"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton(); private JButton LeftButton = new JButton(); @@ -31,43 +23,17 @@ public class FormExcavator extends JFrame { 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 "DrawingBulldozer": - canvasExcavator._drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); - canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); - canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); - canvasExcavator.repaint(); - break; - case "DrawingExcavator": - Color additionalColor = new Color((int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0),(int)(Math.random() * 255 + 0)); - boolean prop = new Random().nextBoolean(); - boolean ladle = new Random().nextBoolean(); - canvasExcavator._drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, prop, ladle); - canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); - canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); - canvasExcavator.repaint(); - break; - default: return; - } - _strategy = null; - ComboBoxStrategy.setEnabled(true); - } - - public void Init() { + public void Init(DrawingBulldozer bulldozer) { setTitle(title); setMinimumSize(dimension); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + Width = getWidth() - 15; Height = getHeight() - 35; + ComboBoxStrategy.setEnabled(true); _strategy = null; + canvasExcavator._drawingBulldozer = bulldozer; - CreateButton.setName("Create"); Icon iconUp = new ImageIcon("res/up.png"); UpButton.setIcon(iconUp); UpButton.setName("Up"); @@ -81,20 +47,6 @@ public class FormExcavator extends JFrame { Icon iconRight = new ImageIcon("res/right.png"); RightButton.setIcon(iconRight); - CreateButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingExcavator"); - } - }); - - CreateBullButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingBulldozer"); - } - }); - ButtonStrategy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -166,16 +118,12 @@ public class FormExcavator extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 85, 160, 35); - CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 25); ButtonStrategy.setBounds(getWidth() - 130, 45, 100, 25); - add(CreateButton); - add(CreateBullButton); add(UpButton); add(DownButton); add(RightButton); diff --git a/src/Program.java b/src/Program.java index 57e76c4..b25f45d 100644 --- a/src/Program.java +++ b/src/Program.java @@ -2,7 +2,7 @@ import java.awt.*; public class Program { public static void main(String[] args) { - FormExcavator form = new FormExcavator("Экскаватор", new Dimension(700, 500)); + FormBulldozerCollection form = new FormBulldozerCollection("Коллекция экскаваторов", new Dimension(1100, 650)); form.Init(); form.setLocationRelativeTo(null); } -- 2.25.1 From cf1bbe31333749b68dadaba0410557f121c3f247 Mon Sep 17 00:00:00 2001 From: insideq <114825525+insideq@users.noreply.github.com> Date: Sat, 11 May 2024 18:06:04 +0400 Subject: [PATCH 02/25] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/FormExcavator.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/FormExcavator.java b/src/FormExcavator.java index 5c6b8dd..2273384 100644 --- a/src/FormExcavator.java +++ b/src/FormExcavator.java @@ -26,7 +26,6 @@ public class FormExcavator extends JFrame { public void Init(DrawingBulldozer bulldozer) { setTitle(title); setMinimumSize(dimension); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Width = getWidth() - 15; Height = getHeight() - 35; -- 2.25.1 From ed70ad795f30afd630264f7383d09bb941daf916 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 13 Apr 2024 16:05:59 +0400 Subject: [PATCH 03/25] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/Main.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 ProjectExcavator/src/Main.java diff --git a/ProjectExcavator/src/Main.java b/ProjectExcavator/src/Main.java new file mode 100644 index 0000000..3e59c38 --- /dev/null +++ b/ProjectExcavator/src/Main.java @@ -0,0 +1,5 @@ +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} \ No newline at end of file -- 2.25.1 From ee561695c114e731c0220e98c1a22298d5ed33c7 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 13 Apr 2024 17:55:17 +0400 Subject: [PATCH 04/25] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/res/down.png | Bin 0 -> 321 bytes ProjectExcavator/res/left.png | Bin 0 -> 270 bytes ProjectExcavator/res/right.png | Bin 0 -> 266 bytes ProjectExcavator/res/up.png | Bin 0 -> 304 bytes ProjectExcavator/src/CanvasExcavator.java | 16 ++ ProjectExcavator/src/DirectionType.java | 6 + ProjectExcavator/src/DrawingExcavator.java | 207 +++++++++++++++++++++ ProjectExcavator/src/DrawingRollers.java | 24 +++ ProjectExcavator/src/EntityExcavator.java | 33 ++++ ProjectExcavator/src/FormExcavator.java | 123 ++++++++++++ ProjectExcavator/src/Main.java | 5 - ProjectExcavator/src/Program.java | 8 + ProjectExcavator/src/RollersCount.java | 12 ++ 13 files changed, 429 insertions(+), 5 deletions(-) create mode 100644 ProjectExcavator/res/down.png create mode 100644 ProjectExcavator/res/left.png create mode 100644 ProjectExcavator/res/right.png create mode 100644 ProjectExcavator/res/up.png create mode 100644 ProjectExcavator/src/CanvasExcavator.java create mode 100644 ProjectExcavator/src/DirectionType.java create mode 100644 ProjectExcavator/src/DrawingExcavator.java create mode 100644 ProjectExcavator/src/DrawingRollers.java create mode 100644 ProjectExcavator/src/EntityExcavator.java create mode 100644 ProjectExcavator/src/FormExcavator.java delete mode 100644 ProjectExcavator/src/Main.java create mode 100644 ProjectExcavator/src/Program.java create mode 100644 ProjectExcavator/src/RollersCount.java diff --git a/ProjectExcavator/res/down.png b/ProjectExcavator/res/down.png new file mode 100644 index 0000000000000000000000000000000000000000..30e0015c4063766af2f6329d54e48713db85bba2 GIT binary patch literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!E2r_jv*25Z>JgZF*-`Ls=F+{m~n)0OB45w zrc=5l=ML(Y^gZA>VyjZJ>Zz@rncrq|4@-?YBsY~1)H9ay0)Fug-0~0WIDgKud^UMy`&B14{sK1X0+!no zN*=JBdnh*VVfcfy?>K(eJ}HX-c`RIP-i$p0*RM?eW_YiRUCil^;<;GH>+wqAHFVdQ&MBb@0E2sh=l}o! literal 0 HcmV?d00001 diff --git a/ProjectExcavator/res/left.png b/ProjectExcavator/res/left.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5b0d0af1df28a6f237891f975f04b0c5b25782 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!Nr~~jv*25$r7xK6GVEN0u8t%BqSD^Xg0`q z$SV4@{dM>wcxZ{f08>(_0w4RM{|+^Br{o0$*pG-eN<0w|kTcjI*Wt)#!E@x8LSrM7 zcEb;50e|+SP=#kqNwXN7I3+}s798R7+G4(7MvwrV3o1EnQeH0uI>YUth6L+j5d#AT2Gf3poT@E*rU0GG;OXk; Jvd$@?2>=PePs9KK literal 0 HcmV?d00001 diff --git a/ProjectExcavator/res/right.png b/ProjectExcavator/res/right.png new file mode 100644 index 0000000000000000000000000000000000000000..e0568bb06e0be9acd0738e1be8dce566438941e3 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!TFvpjv*25$r7xK6GVEN0u8t%BqSD^Y-O+) zuy&fk^Skkfa*L&bgKWon=8yFXeC?lF8!8+aPZ%oH2zESnU}EO&Y4~9v&@8i6PQ_qC zgK$S^V}+GKJ;NhWhaPbOuLD;;Ok@*j7BbcdWM?uAb2wqRKw+8Lfz0O%xFn;P^c2)I z&t4FcVE(w^gm3erISW^?$XzSFtO0e4B8P+o!zE{hoHzG$ZUddl;OXk;vd$@?2>|@M BQY8QY literal 0 HcmV?d00001 diff --git a/ProjectExcavator/res/up.png b/ProjectExcavator/res/up.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5d5b656d9d04a0d1754a88d77d28e393f5edd4 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!K0oojv*25Zzmn(WHJ@XMXdu}hheliXwYcgrWqYk`)hb}x|(dli@< zv~i-wSAX>_6RJ->Wv}F|4$JyBXY%TEUU5%6^-_PG5BNN{xF~ey>A6onZJl#+i{vZc z6(=XIKNeOb=yoYh$Y22WQ%mvv4FO#m{?ec=EA literal 0 HcmV?d00001 diff --git a/ProjectExcavator/src/CanvasExcavator.java b/ProjectExcavator/src/CanvasExcavator.java new file mode 100644 index 0000000..3ad543e --- /dev/null +++ b/ProjectExcavator/src/CanvasExcavator.java @@ -0,0 +1,16 @@ +import javax.swing.*; +import java.awt.*; + +public class CanvasExcavator extends JComponent{ + public DrawingExcavator _drawingExcavator; + public CanvasExcavator(){} + public void paintComponent(Graphics g){ + if(_drawingExcavator == null){ + return; + } + super.paintComponent(g); + Graphics2D g2d = (Graphics2D) g; + _drawingExcavator.DrawTransport(g2d); + super.repaint(); + } +} diff --git a/ProjectExcavator/src/DirectionType.java b/ProjectExcavator/src/DirectionType.java new file mode 100644 index 0000000..d3a2058 --- /dev/null +++ b/ProjectExcavator/src/DirectionType.java @@ -0,0 +1,6 @@ +public enum DirectionType { + Up, + Down, + Left, + Right +} \ No newline at end of file diff --git a/ProjectExcavator/src/DrawingExcavator.java b/ProjectExcavator/src/DrawingExcavator.java new file mode 100644 index 0000000..9278b07 --- /dev/null +++ b/ProjectExcavator/src/DrawingExcavator.java @@ -0,0 +1,207 @@ + +import java.awt.*; +import java.util.Random; + +public class DrawingExcavator { + private EntityExcavator EntityExcavator; // Класс-сущность + public DrawingRollers drawingRollers = null; + + private Integer _startPosX; // Левая координата отрисовки + private Integer _startPosY; // Верхняя координата отрисовки + private Integer _pictureWidth; // Ширина окна отрисовки + private Integer _pictureHeight; // Высота окна отрисовки + private final int _drawingExcWidth = 120; // Ширина отрисовки трактора + private final int _drawingExcHeight = 70; // Высота отрисовки трактора + + + + // Инициализация свойств + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ + EntityExcavator = new EntityExcavator(); + EntityExcavator.Init(speed, weight, bodyColor, additionalColor, prop, ladle); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + drawingRollers = new DrawingRollers(); + drawingRollers.setRollersCount((int)(Math.random() * 4)); + } + + // Смена границ формы отрисовки + public void SetPictureSize(int width, int height) + { + if (_drawingExcWidth > width || _drawingExcHeight > height) + { + return; + } + + if (_startPosX != null && _startPosY != null) { + if (_startPosX < 0) { _startPosX = 0; } + if (_startPosX + _drawingExcWidth > width) { _startPosX = width - _drawingExcWidth; } + if (_startPosY < 0) { _startPosY = 0; } + if (_startPosY + _drawingExcHeight > height) { _startPosY = height - _drawingExcHeight; } + } + _pictureWidth = width; + _pictureHeight = height; + } + + //Установка позиции Экскаватора + public void SetPosition(int x, int y){ + if (_pictureWidth == null || _pictureHeight == null) + { + return; + } + + if (x + _drawingExcWidth > _pictureWidth || x < 0) { + Random random = new Random(); + _startPosX = random.nextInt(_pictureWidth - _drawingExcWidth); + } + else { + _startPosX = x; + } + + if (y + _drawingExcHeight > _pictureHeight || y < 0) { + Random random = new Random(); + _startPosY = random.nextInt(_pictureHeight - _drawingExcHeight); + } + else { + _startPosY = y; + } + } + + // Изменение направления движения + public boolean MoveTransport(DirectionType direction){ + if (EntityExcavator == null || _startPosX == null || _startPosY == null){ + return false; + } + switch (direction) { + case Left: + if (_startPosX - EntityExcavator.Step > 0) { + _startPosX -= (int) EntityExcavator.Step; + } + return true; + case Up: + if (_startPosY - EntityExcavator.Step > 0) { + _startPosY -= (int) EntityExcavator.Step; + } + return true; + case Right: + if (_startPosX + EntityExcavator.Step < _pictureWidth - _drawingExcWidth) { + _startPosX += (int) EntityExcavator.Step; + } + return true; + case Down: + if (_startPosY + EntityExcavator.Step < _pictureHeight - _drawingExcHeight) { + _startPosY += (int) EntityExcavator.Step; + } + return true; + default: + return false; + } + } + + // Отрисовка Экскаватора + public void DrawTransport(Graphics2D g){ + if (EntityExcavator == null || _startPosX == null || _startPosY == null){ + return; + } + + // Границы экскаватора + g.setColor(Color.BLACK); + g.drawRect(_startPosX + 20, _startPosY + 25, 60, 20); // главная нижняя + g.drawRect(_startPosX + 35, _startPosY + 10, 5, 15); + g.drawRect(_startPosX + 55, _startPosY + 3, 22, 22); // кабина + + g.setColor(EntityExcavator.getBodyColor()); + g.fillRect(_startPosX + 21, _startPosY + 26, 59, 19); + g.fillRect(_startPosX + 36, _startPosY + 11, 4, 14); + + g.setColor(Color.cyan); + g.fillRect(_startPosX + 56, _startPosY + 4, 21, 21); + + // Гусеница + g.setColor(Color.BLACK); + g.drawRect(_startPosX + 24, _startPosY + 47, 48, 17); + + // Основные катки + g.setColor(Color.BLACK); + g.drawOval(_startPosX + 15, _startPosY + 47, 17, 17); + g.drawOval(_startPosX + 63, _startPosY + 47, 17, 17); + + g.setColor(EntityExcavator.getBodyColor()); + g.fillOval(_startPosX + 15, _startPosY + 47, 17, 17); + g.fillOval(_startPosX + 63, _startPosY + 47, 17, 17); + + // Малые катки + g.setColor(Color.BLACK); + g.drawOval(_startPosX + 40, _startPosY + 48, 5, 5); + g.drawOval(_startPosX + 50, _startPosY + 48, 5, 5); + + g.setColor(EntityExcavator.getBodyColor()); + g.fillOval(_startPosX + 40, _startPosY + 48, 5, 5); + g.fillOval(_startPosX + 50, _startPosY + 48, 5, 5); + + if (EntityExcavator.getProp()){ + g.setColor(Color.BLACK); + //Опоры + //справа + g.drawRect(_startPosX + 80, _startPosY + 40, 11, 3); + g.drawRect(_startPosX + 87, _startPosY + 43, 5, 25); + g.drawRect(_startPosX + 84, _startPosY + 68, 11, 3); + + //слева + g.drawRect(_startPosX + 6, _startPosY + 40, 13, 3); + g.drawRect(_startPosX + 4, _startPosY + 43, 5, 25); + g.drawRect(_startPosX + 1, _startPosY + 68, 11, 3); + + g.setColor(EntityExcavator.getAdditionalColor()); + //покраска справа + g.fillRect(_startPosX + 81, _startPosY + 41, 10, 2); + g.fillRect(_startPosX + 88, _startPosY + 44, 4, 24); + g.fillRect(_startPosX + 85, _startPosY + 69, 10, 2); + + //покраска слева + g.fillRect(_startPosX + 7, _startPosY + 41, 12, 2); + g.fillRect(_startPosX + 5, _startPosY + 44, 4, 24); + g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); + } + + if(EntityExcavator.getLadle()){ + g.setColor(Color.BLACK); + //Ковш + //ковш(стрела) + g.drawRect(_startPosX + 77, _startPosY + 17, 14, 8); + g.drawRect(_startPosX + 91, _startPosY + 9, 20, 7); + g.drawRect(_startPosX + 111, _startPosY + 17, 9, 20); + + int[] pointsLadleX = {_startPosX + 120, _startPosX + 104, _startPosX + 120}; + int[] pointsLadleY = {_startPosY + 37, _startPosY + 54, _startPosY + 54}; + + Polygon Ladle = new Polygon(pointsLadleX, pointsLadleY, 3); + g.drawPolygon(Ladle); + g.setColor(EntityExcavator.getAdditionalColor()); + g.fillPolygon(Ladle); + //покраска + g.fillRect(_startPosX + 78, _startPosY + 18, 13, 7); + g.fillRect(_startPosX + 92, _startPosY + 10, 19, 6); + g.fillRect(_startPosX + 112, _startPosY + 18, 8, 19); + } + int x = _startPosX; + if (drawingRollers.getRollersCount() != null){ + switch (drawingRollers.getRollersCount()){ + case OneRoller: + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + break; + case TwoRollers: + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + break; + case ThreeRollers: + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 54, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + break; + } + } + } +} diff --git a/ProjectExcavator/src/DrawingRollers.java b/ProjectExcavator/src/DrawingRollers.java new file mode 100644 index 0000000..e42b12f --- /dev/null +++ b/ProjectExcavator/src/DrawingRollers.java @@ -0,0 +1,24 @@ +import java.awt.*; + +public class DrawingRollers { + private RollersCount rollersCount; + public void setRollersCount(int numOfRoller){ + for (RollersCount numofenum : RollersCount.values()){ + if (numofenum.getNumOfRollers() == numOfRoller){ + rollersCount = numofenum; + return; + } + } + } + + public RollersCount getRollersCount(){ + return rollersCount; + } + public void DrawRollers(Graphics g, int x, int y, int width, int height, Color bodyColor){ + g.setColor(bodyColor); + g.fillOval(x, y, width, height); + g.setColor(Color.BLACK); + g.drawOval(x, y, width, height); + g.setColor(bodyColor); + } +} diff --git a/ProjectExcavator/src/EntityExcavator.java b/ProjectExcavator/src/EntityExcavator.java new file mode 100644 index 0000000..75b1aa1 --- /dev/null +++ b/ProjectExcavator/src/EntityExcavator.java @@ -0,0 +1,33 @@ +import java.awt.*; + +public class EntityExcavator { + private int Speed; + private double Weight; + private Color BodyColor; + + public Color getBodyColor() { + return BodyColor; + } + private Color AdditionalColor; + public Color getAdditionalColor(){ + return AdditionalColor; + } + private boolean Prop; + public boolean getProp(){ + return Prop; + } + private boolean Ladle; + public boolean getLadle(){ + return Ladle; + } + public double Step; + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Prop = prop; + Ladle = ladle; + Step = Speed * 100 / Weight; + } +} diff --git a/ProjectExcavator/src/FormExcavator.java b/ProjectExcavator/src/FormExcavator.java new file mode 100644 index 0000000..9834e27 --- /dev/null +++ b/ProjectExcavator/src/FormExcavator.java @@ -0,0 +1,123 @@ +import javax.swing.*; +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.util.Random; + +public class FormExcavator extends JFrame { + private String title; + private Dimension dimension; + private int Width, Height; + private CanvasExcavator canvasExcavator = new CanvasExcavator(); + private JButton CreateButton = new JButton("Создать"); + private JButton UpButton = new JButton(); + private JButton DownButton = new JButton(); + private JButton LeftButton = new JButton(); + private JButton RightButton = new JButton(); + public FormExcavator(String title, Dimension dimension) { + this.title = title; + this.dimension = dimension; + } + public void Init() { + setTitle(title); + setMinimumSize(dimension); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + Width = getWidth() - 15; + Height = getHeight() - 35; + + CreateButton.setName("CREATE"); + Icon iconUp = new ImageIcon("ProjectExcavator/res/up.png"); + UpButton.setIcon(iconUp); + UpButton.setName("UP"); + DownButton.setName("DOWN"); + Icon iconDown = new ImageIcon("ProjectExcavator/res/down.png"); + DownButton.setIcon(iconDown); + LeftButton.setName("LEFT"); + Icon iconLeft = new ImageIcon("ProjectExcavator/res/left.png"); + LeftButton.setIcon(iconLeft); + RightButton.setName("RIGHT"); + Icon iconRight = new ImageIcon("ProjectExcavator/res/right.png"); + RightButton.setIcon(iconRight); + + CreateButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + int StartPositionX = (int)(Math.random() * 90 + 10); + int StartPositionY = (int)(Math.random() * 90 + 10); + int speed = (int)(Math.random() * 300 + 100); + double weight = (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(); + canvasExcavator._drawingExcavator = new DrawingExcavator(); + canvasExcavator._drawingExcavator.Init(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); + canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); + canvasExcavator._drawingExcavator.SetPosition( StartPositionX, StartPositionY); + canvasExcavator.repaint(); + } + }); + + ActionListener actionListener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent event) { + if (canvasExcavator._drawingExcavator == null) return; + boolean result = false; + switch ((((JButton)(event.getSource())).getName())) { + case "UP": + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Up); + break; + case "DOWN": + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Down); + break; + case "LEFT": + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Left); + break; + case "RIGHT": + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Right); + break; + } + if (result) { + canvasExcavator.repaint(); + } + } + }; + UpButton.addActionListener(actionListener); + DownButton.addActionListener(actionListener); + LeftButton.addActionListener(actionListener); + RightButton.addActionListener(actionListener); + + setSize(dimension.width,dimension.height); + setLayout(null); + canvasExcavator.setBounds(0,0, getWidth(), getHeight()); + CreateButton.setBounds(10, getHeight() - 90, 100, 35); + UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); + DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); + RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); + LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); + add(CreateButton); + add(UpButton); + add(DownButton); + add(RightButton); + add(LeftButton); + add(canvasExcavator); + setVisible(true); + //обработка события изменения размеров окна + addComponentListener(new ComponentAdapter() { + public void componentResized(ComponentEvent e) { + Width = getWidth() - 15; + Height = getHeight() - 35; + if (canvasExcavator._drawingExcavator != null) + canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); + canvasExcavator.setBounds(0,0, getWidth(), getHeight()); + CreateButton.setBounds(10, getHeight() - 90, 100, 35); + UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); + DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); + RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); + LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); + } + }); + } +} diff --git a/ProjectExcavator/src/Main.java b/ProjectExcavator/src/Main.java deleted file mode 100644 index 3e59c38..0000000 --- a/ProjectExcavator/src/Main.java +++ /dev/null @@ -1,5 +0,0 @@ -public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} \ No newline at end of file diff --git a/ProjectExcavator/src/Program.java b/ProjectExcavator/src/Program.java new file mode 100644 index 0000000..a6a309a --- /dev/null +++ b/ProjectExcavator/src/Program.java @@ -0,0 +1,8 @@ +import java.awt.*; + +public class Program { + public static void main(String[] args) { + FormExcavator form = new FormExcavator("Экскаватор", new Dimension(700, 500)); + form.Init(); + } +} \ No newline at end of file diff --git a/ProjectExcavator/src/RollersCount.java b/ProjectExcavator/src/RollersCount.java new file mode 100644 index 0000000..c8603d5 --- /dev/null +++ b/ProjectExcavator/src/RollersCount.java @@ -0,0 +1,12 @@ +public enum RollersCount { + OneRoller(1), + TwoRollers(2), + ThreeRollers(3); + private int numOfRollers; + RollersCount(int numOfRollers){ + this.numOfRollers = numOfRollers; + } + public int getNumOfRollers(){ + return numOfRollers; + } +} -- 2.25.1 From 4c5a29427dad8cf08b4c19a534ab92c7521122d2 Mon Sep 17 00:00:00 2001 From: insideq Date: Sun, 14 Apr 2024 23:58:03 +0400 Subject: [PATCH 05/25] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=E2=84=962?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DifferentRollers/DrawingRollersCross.java | 32 ++++ .../DrawingRollersPlus.java} | 12 +- .../DifferentRollers/DrawingRollersStar.java | 34 +++++ .../DifferentRollers/IDifferentRollers.java | 9 ++ .../{ => DifferentRollers}/RollersCount.java | 2 + .../src/{ => Drawings}/CanvasExcavator.java | 8 +- .../src/{ => Drawings}/DirectionType.java | 3 + .../DrawingBulldozer.java} | 144 ++++++++---------- .../src/Drawings/DrawingExcavator.java | 67 ++++++++ .../src/Entities/EntityBulldozer.java | 20 +++ .../src/Entities/EntityExcavator.java | 18 +++ ProjectExcavator/src/EntityExcavator.java | 33 ---- ProjectExcavator/src/FormExcavator.java | 130 +++++++++++++--- .../MovementStrategy/AbstractStrategy.java | 56 +++++++ .../MovementStrategy/IMoveableObjects.java | 7 + .../src/MovementStrategy/MoveToBorder.java | 26 ++++ .../src/MovementStrategy/MoveToCenter.java | 48 ++++++ .../MovementStrategy/MoveableExcavator.java | 45 ++++++ .../MovementStrategy/MovementDirection.java | 8 + .../MovementStrategy/ObjectParameters.java | 27 ++++ .../src/MovementStrategy/StrategyStatus.java | 7 + 21 files changed, 595 insertions(+), 141 deletions(-) create mode 100644 ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java rename ProjectExcavator/src/{DrawingRollers.java => DifferentRollers/DrawingRollersPlus.java} (65%) create mode 100644 ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java create mode 100644 ProjectExcavator/src/DifferentRollers/IDifferentRollers.java rename ProjectExcavator/src/{ => DifferentRollers}/RollersCount.java (90%) rename ProjectExcavator/src/{ => Drawings}/CanvasExcavator.java (66%) rename ProjectExcavator/src/{ => Drawings}/DirectionType.java (67%) rename ProjectExcavator/src/{DrawingExcavator.java => Drawings/DrawingBulldozer.java} (52%) create mode 100644 ProjectExcavator/src/Drawings/DrawingExcavator.java create mode 100644 ProjectExcavator/src/Entities/EntityBulldozer.java create mode 100644 ProjectExcavator/src/Entities/EntityExcavator.java delete mode 100644 ProjectExcavator/src/EntityExcavator.java create mode 100644 ProjectExcavator/src/MovementStrategy/AbstractStrategy.java create mode 100644 ProjectExcavator/src/MovementStrategy/IMoveableObjects.java create mode 100644 ProjectExcavator/src/MovementStrategy/MoveToBorder.java create mode 100644 ProjectExcavator/src/MovementStrategy/MoveToCenter.java create mode 100644 ProjectExcavator/src/MovementStrategy/MoveableExcavator.java create mode 100644 ProjectExcavator/src/MovementStrategy/MovementDirection.java create mode 100644 ProjectExcavator/src/MovementStrategy/ObjectParameters.java create mode 100644 ProjectExcavator/src/MovementStrategy/StrategyStatus.java diff --git a/ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java b/ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java new file mode 100644 index 0000000..30a006b --- /dev/null +++ b/ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java @@ -0,0 +1,32 @@ +package DifferentRollers; + +import java.awt.*; + +public class DrawingRollersCross implements IDifferentRollers{ + private RollersCount rollersCount; + @Override + public void setRollersCount(int numOfRoller){ + for (RollersCount numofenum : RollersCount.values()){ + if (numofenum.getNumOfRollers() == numOfRoller){ + rollersCount = numofenum; + return; + } + } + } + + @Override + public RollersCount getRollersCount(){ + return rollersCount; + } + + @Override + public void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor){ + g.setColor(bodyColor); + g.fillOval(x, y, width, height); + g.setColor(Color.BLACK); + g.drawLine(x+2, y+2, x+6, y+6); + g.drawLine(x+2, y+6, x+6, y+2); + g.drawOval(x, y, width, height); + g.setColor(bodyColor); + } +} diff --git a/ProjectExcavator/src/DrawingRollers.java b/ProjectExcavator/src/DifferentRollers/DrawingRollersPlus.java similarity index 65% rename from ProjectExcavator/src/DrawingRollers.java rename to ProjectExcavator/src/DifferentRollers/DrawingRollersPlus.java index e42b12f..1754e45 100644 --- a/ProjectExcavator/src/DrawingRollers.java +++ b/ProjectExcavator/src/DifferentRollers/DrawingRollersPlus.java @@ -1,7 +1,10 @@ +package DifferentRollers; + import java.awt.*; -public class DrawingRollers { +public class DrawingRollersPlus implements IDifferentRollers{ private RollersCount rollersCount; + @Override public void setRollersCount(int numOfRoller){ for (RollersCount numofenum : RollersCount.values()){ if (numofenum.getNumOfRollers() == numOfRoller){ @@ -11,13 +14,18 @@ public class DrawingRollers { } } + @Override public RollersCount getRollersCount(){ return rollersCount; } - public void DrawRollers(Graphics g, int x, int y, int width, int height, Color bodyColor){ + + @Override + public void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor){ g.setColor(bodyColor); g.fillOval(x, y, width, height); g.setColor(Color.BLACK); + g.drawLine(x+4, y, x+4, y+8); + g.drawLine(x, y+4, x+8, y+4); g.drawOval(x, y, width, height); g.setColor(bodyColor); } diff --git a/ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java b/ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java new file mode 100644 index 0000000..6ec0643 --- /dev/null +++ b/ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java @@ -0,0 +1,34 @@ +package DifferentRollers; + +import java.awt.*; + +public class DrawingRollersStar implements IDifferentRollers{ + private RollersCount rollersCount; + @Override + public void setRollersCount(int numOfRoller){ + for (RollersCount numofenum : RollersCount.values()){ + if (numofenum.getNumOfRollers() == numOfRoller){ + rollersCount = numofenum; + return; + } + } + } + + @Override + public RollersCount getRollersCount(){ + return rollersCount; + } + + @Override + public void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor){ + g.setColor(bodyColor); + g.fillOval(x, y, width, height); + g.setColor(Color.BLACK); + g.drawLine(x+4, y, x+4, y+8); + g.drawLine(x, y+4, x+8, y+4); + g.drawLine(x+2, y+2, x+6, y+6); + g.drawLine(x+2, y+6, x+6, y+2); + g.drawOval(x, y, width, height); + g.setColor(bodyColor); + } +} diff --git a/ProjectExcavator/src/DifferentRollers/IDifferentRollers.java b/ProjectExcavator/src/DifferentRollers/IDifferentRollers.java new file mode 100644 index 0000000..ca40065 --- /dev/null +++ b/ProjectExcavator/src/DifferentRollers/IDifferentRollers.java @@ -0,0 +1,9 @@ +package DifferentRollers; + +import java.awt.*; + +public interface IDifferentRollers { + void setRollersCount(int numOfRoller); + RollersCount getRollersCount(); + void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor); +} diff --git a/ProjectExcavator/src/RollersCount.java b/ProjectExcavator/src/DifferentRollers/RollersCount.java similarity index 90% rename from ProjectExcavator/src/RollersCount.java rename to ProjectExcavator/src/DifferentRollers/RollersCount.java index c8603d5..94f8bb4 100644 --- a/ProjectExcavator/src/RollersCount.java +++ b/ProjectExcavator/src/DifferentRollers/RollersCount.java @@ -1,3 +1,5 @@ +package DifferentRollers; + public enum RollersCount { OneRoller(1), TwoRollers(2), diff --git a/ProjectExcavator/src/CanvasExcavator.java b/ProjectExcavator/src/Drawings/CanvasExcavator.java similarity index 66% rename from ProjectExcavator/src/CanvasExcavator.java rename to ProjectExcavator/src/Drawings/CanvasExcavator.java index 3ad543e..38210aa 100644 --- a/ProjectExcavator/src/CanvasExcavator.java +++ b/ProjectExcavator/src/Drawings/CanvasExcavator.java @@ -1,16 +1,18 @@ +package Drawings; + import javax.swing.*; import java.awt.*; public class CanvasExcavator extends JComponent{ - public DrawingExcavator _drawingExcavator; + public DrawingBulldozer _drawingBulldozer; public CanvasExcavator(){} public void paintComponent(Graphics g){ - if(_drawingExcavator == null){ + if(_drawingBulldozer == null){ return; } super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; - _drawingExcavator.DrawTransport(g2d); + _drawingBulldozer.DrawTransport(g2d); super.repaint(); } } diff --git a/ProjectExcavator/src/DirectionType.java b/ProjectExcavator/src/Drawings/DirectionType.java similarity index 67% rename from ProjectExcavator/src/DirectionType.java rename to ProjectExcavator/src/Drawings/DirectionType.java index d3a2058..618c8b4 100644 --- a/ProjectExcavator/src/DirectionType.java +++ b/ProjectExcavator/src/Drawings/DirectionType.java @@ -1,4 +1,7 @@ +package Drawings; + public enum DirectionType { + Unknow, Up, Down, Left, diff --git a/ProjectExcavator/src/DrawingExcavator.java b/ProjectExcavator/src/Drawings/DrawingBulldozer.java similarity index 52% rename from ProjectExcavator/src/DrawingExcavator.java rename to ProjectExcavator/src/Drawings/DrawingBulldozer.java index 9278b07..3b0f2e9 100644 --- a/ProjectExcavator/src/DrawingExcavator.java +++ b/ProjectExcavator/src/Drawings/DrawingBulldozer.java @@ -1,30 +1,59 @@ +package Drawings; +import DifferentRollers.DrawingRollersCross; +import DifferentRollers.DrawingRollersPlus; +import DifferentRollers.DrawingRollersStar; +import DifferentRollers.IDifferentRollers; +import Entities.EntityBulldozer; + +import javax.swing.*; import java.awt.*; import java.util.Random; -public class DrawingExcavator { - private EntityExcavator EntityExcavator; // Класс-сущность - public DrawingRollers drawingRollers = null; - - private Integer _startPosX; // Левая координата отрисовки - private Integer _startPosY; // Верхняя координата отрисовки +public class DrawingBulldozer extends JPanel { + public Entities.EntityBulldozer EntityBulldozer; + public IDifferentRollers drawingRollers; + public Integer _startPosX; // Левая координата отрисовки + public Integer _startPosY; // Верхняя координата отрисовки private Integer _pictureWidth; // Ширина окна отрисовки private Integer _pictureHeight; // Высота окна отрисовки - private final int _drawingExcWidth = 120; // Ширина отрисовки трактора - private final int _drawingExcHeight = 70; // Высота отрисовки трактора + protected int _drawingExcWidth = 120; // Ширина отрисовки трактора + protected int _drawingExcHeight = 70; // Высота отрисовки трактора + public Integer GetPosX(){return _startPosX;} + public Integer GetPosY(){return _startPosY;} + public Integer GetWidth(){return _drawingExcWidth;} + public Integer GetHeight(){return _drawingExcHeight;} - - - // Инициализация свойств - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ - EntityExcavator = new EntityExcavator(); - EntityExcavator.Init(speed, weight, bodyColor, additionalColor, prop, ladle); + protected DrawingBulldozer(){ _pictureWidth = null; _pictureHeight = null; _startPosX = null; _startPosY = null; - drawingRollers = new DrawingRollers(); - drawingRollers.setRollersCount((int)(Math.random() * 4)); + } + + protected void SetTypeRollers(){ + int rollersCount = (int)(Math.random()*4); + switch ((int)(Math.random()*3+1)){ + case 1: + drawingRollers = new DrawingRollersCross(); + break; + case 2: + drawingRollers = new DrawingRollersPlus(); + break; + case 3: + drawingRollers = new DrawingRollersStar(); + break; + default: + rollersCount = 0; + break; + } + drawingRollers.setRollersCount(rollersCount); + } + + public DrawingBulldozer(int speed, double weight, Color bodyColor){ + super(); + EntityBulldozer = new EntityBulldozer(speed, weight, bodyColor); + SetTypeRollers(); } // Смена границ формы отрисовки @@ -71,28 +100,28 @@ public class DrawingExcavator { // Изменение направления движения public boolean MoveTransport(DirectionType direction){ - if (EntityExcavator == null || _startPosX == null || _startPosY == null){ + if (EntityBulldozer == null || _startPosX == null || _startPosY == null){ return false; } switch (direction) { case Left: - if (_startPosX - EntityExcavator.Step > 0) { - _startPosX -= (int) EntityExcavator.Step; + if (_startPosX - EntityBulldozer.Step > 0) { + _startPosX -= (int) EntityBulldozer.Step; } return true; case Up: - if (_startPosY - EntityExcavator.Step > 0) { - _startPosY -= (int) EntityExcavator.Step; + if (_startPosY - EntityBulldozer.Step > 0) { + _startPosY -= (int) EntityBulldozer.Step; } return true; case Right: - if (_startPosX + EntityExcavator.Step < _pictureWidth - _drawingExcWidth) { - _startPosX += (int) EntityExcavator.Step; + if (_startPosX + EntityBulldozer.Step < _pictureWidth - _drawingExcWidth) { + _startPosX += (int) EntityBulldozer.Step; } return true; case Down: - if (_startPosY + EntityExcavator.Step < _pictureHeight - _drawingExcHeight) { - _startPosY += (int) EntityExcavator.Step; + if (_startPosY + EntityBulldozer.Step < _pictureHeight - _drawingExcHeight) { + _startPosY += (int) EntityBulldozer.Step; } return true; default: @@ -102,7 +131,7 @@ public class DrawingExcavator { // Отрисовка Экскаватора public void DrawTransport(Graphics2D g){ - if (EntityExcavator == null || _startPosX == null || _startPosY == null){ + if (EntityBulldozer == null || _startPosX == null || _startPosY == null){ return; } @@ -112,7 +141,7 @@ public class DrawingExcavator { g.drawRect(_startPosX + 35, _startPosY + 10, 5, 15); g.drawRect(_startPosX + 55, _startPosY + 3, 22, 22); // кабина - g.setColor(EntityExcavator.getBodyColor()); + g.setColor(EntityBulldozer.getBodyColor()); g.fillRect(_startPosX + 21, _startPosY + 26, 59, 19); g.fillRect(_startPosX + 36, _startPosY + 11, 4, 14); @@ -128,7 +157,7 @@ public class DrawingExcavator { g.drawOval(_startPosX + 15, _startPosY + 47, 17, 17); g.drawOval(_startPosX + 63, _startPosY + 47, 17, 17); - g.setColor(EntityExcavator.getBodyColor()); + g.setColor(EntityBulldozer.getBodyColor()); g.fillOval(_startPosX + 15, _startPosY + 47, 17, 17); g.fillOval(_startPosX + 63, _startPosY + 47, 17, 17); @@ -137,69 +166,24 @@ public class DrawingExcavator { g.drawOval(_startPosX + 40, _startPosY + 48, 5, 5); g.drawOval(_startPosX + 50, _startPosY + 48, 5, 5); - g.setColor(EntityExcavator.getBodyColor()); + g.setColor(EntityBulldozer.getBodyColor()); g.fillOval(_startPosX + 40, _startPosY + 48, 5, 5); g.fillOval(_startPosX + 50, _startPosY + 48, 5, 5); - if (EntityExcavator.getProp()){ - g.setColor(Color.BLACK); - //Опоры - //справа - g.drawRect(_startPosX + 80, _startPosY + 40, 11, 3); - g.drawRect(_startPosX + 87, _startPosY + 43, 5, 25); - g.drawRect(_startPosX + 84, _startPosY + 68, 11, 3); - - //слева - g.drawRect(_startPosX + 6, _startPosY + 40, 13, 3); - g.drawRect(_startPosX + 4, _startPosY + 43, 5, 25); - g.drawRect(_startPosX + 1, _startPosY + 68, 11, 3); - - g.setColor(EntityExcavator.getAdditionalColor()); - //покраска справа - g.fillRect(_startPosX + 81, _startPosY + 41, 10, 2); - g.fillRect(_startPosX + 88, _startPosY + 44, 4, 24); - g.fillRect(_startPosX + 85, _startPosY + 69, 10, 2); - - //покраска слева - g.fillRect(_startPosX + 7, _startPosY + 41, 12, 2); - g.fillRect(_startPosX + 5, _startPosY + 44, 4, 24); - g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); - } - - if(EntityExcavator.getLadle()){ - g.setColor(Color.BLACK); - //Ковш - //ковш(стрела) - g.drawRect(_startPosX + 77, _startPosY + 17, 14, 8); - g.drawRect(_startPosX + 91, _startPosY + 9, 20, 7); - g.drawRect(_startPosX + 111, _startPosY + 17, 9, 20); - - int[] pointsLadleX = {_startPosX + 120, _startPosX + 104, _startPosX + 120}; - int[] pointsLadleY = {_startPosY + 37, _startPosY + 54, _startPosY + 54}; - - Polygon Ladle = new Polygon(pointsLadleX, pointsLadleY, 3); - g.drawPolygon(Ladle); - g.setColor(EntityExcavator.getAdditionalColor()); - g.fillPolygon(Ladle); - //покраска - g.fillRect(_startPosX + 78, _startPosY + 18, 13, 7); - g.fillRect(_startPosX + 92, _startPosY + 10, 19, 6); - g.fillRect(_startPosX + 112, _startPosY + 18, 8, 19); - } int x = _startPosX; if (drawingRollers.getRollersCount() != null){ switch (drawingRollers.getRollersCount()){ case OneRoller: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); break; case TwoRollers: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); + drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); break; case ThreeRollers: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - drawingRollers.DrawRollers(g,x + 54, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); + drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); + drawingRollers.DrawRollers(g,x + 54, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); break; } } diff --git a/ProjectExcavator/src/Drawings/DrawingExcavator.java b/ProjectExcavator/src/Drawings/DrawingExcavator.java new file mode 100644 index 0000000..6600b23 --- /dev/null +++ b/ProjectExcavator/src/Drawings/DrawingExcavator.java @@ -0,0 +1,67 @@ +package Drawings; + +import Entities.EntityExcavator; + +import java.awt.*; + +public class DrawingExcavator extends DrawingBulldozer{ + + public DrawingExcavator(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ + EntityBulldozer = new EntityExcavator(speed, weight, bodyColor, additionalColor, prop, ladle); + SetTypeRollers(); + } + + // Отрисовка Экскаватора + @Override + public void DrawTransport(Graphics2D g){ + if (EntityBulldozer == null || !(EntityBulldozer instanceof EntityExcavator excavator) || _startPosX == null || _startPosY == null){ + return; + } + super.DrawTransport(g); + if (excavator.Prop){ + g.setColor(Color.BLACK); + //Опоры + //справа + g.drawRect(_startPosX + 80, _startPosY + 40, 11, 3); + g.drawRect(_startPosX + 87, _startPosY + 43, 5, 25); + g.drawRect(_startPosX + 84, _startPosY + 68, 11, 3); + + //слева + g.drawRect(_startPosX + 6, _startPosY + 40, 13, 3); + g.drawRect(_startPosX + 4, _startPosY + 43, 5, 25); + g.drawRect(_startPosX + 1, _startPosY + 68, 11, 3); + + g.setColor(excavator.getAdditionalColor()); + //покраска справа + g.fillRect(_startPosX + 81, _startPosY + 41, 10, 2); + g.fillRect(_startPosX + 88, _startPosY + 44, 4, 24); + g.fillRect(_startPosX + 85, _startPosY + 69, 10, 2); + + //покраска слева + g.fillRect(_startPosX + 7, _startPosY + 41, 12, 2); + g.fillRect(_startPosX + 5, _startPosY + 44, 4, 24); + g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); + } + + if(excavator.Ladle){ + g.setColor(Color.BLACK); + //Ковш + //ковш(стрела) + g.drawRect(_startPosX + 77, _startPosY + 17, 14, 8); + g.drawRect(_startPosX + 91, _startPosY + 9, 20, 7); + g.drawRect(_startPosX + 111, _startPosY + 17, 9, 20); + + int[] pointsLadleX = {_startPosX + 120, _startPosX + 104, _startPosX + 120}; + int[] pointsLadleY = {_startPosY + 37, _startPosY + 54, _startPosY + 54}; + + Polygon Ladle = new Polygon(pointsLadleX, pointsLadleY, 3); + g.drawPolygon(Ladle); + g.setColor(excavator.getAdditionalColor()); + g.fillPolygon(Ladle); + //покраска + g.fillRect(_startPosX + 78, _startPosY + 18, 13, 7); + g.fillRect(_startPosX + 92, _startPosY + 10, 19, 6); + g.fillRect(_startPosX + 112, _startPosY + 18, 8, 19); + } + } +} diff --git a/ProjectExcavator/src/Entities/EntityBulldozer.java b/ProjectExcavator/src/Entities/EntityBulldozer.java new file mode 100644 index 0000000..7dfab9e --- /dev/null +++ b/ProjectExcavator/src/Entities/EntityBulldozer.java @@ -0,0 +1,20 @@ +package Entities; + +import java.awt.*; + +public class EntityBulldozer { + private int Speed; + private double Weight; + private Color BodyColor; + + public Color getBodyColor() { + return BodyColor; + } + public double Step; + public EntityBulldozer(int speed, double weight, Color bodyColor){ + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + Step = Speed * 100 / Weight; + } +} diff --git a/ProjectExcavator/src/Entities/EntityExcavator.java b/ProjectExcavator/src/Entities/EntityExcavator.java new file mode 100644 index 0000000..eca47e9 --- /dev/null +++ b/ProjectExcavator/src/Entities/EntityExcavator.java @@ -0,0 +1,18 @@ +package Entities; + +import java.awt.*; + +public class EntityExcavator extends EntityBulldozer{ + private Color AdditionalColor; + public Color getAdditionalColor(){ + return AdditionalColor; + } + public boolean Prop; + public boolean Ladle; + public EntityExcavator(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ + super(speed, weight, bodyColor); + AdditionalColor = additionalColor; + Prop = prop; + Ladle = ladle; + } +} diff --git a/ProjectExcavator/src/EntityExcavator.java b/ProjectExcavator/src/EntityExcavator.java deleted file mode 100644 index 75b1aa1..0000000 --- a/ProjectExcavator/src/EntityExcavator.java +++ /dev/null @@ -1,33 +0,0 @@ -import java.awt.*; - -public class EntityExcavator { - private int Speed; - private double Weight; - private Color BodyColor; - - public Color getBodyColor() { - return BodyColor; - } - private Color AdditionalColor; - public Color getAdditionalColor(){ - return AdditionalColor; - } - private boolean Prop; - public boolean getProp(){ - return Prop; - } - private boolean Ladle; - public boolean getLadle(){ - return Ladle; - } - public double Step; - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ - Speed = speed; - Weight = weight; - BodyColor = bodyColor; - AdditionalColor = additionalColor; - Prop = prop; - Ladle = ladle; - Step = Speed * 100 / Weight; - } -} diff --git a/ProjectExcavator/src/FormExcavator.java b/ProjectExcavator/src/FormExcavator.java index 9834e27..a810d30 100644 --- a/ProjectExcavator/src/FormExcavator.java +++ b/ProjectExcavator/src/FormExcavator.java @@ -1,3 +1,9 @@ +import Drawings.CanvasExcavator; +import Drawings.DirectionType; +import Drawings.DrawingBulldozer; +import Drawings.DrawingExcavator; +import MovementStrategy.*; + import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; @@ -11,23 +17,58 @@ public class FormExcavator extends JFrame { private Dimension dimension; private int Width, Height; private CanvasExcavator canvasExcavator = new CanvasExcavator(); - private JButton CreateButton = new JButton("Создать"); + private JButton CreateButton = new JButton("Создать экскаватор"); + private JButton CreateBullButton = new JButton("Создать бульдозер"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton(); private JButton LeftButton = new JButton(); private JButton RightButton = new JButton(); + private AbstractStrategy _strategy; + private JComboBox ComboBoxStrategy = new JComboBox(new String[]{"К центру", "К краю"}); + private JButton ButtonStrategy = new JButton("Шаг"); public FormExcavator(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 "DrawingBulldozer": + canvasExcavator._drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); + canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); + canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); + canvasExcavator.repaint(); + break; + case "DrawingExcavator": + 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(); + canvasExcavator._drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); + canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); + canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); + canvasExcavator.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; + _strategy = null; CreateButton.setName("CREATE"); + CreateBullButton.setName("CREATEBULLBUTTON"); Icon iconUp = new ImageIcon("ProjectExcavator/res/up.png"); UpButton.setIcon(iconUp); UpButton.setName("UP"); @@ -44,39 +85,73 @@ public class FormExcavator 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 = (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(); - canvasExcavator._drawingExcavator = new DrawingExcavator(); - canvasExcavator._drawingExcavator.Init(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); - canvasExcavator._drawingExcavator.SetPosition( StartPositionX, StartPositionY); - canvasExcavator.repaint(); + CreateObject("DrawingExcavator"); + } + }); + + CreateBullButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingBulldozer"); + } + }); + + ButtonStrategy.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (canvasExcavator._drawingBulldozer == 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 MoveableExcavator(canvasExcavator._drawingBulldozer), 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 (canvasExcavator._drawingExcavator == null) return; + if (canvasExcavator._drawingBulldozer == null) return; boolean result = false; switch ((((JButton)(event.getSource())).getName())) { case "UP": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Up); + result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Up); break; case "DOWN": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Down); + result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Down); break; case "LEFT": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Left); + result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Left); break; case "RIGHT": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Right); + result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Right); break; } if (result) { @@ -92,16 +167,22 @@ public class FormExcavator extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 90, 100, 35); + CreateButton.setBounds(10, getHeight() - 85, 160, 35); + CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); + ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 25); + ButtonStrategy.setBounds(getWidth() - 130, 45, 100, 25); add(CreateButton); + add(CreateBullButton); add(UpButton); add(DownButton); add(RightButton); add(LeftButton); + add(ButtonStrategy); + add(ComboBoxStrategy); add(canvasExcavator); setVisible(true); //обработка события изменения размеров окна @@ -109,14 +190,17 @@ public class FormExcavator extends JFrame { public void componentResized(ComponentEvent e) { Width = getWidth() - 15; Height = getHeight() - 35; - if (canvasExcavator._drawingExcavator != null) - canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); + if (canvasExcavator._drawingBulldozer != null) + canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 90, 100, 35); + CreateButton.setBounds(10, getHeight() - 85, 160, 35); + CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); + ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 25); + ButtonStrategy.setBounds(getWidth() - 130, 45, 100, 25); } }); } diff --git a/ProjectExcavator/src/MovementStrategy/AbstractStrategy.java b/ProjectExcavator/src/MovementStrategy/AbstractStrategy.java new file mode 100644 index 0000000..05a10f8 --- /dev/null +++ b/ProjectExcavator/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 (IsTargetDestination()) + { + _state = StrategyStatus.Finish; + return; + } + MoveToTarget(); + } + protected boolean MoveLeft() {return MoveTo(MovementDirection.Left);} + protected boolean MoveRight() {return MoveTo(MovementDirection.Right);} + protected boolean MoveUp() {return MoveTo(MovementDirection.Up);} + protected boolean MoveDown() {return MoveTo(MovementDirection.Down);} + protected ObjectParameters GetObjectParameters() {return _moveableObject.GetObjectPosition();} + protected Integer GetStep() + { + if (_state != StrategyStatus.InProgress) + { + return null; + } + return _moveableObject.GetStep(); + } + protected abstract void MoveToTarget(); + protected abstract boolean IsTargetDestination(); + 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/ProjectExcavator/src/MovementStrategy/IMoveableObjects.java b/ProjectExcavator/src/MovementStrategy/IMoveableObjects.java new file mode 100644 index 0000000..4ecb751 --- /dev/null +++ b/ProjectExcavator/src/MovementStrategy/IMoveableObjects.java @@ -0,0 +1,7 @@ +package MovementStrategy; + +public interface IMoveableObjects { + ObjectParameters GetObjectPosition(); + int GetStep(); + boolean TryMoveObject(MovementDirection direction); +} diff --git a/ProjectExcavator/src/MovementStrategy/MoveToBorder.java b/ProjectExcavator/src/MovementStrategy/MoveToBorder.java new file mode 100644 index 0000000..647a390 --- /dev/null +++ b/ProjectExcavator/src/MovementStrategy/MoveToBorder.java @@ -0,0 +1,26 @@ +package MovementStrategy; + +public class MoveToBorder extends AbstractStrategy{ + @Override + protected boolean IsTargetDestination(){ + 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/ProjectExcavator/src/MovementStrategy/MoveToCenter.java b/ProjectExcavator/src/MovementStrategy/MoveToCenter.java new file mode 100644 index 0000000..74a093a --- /dev/null +++ b/ProjectExcavator/src/MovementStrategy/MoveToCenter.java @@ -0,0 +1,48 @@ +package MovementStrategy; + +public class MoveToCenter extends AbstractStrategy{ + @Override + protected boolean IsTargetDestination() { + 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/ProjectExcavator/src/MovementStrategy/MoveableExcavator.java b/ProjectExcavator/src/MovementStrategy/MoveableExcavator.java new file mode 100644 index 0000000..24e6501 --- /dev/null +++ b/ProjectExcavator/src/MovementStrategy/MoveableExcavator.java @@ -0,0 +1,45 @@ +package MovementStrategy; + +import Drawings.CanvasExcavator; +import Drawings.DrawingBulldozer; +import Drawings.DirectionType; + +public class MoveableExcavator implements IMoveableObjects{ + private CanvasExcavator canvas = new CanvasExcavator(); + public MoveableExcavator(DrawingBulldozer drawingBulldozer){ + canvas._drawingBulldozer = drawingBulldozer; + } + + @Override + public ObjectParameters GetObjectPosition() { + if (canvas._drawingBulldozer == null || canvas._drawingBulldozer.EntityBulldozer == null || + canvas._drawingBulldozer.GetPosX() == null || canvas._drawingBulldozer.GetPosY() == null) + { + return null; + } + return new ObjectParameters(canvas._drawingBulldozer.GetPosX(), canvas._drawingBulldozer.GetPosY(), + canvas._drawingBulldozer.GetWidth(), canvas._drawingBulldozer.GetHeight()); + } + @Override + public int GetStep() { + return (int)(canvas._drawingBulldozer.EntityBulldozer.Step); + } + @Override + public boolean TryMoveObject(MovementDirection direction) { + if (canvas._drawingBulldozer == null || canvas._drawingBulldozer.EntityBulldozer == null) + { + return false; + } + return canvas._drawingBulldozer.MoveTransport(GetDirectionType(direction)); + } + private static DirectionType GetDirectionType(MovementDirection direction) + { + switch (direction) { + case Left: return DirectionType.Left; + case Right: return DirectionType.Right; + case Up: return DirectionType.Up; + case Down: return DirectionType.Down; + default: return DirectionType.Unknow; + } + } +} diff --git a/ProjectExcavator/src/MovementStrategy/MovementDirection.java b/ProjectExcavator/src/MovementStrategy/MovementDirection.java new file mode 100644 index 0000000..661d82f --- /dev/null +++ b/ProjectExcavator/src/MovementStrategy/MovementDirection.java @@ -0,0 +1,8 @@ +package MovementStrategy; + +public enum MovementDirection { + Up, + Down, + Left, + Right +} \ No newline at end of file diff --git a/ProjectExcavator/src/MovementStrategy/ObjectParameters.java b/ProjectExcavator/src/MovementStrategy/ObjectParameters.java new file mode 100644 index 0000000..b68fe75 --- /dev/null +++ b/ProjectExcavator/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/ProjectExcavator/src/MovementStrategy/StrategyStatus.java b/ProjectExcavator/src/MovementStrategy/StrategyStatus.java new file mode 100644 index 0000000..4f087ea --- /dev/null +++ b/ProjectExcavator/src/MovementStrategy/StrategyStatus.java @@ -0,0 +1,7 @@ +package MovementStrategy; + +public enum StrategyStatus { + NotInit, + InProgress, + Finish +} -- 2.25.1 From 736247db821823c1cb50d31f00fdd329754116f3 Mon Sep 17 00:00:00 2001 From: insideq Date: Sun, 28 Apr 2024 17:39:56 +0400 Subject: [PATCH 06/25] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=E2=84=963?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdditionalCollections.java | 61 +++++ .../AbstractCompany.java | 34 +++ .../BulldozerSharingService.java | 49 ++++ .../ICollectionGenericObjects.java | 12 + .../MassiveGenericObjects.java | 75 ++++++ .../CanvasFormBulldozerCollection.java | 36 +++ .../src/Drawings/DrawingBulldozer.java | 13 +- .../src/Drawings/DrawingExcavator.java | 10 +- .../src/Entities/EntityBulldozer.java | 6 + .../src/Entities/EntityExcavator.java | 6 + .../src/FormAdditionalCollection.java | 137 +++++++++++ .../src/FormBulldozerCollection.java | 220 ++++++++++++++++++ ProjectExcavator/src/FormExcavator.java | 63 +---- ProjectExcavator/src/Program.java | 2 +- 14 files changed, 662 insertions(+), 62 deletions(-) create mode 100644 ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java create mode 100644 ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java create mode 100644 ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java create mode 100644 ProjectExcavator/src/CollectionGenericObjects/ICollectionGenericObjects.java create mode 100644 ProjectExcavator/src/CollectionGenericObjects/MassiveGenericObjects.java create mode 100644 ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java create mode 100644 ProjectExcavator/src/FormAdditionalCollection.java create mode 100644 ProjectExcavator/src/FormBulldozerCollection.java diff --git a/ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java b/ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java new file mode 100644 index 0000000..cdc6005 --- /dev/null +++ b/ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java @@ -0,0 +1,61 @@ +package CollectionAdditionalObjects; + +import DifferentRollers.IDifferentRollers; +import Drawings.DrawingBulldozer; +import Drawings.DrawingExcavator; +import Entities.EntityBulldozer; +import Entities.EntityExcavator; + +import java.lang.reflect.Array; +import java.util.Random; + +public class AdditionalCollections { + public T[] _collectionEntity; + public U[] _collectionRollers; + public AdditionalCollections(int size, Class type1, Class type2) { + _collectionEntity = (T[]) Array.newInstance(type1, size); + _collectionRollers = (U[]) Array.newInstance(type2, size); + CountEntities = size; + CountRollers = size; + } + public int CountEntities; + public int CountRollers; + 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 rollers) { + int index = 0; + while (index < CountRollers) { + if (_collectionRollers[index] == null) + { + _collectionRollers[index] = rollers; + return index; + } + ++index; + } + return -1; + } + public DrawingBulldozer CreateAdditionalCollectionBulldozer() { + Random random = new Random(); + if (_collectionEntity == null || _collectionRollers == null) return null; + T entity = _collectionEntity[random.nextInt(CountEntities)]; + U rollers = _collectionRollers[random.nextInt(CountRollers)]; + DrawingBulldozer drawingShip = null; + if (entity instanceof EntityExcavator) { + drawingShip = new DrawingExcavator((EntityExcavator) entity, rollers); + } + else { + drawingShip = new DrawingBulldozer(entity, rollers); + } + return drawingShip; + } +} diff --git a/ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java b/ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java new file mode 100644 index 0000000..6314a1b --- /dev/null +++ b/ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java @@ -0,0 +1,34 @@ +package CollectionGenericObjects; + +import Drawings.DrawingBulldozer; + +import java.awt.*; + +public abstract class AbstractCompany { + protected int _placeSizeWidth = 195; + protected int _placeSizeHeight = 80; + 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(), DrawingBulldozer.class); + } + //перегрузка операторов в джаве невозможна + public DrawingBulldozer GetRandomObject() + { + return _collection.Get((int)(Math.random()*GetMaxCount())); + } + public void SetPosition() + { + SetObjectsPosition(); + } + public abstract void DrawBackground(Graphics graphics); + protected abstract void SetObjectsPosition(); +} diff --git a/ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java b/ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java new file mode 100644 index 0000000..d40d4a2 --- /dev/null +++ b/ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java @@ -0,0 +1,49 @@ +package CollectionGenericObjects; + +import Drawings.DrawingBulldozer; + +import java.awt.*; + +public class BulldozerSharingService extends AbstractCompany{ + public BulldozerSharingService(int picWidth, int picHeight, ICollectionGenericObjects collection) { + super(picWidth, picHeight, collection); + } + @Override + public void DrawBackground(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 / 2, j * _placeSizeHeight); + } + g.drawLine(i * _placeSizeWidth, 0, i * _placeSizeWidth, _pictureHeight); + } + } + @Override + protected void SetObjectsPosition() { + int width = _pictureWidth / _placeSizeWidth; + int height = _pictureHeight / _placeSizeHeight; + + int posWidth = width - 1; + int posHeight = 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 * posWidth + 4, posHeight * _placeSizeHeight + 4); + } + if (posWidth > 0) + posWidth--; + else { + posWidth = width - 1; + posHeight++; + } + if (posHeight > height) { + return; + } + } + } +} + diff --git a/ProjectExcavator/src/CollectionGenericObjects/ICollectionGenericObjects.java b/ProjectExcavator/src/CollectionGenericObjects/ICollectionGenericObjects.java new file mode 100644 index 0000000..a633cfe --- /dev/null +++ b/ProjectExcavator/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/ProjectExcavator/src/CollectionGenericObjects/MassiveGenericObjects.java b/ProjectExcavator/src/CollectionGenericObjects/MassiveGenericObjects.java new file mode 100644 index 0000000..063fb44 --- /dev/null +++ b/ProjectExcavator/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/ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java b/ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java new file mode 100644 index 0000000..e2e7a70 --- /dev/null +++ b/ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java @@ -0,0 +1,36 @@ +package Drawings; + +import CollectionGenericObjects.AbstractCompany; +import CollectionGenericObjects.ICollectionGenericObjects; +import CollectionGenericObjects.MassiveGenericObjects; + +import javax.swing.*; +import java.awt.*; + +public class CanvasFormBulldozerCollection extends JComponent +{ + //неиспользуемые методы + public ICollectionGenericObjects collection = new MassiveGenericObjects(); + public AbstractCompany company = null; + public void SetCollectionToCanvas(AbstractCompany company) { + this.company = company; + } + public CanvasFormBulldozerCollection(){} + public void paintComponent(Graphics g) { + super.paintComponents(g); + if (company == null || company._collection == null) { + return; + } + company.DrawBackground(g); + for (int i = 0; i < company._collection.getCount(); i++) { + + Graphics2D g2d = (Graphics2D) g; + T obj = (T)company._collection.Get(i); + if (obj instanceof DrawingBulldozer) { + ((DrawingBulldozer) obj).DrawTransport(g2d); + } + } + super.repaint(); + } +} + diff --git a/ProjectExcavator/src/Drawings/DrawingBulldozer.java b/ProjectExcavator/src/Drawings/DrawingBulldozer.java index 3b0f2e9..6b7c9fe 100644 --- a/ProjectExcavator/src/Drawings/DrawingBulldozer.java +++ b/ProjectExcavator/src/Drawings/DrawingBulldozer.java @@ -56,6 +56,17 @@ public class DrawingBulldozer extends JPanel { SetTypeRollers(); } + protected DrawingBulldozer(int _drawingExcWidth, int _drawingExcHeight) { + super(); + this._drawingExcWidth = _drawingExcWidth; + this._drawingExcHeight = _drawingExcHeight; + } + + public DrawingBulldozer(EntityBulldozer entity, IDifferentRollers rollers) { + EntityBulldozer = entity; + drawingRollers = rollers; + } + // Смена границ формы отрисовки public void SetPictureSize(int width, int height) { @@ -171,7 +182,7 @@ public class DrawingBulldozer extends JPanel { g.fillOval(_startPosX + 50, _startPosY + 48, 5, 5); int x = _startPosX; - if (drawingRollers.getRollersCount() != null){ + if (drawingRollers != null && drawingRollers.getRollersCount() != null){ switch (drawingRollers.getRollersCount()){ case OneRoller: drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); diff --git a/ProjectExcavator/src/Drawings/DrawingExcavator.java b/ProjectExcavator/src/Drawings/DrawingExcavator.java index 6600b23..db98370 100644 --- a/ProjectExcavator/src/Drawings/DrawingExcavator.java +++ b/ProjectExcavator/src/Drawings/DrawingExcavator.java @@ -1,5 +1,6 @@ package Drawings; +import DifferentRollers.IDifferentRollers; import Entities.EntityExcavator; import java.awt.*; @@ -11,6 +12,11 @@ public class DrawingExcavator extends DrawingBulldozer{ SetTypeRollers(); } + public DrawingExcavator(EntityExcavator entity, IDifferentRollers decks) { + EntityBulldozer = entity; + drawingRollers = decks; + } + // Отрисовка Экскаватора @Override public void DrawTransport(Graphics2D g){ @@ -18,7 +24,7 @@ public class DrawingExcavator extends DrawingBulldozer{ return; } super.DrawTransport(g); - if (excavator.Prop){ + if (excavator.getProp()){ g.setColor(Color.BLACK); //Опоры //справа @@ -43,7 +49,7 @@ public class DrawingExcavator extends DrawingBulldozer{ g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); } - if(excavator.Ladle){ + if(excavator.getLadle()){ g.setColor(Color.BLACK); //Ковш //ковш(стрела) diff --git a/ProjectExcavator/src/Entities/EntityBulldozer.java b/ProjectExcavator/src/Entities/EntityBulldozer.java index 7dfab9e..6068462 100644 --- a/ProjectExcavator/src/Entities/EntityBulldozer.java +++ b/ProjectExcavator/src/Entities/EntityBulldozer.java @@ -4,7 +4,13 @@ import java.awt.*; public class EntityBulldozer { private int Speed; + public int getSpeed(){ + return Speed; + } private double Weight; + public double getWeight() { + return Weight; + } private Color BodyColor; public Color getBodyColor() { diff --git a/ProjectExcavator/src/Entities/EntityExcavator.java b/ProjectExcavator/src/Entities/EntityExcavator.java index eca47e9..d19d645 100644 --- a/ProjectExcavator/src/Entities/EntityExcavator.java +++ b/ProjectExcavator/src/Entities/EntityExcavator.java @@ -8,7 +8,13 @@ public class EntityExcavator extends EntityBulldozer{ return AdditionalColor; } public boolean Prop; + public boolean getProp(){ + return Prop; + } public boolean Ladle; + public boolean getLadle(){ + return Ladle; + } public EntityExcavator(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ super(speed, weight, bodyColor); AdditionalColor = additionalColor; diff --git a/ProjectExcavator/src/FormAdditionalCollection.java b/ProjectExcavator/src/FormAdditionalCollection.java new file mode 100644 index 0000000..7b419ed --- /dev/null +++ b/ProjectExcavator/src/FormAdditionalCollection.java @@ -0,0 +1,137 @@ +import CollectionAdditionalObjects.AdditionalCollections; +import CollectionGenericObjects.AbstractCompany; +import DifferentRollers.DrawingRollersCross; +import DifferentRollers.DrawingRollersPlus; +import DifferentRollers.DrawingRollersStar; +import DifferentRollers.IDifferentRollers; +import Drawings.DrawingBulldozer; +import Drawings.CanvasExcavator; +import Drawings.DrawingExcavator; +import Entities.EntityBulldozer; +import Entities.EntityExcavator; + +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 DrawingBulldozer drawingBulldozer = null; + private AbstractCompany company = null; + private CanvasExcavator canvasExc = new CanvasExcavator(); + private AdditionalCollections additionalCollection = null; + private Random random = new Random(); + private JButton buttonGenerate = new JButton("Создать"); + private JList listEntity = new JList(); + private JList listRollers = new JList(); + public FormAdditionalCollection() { + setTitle("Случайный объект"); + setMinimumSize(new Dimension(650,310)); + additionalCollection = new AdditionalCollections(3, (Class) EntityBulldozer.class, (Class) IDifferentRollers.class); + AddEntities(); + AddRollers(); + buttonGenerate.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + drawingBulldozer = additionalCollection.CreateAdditionalCollectionBulldozer(); + drawingBulldozer.SetPictureSize(getWidth(), getHeight()); + drawingBulldozer.SetPosition(50,50); + canvasExc._drawingBulldozer = drawingBulldozer; + canvasExc.repaint(); + DrawingBulldozer copyBulldozer; + if (drawingBulldozer instanceof DrawingExcavator) + copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + else + copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + company._collection.Insert(copyBulldozer); + FormBulldozerCollection.canvasShow(); + + String[] data1 = new String[additionalCollection.CountEntities]; + for (int i = 0; i < additionalCollection.CountEntities; i++) { + EntityBulldozer entity = additionalCollection._collectionEntity[i]; + data1[i] = ToString(entity); + } + String[] data2 = new String[additionalCollection.CountRollers]; + for (int i = 0; i < additionalCollection.CountRollers; i++) { + IDifferentRollers rollers = additionalCollection._collectionRollers[i]; + data2[i] = ToString(rollers); + } + listEntity.setListData(data1); + listRollers.setListData(data2); + } + }); + buttonGenerate.setBounds(450, 10, 100, 50); + add(buttonGenerate); + listEntity.setBounds(10,200,300,60); + listRollers.setBounds(320,200,300,60); + add(listEntity); + add(listRollers); + add(canvasExc); + setVisible(true); + } + private String ToString(EntityBulldozer entity) { + String str = ""; + if (entity instanceof EntityExcavator) str += "EntityExcavator "; + else str += "EntityBulldozer "; + str += entity.getBodyColor().toString(); + return str; + } + private String ToString(IDifferentRollers rollers) { + if (rollers == null || rollers.getRollersCount() == null) + return "Dont have rollers"; + String str = "Deck "; + if (rollers instanceof DrawingRollersCross) str += "Type Cross "; + else if (rollers instanceof DrawingRollersPlus) str += "Type Plus "; + else str += "Type 3 "; + str += rollers.getRollersCount().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)); + EntityBulldozer entity; + if (random.nextBoolean()) { + entity = new EntityBulldozer(speed, weight, bodycolor); + } + else { + Color additionalcolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); + boolean prop = random.nextBoolean(); + boolean ladle = random.nextBoolean(); + entity = new EntityExcavator(speed, weight, bodycolor, + additionalcolor, prop, ladle); + } + additionalCollection.Insert(entity); + } + } + public void AddRollers() { + for (int i = 0; i < additionalCollection.CountRollers; i++) { + random = new Random(); + Integer numberOfRollers = random.nextInt(0, 4); + IDifferentRollers drawingRollers = null; + switch (random.nextInt(0,4)) { + case 1: + drawingRollers = new DrawingRollersCross(); + break; + case 2: + drawingRollers = new DrawingRollersPlus(); + break; + case 3: + drawingRollers = new DrawingRollersStar(); + break; + default: + numberOfRollers = null; + break; + } + if (drawingRollers != null) drawingRollers.setRollersCount(numberOfRollers); + additionalCollection.Insert(drawingRollers); + } + } + void setCompany(AbstractCompany company) { + this.company = company; + } +} diff --git a/ProjectExcavator/src/FormBulldozerCollection.java b/ProjectExcavator/src/FormBulldozerCollection.java new file mode 100644 index 0000000..730d04b --- /dev/null +++ b/ProjectExcavator/src/FormBulldozerCollection.java @@ -0,0 +1,220 @@ +import CollectionGenericObjects.AbstractCompany; +import CollectionGenericObjects.BulldozerSharingService; +import CollectionGenericObjects.MassiveGenericObjects; +import Drawings.CanvasFormBulldozerCollection; +import Drawings.DrawingBulldozer; +import Drawings.DrawingExcavator; + +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 FormBulldozerCollection extends JFrame{ + private String title; + private Dimension dimension; + public static CanvasFormBulldozerCollection _canvasExcavator = new CanvasFormBulldozerCollection(); + private static AbstractCompany _company = null; + private JButton CreateButton = new JButton("Создать экскаватор");; + private JButton CreateShipButton = new JButton("Создать бульдозер"); + private JButton RemoveButton = new JButton("Удалить"); + private JButton GoToCheckButton = new JButton("Тест"); + private JButton RandomButton = new JButton("Случайный объект"); + private JButton RefreshButton = new JButton("Обновить"); + private JComboBox ComboBoxCollections = new JComboBox(new String[]{"", "Хранилище"}); + private JFormattedTextField MaskedTextField; + public FormBulldozerCollection(String title, Dimension dimension) { + this.title = title; + this.dimension = dimension; + } + public static void canvasShow() { + _company.SetPosition(); + _canvasExcavator.SetCollectionToCanvas(_company); + _canvasExcavator.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(); + DrawingBulldozer drawingBulldozer; + switch (typeOfClass) { + case "DrawingBulldozer": + drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); + break; + case "DrawingExcavator": + Color additionalColor = getColor(); + boolean prop = new Random().nextBoolean(); + boolean ladle = new Random().nextBoolean(); + drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, prop, ladle); + break; + default: return; + } + if (_company._collection.Insert(drawingBulldozer, 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, "Выберите цвет", 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 BulldozerSharingService(getWidth()-200, getHeight()-70, new MassiveGenericObjects()); + break; + } + } + }); + + CreateShipButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingBulldozer"); + } + }); + CreateButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingExcavator"); + } + }); + + 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; + } + DrawingBulldozer bulldozer = null; + int counter = 100; + while (bulldozer == null) + { + bulldozer = _company.GetRandomObject(); + counter--; + if (counter <= 0) + { + break; + } + } + if (bulldozer == null) + { + return; + } + FormExcavator form = new FormExcavator("Экскаватор", new Dimension(900,565)); + form.Init(bulldozer); + } + }); + + 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(); + } + }); + + _canvasExcavator.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(_canvasExcavator); + 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) { + _canvasExcavator.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/ProjectExcavator/src/FormExcavator.java b/ProjectExcavator/src/FormExcavator.java index a810d30..13b6326 100644 --- a/ProjectExcavator/src/FormExcavator.java +++ b/ProjectExcavator/src/FormExcavator.java @@ -1,7 +1,4 @@ -import Drawings.CanvasExcavator; -import Drawings.DirectionType; -import Drawings.DrawingBulldozer; -import Drawings.DrawingExcavator; +import Drawings.*; import MovementStrategy.*; import javax.swing.*; @@ -10,15 +7,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 FormExcavator extends JFrame { private String title; private Dimension dimension; private int Width, Height; private CanvasExcavator canvasExcavator = new CanvasExcavator(); - private JButton CreateButton = new JButton("Создать экскаватор"); - private JButton CreateBullButton = new JButton("Создать бульдозер"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton(); private JButton LeftButton = new JButton(); @@ -31,44 +25,17 @@ public class FormExcavator extends JFrame { 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 "DrawingBulldozer": - canvasExcavator._drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); - canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); - canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); - canvasExcavator.repaint(); - break; - case "DrawingExcavator": - 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(); - canvasExcavator._drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); - canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); - canvasExcavator.repaint(); - break; - default: return; - } - _strategy = null; - ComboBoxStrategy.setEnabled(true); - } - - public void Init() { + public void Init(DrawingBulldozer bulldozer) { setTitle(title); setMinimumSize(dimension); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + Width = getWidth() - 15; Height = getHeight() - 35; + ComboBoxStrategy.setEnabled(true); _strategy = null; + canvasExcavator._drawingBulldozer = bulldozer; - CreateButton.setName("CREATE"); - CreateBullButton.setName("CREATEBULLBUTTON"); Icon iconUp = new ImageIcon("ProjectExcavator/res/up.png"); UpButton.setIcon(iconUp); UpButton.setName("UP"); @@ -82,20 +49,6 @@ public class FormExcavator extends JFrame { Icon iconRight = new ImageIcon("ProjectExcavator/res/right.png"); RightButton.setIcon(iconRight); - CreateButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingExcavator"); - } - }); - - CreateBullButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingBulldozer"); - } - }); - ButtonStrategy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -167,16 +120,12 @@ public class FormExcavator extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 85, 160, 35); - CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 25); ButtonStrategy.setBounds(getWidth() - 130, 45, 100, 25); - add(CreateButton); - add(CreateBullButton); add(UpButton); add(DownButton); add(RightButton); @@ -193,8 +142,6 @@ public class FormExcavator extends JFrame { if (canvasExcavator._drawingBulldozer != null) canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 85, 160, 35); - CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); diff --git a/ProjectExcavator/src/Program.java b/ProjectExcavator/src/Program.java index a6a309a..2ff804c 100644 --- a/ProjectExcavator/src/Program.java +++ b/ProjectExcavator/src/Program.java @@ -2,7 +2,7 @@ import java.awt.*; public class Program { public static void main(String[] args) { - FormExcavator form = new FormExcavator("Экскаватор", new Dimension(700, 500)); + FormBulldozerCollection form = new FormBulldozerCollection("Коллекция экскаваторов", new Dimension(1100, 650)); form.Init(); } } \ No newline at end of file -- 2.25.1 From a813a4a6cc17962874b9143602cd9ca606f2eaac Mon Sep 17 00:00:00 2001 From: insideq Date: Thu, 9 May 2024 19:42:36 +0400 Subject: [PATCH 07/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B5=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/Entities/EntityBulldozer.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/ProjectExcavator/src/Entities/EntityBulldozer.java b/ProjectExcavator/src/Entities/EntityBulldozer.java index 6068462..7dfab9e 100644 --- a/ProjectExcavator/src/Entities/EntityBulldozer.java +++ b/ProjectExcavator/src/Entities/EntityBulldozer.java @@ -4,13 +4,7 @@ import java.awt.*; public class EntityBulldozer { private int Speed; - public int getSpeed(){ - return Speed; - } private double Weight; - public double getWeight() { - return Weight; - } private Color BodyColor; public Color getBodyColor() { -- 2.25.1 From 0386119bccd4aeac47946be033865d2a3dd74a9d Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:11:56 +0400 Subject: [PATCH 08/25] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=E2=84=963=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/FormAdditionalCollection.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/ProjectExcavator/src/FormAdditionalCollection.java b/ProjectExcavator/src/FormAdditionalCollection.java index 7b419ed..5fe5676 100644 --- a/ProjectExcavator/src/FormAdditionalCollection.java +++ b/ProjectExcavator/src/FormAdditionalCollection.java @@ -22,7 +22,8 @@ public class FormAdditionalCollection extends JFrame { private CanvasExcavator canvasExc = new CanvasExcavator(); private AdditionalCollections additionalCollection = null; private Random random = new Random(); - private JButton buttonGenerate = new JButton("Создать"); + private JButton buttonCreate = new JButton("Создать"); + private JButton buttonAdd = new JButton("Добавить"); private JList listEntity = new JList(); private JList listRollers = new JList(); public FormAdditionalCollection() { @@ -31,22 +32,15 @@ public class FormAdditionalCollection extends JFrame { additionalCollection = new AdditionalCollections(3, (Class) EntityBulldozer.class, (Class) IDifferentRollers.class); AddEntities(); AddRollers(); - buttonGenerate.addActionListener(new ActionListener() { + + buttonCreate.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - drawingBulldozer = additionalCollection.CreateAdditionalCollectionBulldozer(); drawingBulldozer.SetPictureSize(getWidth(), getHeight()); - drawingBulldozer.SetPosition(50,50); + drawingBulldozer.SetPosition(50, 50); canvasExc._drawingBulldozer = drawingBulldozer; canvasExc.repaint(); - DrawingBulldozer copyBulldozer; - if (drawingBulldozer instanceof DrawingExcavator) - copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - else - copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - company._collection.Insert(copyBulldozer); - FormBulldozerCollection.canvasShow(); String[] data1 = new String[additionalCollection.CountEntities]; for (int i = 0; i < additionalCollection.CountEntities; i++) { @@ -62,8 +56,25 @@ public class FormAdditionalCollection extends JFrame { listRollers.setListData(data2); } }); - buttonGenerate.setBounds(450, 10, 100, 50); - add(buttonGenerate); + + buttonAdd.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (drawingBulldozer != null) { + DrawingBulldozer copyBulldozer; + if (drawingBulldozer instanceof DrawingExcavator) + copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + else + copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + company._collection.Insert(copyBulldozer); + FormBulldozerCollection.canvasShow(); + } + } + }); + buttonCreate.setBounds(300, 10, 100, 50); + buttonAdd.setBounds(450, 10, 100, 50); + add(buttonCreate); + add(buttonAdd); listEntity.setBounds(10,200,300,60); listRollers.setBounds(320,200,300,60); add(listEntity); @@ -81,10 +92,10 @@ public class FormAdditionalCollection extends JFrame { private String ToString(IDifferentRollers rollers) { if (rollers == null || rollers.getRollersCount() == null) return "Dont have rollers"; - String str = "Deck "; + String str = "Rollers "; if (rollers instanceof DrawingRollersCross) str += "Type Cross "; else if (rollers instanceof DrawingRollersPlus) str += "Type Plus "; - else str += "Type 3 "; + else str += "Type Star "; str += rollers.getRollersCount().toString(); return str; } -- 2.25.1 From 63c9b86d3e1ef15f652bb9f54a9c91666e9e005a Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:25:24 +0400 Subject: [PATCH 09/25] revert 0386119bccd4aeac47946be033865d2a3dd74a9d MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert Лабораторная работа №3 добавил кнопку --- .../src/FormAdditionalCollection.java | 41 +++++++------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/ProjectExcavator/src/FormAdditionalCollection.java b/ProjectExcavator/src/FormAdditionalCollection.java index 5fe5676..7b419ed 100644 --- a/ProjectExcavator/src/FormAdditionalCollection.java +++ b/ProjectExcavator/src/FormAdditionalCollection.java @@ -22,8 +22,7 @@ public class FormAdditionalCollection extends JFrame { private CanvasExcavator canvasExc = new CanvasExcavator(); private AdditionalCollections additionalCollection = null; private Random random = new Random(); - private JButton buttonCreate = new JButton("Создать"); - private JButton buttonAdd = new JButton("Добавить"); + private JButton buttonGenerate = new JButton("Создать"); private JList listEntity = new JList(); private JList listRollers = new JList(); public FormAdditionalCollection() { @@ -32,15 +31,22 @@ public class FormAdditionalCollection extends JFrame { additionalCollection = new AdditionalCollections(3, (Class) EntityBulldozer.class, (Class) IDifferentRollers.class); AddEntities(); AddRollers(); - - buttonCreate.addActionListener(new ActionListener() { + buttonGenerate.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + drawingBulldozer = additionalCollection.CreateAdditionalCollectionBulldozer(); drawingBulldozer.SetPictureSize(getWidth(), getHeight()); - drawingBulldozer.SetPosition(50, 50); + drawingBulldozer.SetPosition(50,50); canvasExc._drawingBulldozer = drawingBulldozer; canvasExc.repaint(); + DrawingBulldozer copyBulldozer; + if (drawingBulldozer instanceof DrawingExcavator) + copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + else + copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + company._collection.Insert(copyBulldozer); + FormBulldozerCollection.canvasShow(); String[] data1 = new String[additionalCollection.CountEntities]; for (int i = 0; i < additionalCollection.CountEntities; i++) { @@ -56,25 +62,8 @@ public class FormAdditionalCollection extends JFrame { listRollers.setListData(data2); } }); - - buttonAdd.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (drawingBulldozer != null) { - DrawingBulldozer copyBulldozer; - if (drawingBulldozer instanceof DrawingExcavator) - copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - else - copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - company._collection.Insert(copyBulldozer); - FormBulldozerCollection.canvasShow(); - } - } - }); - buttonCreate.setBounds(300, 10, 100, 50); - buttonAdd.setBounds(450, 10, 100, 50); - add(buttonCreate); - add(buttonAdd); + buttonGenerate.setBounds(450, 10, 100, 50); + add(buttonGenerate); listEntity.setBounds(10,200,300,60); listRollers.setBounds(320,200,300,60); add(listEntity); @@ -92,10 +81,10 @@ public class FormAdditionalCollection extends JFrame { private String ToString(IDifferentRollers rollers) { if (rollers == null || rollers.getRollersCount() == null) return "Dont have rollers"; - String str = "Rollers "; + String str = "Deck "; if (rollers instanceof DrawingRollersCross) str += "Type Cross "; else if (rollers instanceof DrawingRollersPlus) str += "Type Plus "; - else str += "Type Star "; + else str += "Type 3 "; str += rollers.getRollersCount().toString(); return str; } -- 2.25.1 From f6437f686d93be3da95bbe267580170881e059de Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:25:38 +0400 Subject: [PATCH 10/25] revert a813a4a6cc17962874b9143602cd9ca606f2eaac MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert Удалил лишнее --- ProjectExcavator/src/Entities/EntityBulldozer.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ProjectExcavator/src/Entities/EntityBulldozer.java b/ProjectExcavator/src/Entities/EntityBulldozer.java index 7dfab9e..6068462 100644 --- a/ProjectExcavator/src/Entities/EntityBulldozer.java +++ b/ProjectExcavator/src/Entities/EntityBulldozer.java @@ -4,7 +4,13 @@ import java.awt.*; public class EntityBulldozer { private int Speed; + public int getSpeed(){ + return Speed; + } private double Weight; + public double getWeight() { + return Weight; + } private Color BodyColor; public Color getBodyColor() { -- 2.25.1 From e76c089c8ad7d385a282cf9c72cf4e733bc35790 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:25:47 +0400 Subject: [PATCH 11/25] revert 736247db821823c1cb50d31f00fdd329754116f3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert Лабораторная работа №3 --- .../AdditionalCollections.java | 61 ----- .../AbstractCompany.java | 34 --- .../BulldozerSharingService.java | 49 ---- .../ICollectionGenericObjects.java | 12 - .../MassiveGenericObjects.java | 75 ------ .../CanvasFormBulldozerCollection.java | 36 --- .../src/Drawings/DrawingBulldozer.java | 13 +- .../src/Drawings/DrawingExcavator.java | 10 +- .../src/Entities/EntityBulldozer.java | 6 - .../src/Entities/EntityExcavator.java | 6 - .../src/FormAdditionalCollection.java | 137 ----------- .../src/FormBulldozerCollection.java | 220 ------------------ ProjectExcavator/src/FormExcavator.java | 63 ++++- ProjectExcavator/src/Program.java | 2 +- 14 files changed, 62 insertions(+), 662 deletions(-) delete mode 100644 ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java delete mode 100644 ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java delete mode 100644 ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java delete mode 100644 ProjectExcavator/src/CollectionGenericObjects/ICollectionGenericObjects.java delete mode 100644 ProjectExcavator/src/CollectionGenericObjects/MassiveGenericObjects.java delete mode 100644 ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java delete mode 100644 ProjectExcavator/src/FormAdditionalCollection.java delete mode 100644 ProjectExcavator/src/FormBulldozerCollection.java diff --git a/ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java b/ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java deleted file mode 100644 index cdc6005..0000000 --- a/ProjectExcavator/src/CollectionAdditionalObjects/AdditionalCollections.java +++ /dev/null @@ -1,61 +0,0 @@ -package CollectionAdditionalObjects; - -import DifferentRollers.IDifferentRollers; -import Drawings.DrawingBulldozer; -import Drawings.DrawingExcavator; -import Entities.EntityBulldozer; -import Entities.EntityExcavator; - -import java.lang.reflect.Array; -import java.util.Random; - -public class AdditionalCollections { - public T[] _collectionEntity; - public U[] _collectionRollers; - public AdditionalCollections(int size, Class type1, Class type2) { - _collectionEntity = (T[]) Array.newInstance(type1, size); - _collectionRollers = (U[]) Array.newInstance(type2, size); - CountEntities = size; - CountRollers = size; - } - public int CountEntities; - public int CountRollers; - 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 rollers) { - int index = 0; - while (index < CountRollers) { - if (_collectionRollers[index] == null) - { - _collectionRollers[index] = rollers; - return index; - } - ++index; - } - return -1; - } - public DrawingBulldozer CreateAdditionalCollectionBulldozer() { - Random random = new Random(); - if (_collectionEntity == null || _collectionRollers == null) return null; - T entity = _collectionEntity[random.nextInt(CountEntities)]; - U rollers = _collectionRollers[random.nextInt(CountRollers)]; - DrawingBulldozer drawingShip = null; - if (entity instanceof EntityExcavator) { - drawingShip = new DrawingExcavator((EntityExcavator) entity, rollers); - } - else { - drawingShip = new DrawingBulldozer(entity, rollers); - } - return drawingShip; - } -} diff --git a/ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java b/ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java deleted file mode 100644 index 6314a1b..0000000 --- a/ProjectExcavator/src/CollectionGenericObjects/AbstractCompany.java +++ /dev/null @@ -1,34 +0,0 @@ -package CollectionGenericObjects; - -import Drawings.DrawingBulldozer; - -import java.awt.*; - -public abstract class AbstractCompany { - protected int _placeSizeWidth = 195; - protected int _placeSizeHeight = 80; - 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(), DrawingBulldozer.class); - } - //перегрузка операторов в джаве невозможна - public DrawingBulldozer GetRandomObject() - { - return _collection.Get((int)(Math.random()*GetMaxCount())); - } - public void SetPosition() - { - SetObjectsPosition(); - } - public abstract void DrawBackground(Graphics graphics); - protected abstract void SetObjectsPosition(); -} diff --git a/ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java b/ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java deleted file mode 100644 index d40d4a2..0000000 --- a/ProjectExcavator/src/CollectionGenericObjects/BulldozerSharingService.java +++ /dev/null @@ -1,49 +0,0 @@ -package CollectionGenericObjects; - -import Drawings.DrawingBulldozer; - -import java.awt.*; - -public class BulldozerSharingService extends AbstractCompany{ - public BulldozerSharingService(int picWidth, int picHeight, ICollectionGenericObjects collection) { - super(picWidth, picHeight, collection); - } - @Override - public void DrawBackground(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 / 2, j * _placeSizeHeight); - } - g.drawLine(i * _placeSizeWidth, 0, i * _placeSizeWidth, _pictureHeight); - } - } - @Override - protected void SetObjectsPosition() { - int width = _pictureWidth / _placeSizeWidth; - int height = _pictureHeight / _placeSizeHeight; - - int posWidth = width - 1; - int posHeight = 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 * posWidth + 4, posHeight * _placeSizeHeight + 4); - } - if (posWidth > 0) - posWidth--; - else { - posWidth = width - 1; - posHeight++; - } - if (posHeight > height) { - return; - } - } - } -} - diff --git a/ProjectExcavator/src/CollectionGenericObjects/ICollectionGenericObjects.java b/ProjectExcavator/src/CollectionGenericObjects/ICollectionGenericObjects.java deleted file mode 100644 index a633cfe..0000000 --- a/ProjectExcavator/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/ProjectExcavator/src/CollectionGenericObjects/MassiveGenericObjects.java b/ProjectExcavator/src/CollectionGenericObjects/MassiveGenericObjects.java deleted file mode 100644 index 063fb44..0000000 --- a/ProjectExcavator/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/ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java b/ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java deleted file mode 100644 index e2e7a70..0000000 --- a/ProjectExcavator/src/Drawings/CanvasFormBulldozerCollection.java +++ /dev/null @@ -1,36 +0,0 @@ -package Drawings; - -import CollectionGenericObjects.AbstractCompany; -import CollectionGenericObjects.ICollectionGenericObjects; -import CollectionGenericObjects.MassiveGenericObjects; - -import javax.swing.*; -import java.awt.*; - -public class CanvasFormBulldozerCollection extends JComponent -{ - //неиспользуемые методы - public ICollectionGenericObjects collection = new MassiveGenericObjects(); - public AbstractCompany company = null; - public void SetCollectionToCanvas(AbstractCompany company) { - this.company = company; - } - public CanvasFormBulldozerCollection(){} - public void paintComponent(Graphics g) { - super.paintComponents(g); - if (company == null || company._collection == null) { - return; - } - company.DrawBackground(g); - for (int i = 0; i < company._collection.getCount(); i++) { - - Graphics2D g2d = (Graphics2D) g; - T obj = (T)company._collection.Get(i); - if (obj instanceof DrawingBulldozer) { - ((DrawingBulldozer) obj).DrawTransport(g2d); - } - } - super.repaint(); - } -} - diff --git a/ProjectExcavator/src/Drawings/DrawingBulldozer.java b/ProjectExcavator/src/Drawings/DrawingBulldozer.java index 6b7c9fe..3b0f2e9 100644 --- a/ProjectExcavator/src/Drawings/DrawingBulldozer.java +++ b/ProjectExcavator/src/Drawings/DrawingBulldozer.java @@ -56,17 +56,6 @@ public class DrawingBulldozer extends JPanel { SetTypeRollers(); } - protected DrawingBulldozer(int _drawingExcWidth, int _drawingExcHeight) { - super(); - this._drawingExcWidth = _drawingExcWidth; - this._drawingExcHeight = _drawingExcHeight; - } - - public DrawingBulldozer(EntityBulldozer entity, IDifferentRollers rollers) { - EntityBulldozer = entity; - drawingRollers = rollers; - } - // Смена границ формы отрисовки public void SetPictureSize(int width, int height) { @@ -182,7 +171,7 @@ public class DrawingBulldozer extends JPanel { g.fillOval(_startPosX + 50, _startPosY + 48, 5, 5); int x = _startPosX; - if (drawingRollers != null && drawingRollers.getRollersCount() != null){ + if (drawingRollers.getRollersCount() != null){ switch (drawingRollers.getRollersCount()){ case OneRoller: drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); diff --git a/ProjectExcavator/src/Drawings/DrawingExcavator.java b/ProjectExcavator/src/Drawings/DrawingExcavator.java index db98370..6600b23 100644 --- a/ProjectExcavator/src/Drawings/DrawingExcavator.java +++ b/ProjectExcavator/src/Drawings/DrawingExcavator.java @@ -1,6 +1,5 @@ package Drawings; -import DifferentRollers.IDifferentRollers; import Entities.EntityExcavator; import java.awt.*; @@ -12,11 +11,6 @@ public class DrawingExcavator extends DrawingBulldozer{ SetTypeRollers(); } - public DrawingExcavator(EntityExcavator entity, IDifferentRollers decks) { - EntityBulldozer = entity; - drawingRollers = decks; - } - // Отрисовка Экскаватора @Override public void DrawTransport(Graphics2D g){ @@ -24,7 +18,7 @@ public class DrawingExcavator extends DrawingBulldozer{ return; } super.DrawTransport(g); - if (excavator.getProp()){ + if (excavator.Prop){ g.setColor(Color.BLACK); //Опоры //справа @@ -49,7 +43,7 @@ public class DrawingExcavator extends DrawingBulldozer{ g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); } - if(excavator.getLadle()){ + if(excavator.Ladle){ g.setColor(Color.BLACK); //Ковш //ковш(стрела) diff --git a/ProjectExcavator/src/Entities/EntityBulldozer.java b/ProjectExcavator/src/Entities/EntityBulldozer.java index 6068462..7dfab9e 100644 --- a/ProjectExcavator/src/Entities/EntityBulldozer.java +++ b/ProjectExcavator/src/Entities/EntityBulldozer.java @@ -4,13 +4,7 @@ import java.awt.*; public class EntityBulldozer { private int Speed; - public int getSpeed(){ - return Speed; - } private double Weight; - public double getWeight() { - return Weight; - } private Color BodyColor; public Color getBodyColor() { diff --git a/ProjectExcavator/src/Entities/EntityExcavator.java b/ProjectExcavator/src/Entities/EntityExcavator.java index d19d645..eca47e9 100644 --- a/ProjectExcavator/src/Entities/EntityExcavator.java +++ b/ProjectExcavator/src/Entities/EntityExcavator.java @@ -8,13 +8,7 @@ public class EntityExcavator extends EntityBulldozer{ return AdditionalColor; } public boolean Prop; - public boolean getProp(){ - return Prop; - } public boolean Ladle; - public boolean getLadle(){ - return Ladle; - } public EntityExcavator(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ super(speed, weight, bodyColor); AdditionalColor = additionalColor; diff --git a/ProjectExcavator/src/FormAdditionalCollection.java b/ProjectExcavator/src/FormAdditionalCollection.java deleted file mode 100644 index 7b419ed..0000000 --- a/ProjectExcavator/src/FormAdditionalCollection.java +++ /dev/null @@ -1,137 +0,0 @@ -import CollectionAdditionalObjects.AdditionalCollections; -import CollectionGenericObjects.AbstractCompany; -import DifferentRollers.DrawingRollersCross; -import DifferentRollers.DrawingRollersPlus; -import DifferentRollers.DrawingRollersStar; -import DifferentRollers.IDifferentRollers; -import Drawings.DrawingBulldozer; -import Drawings.CanvasExcavator; -import Drawings.DrawingExcavator; -import Entities.EntityBulldozer; -import Entities.EntityExcavator; - -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 DrawingBulldozer drawingBulldozer = null; - private AbstractCompany company = null; - private CanvasExcavator canvasExc = new CanvasExcavator(); - private AdditionalCollections additionalCollection = null; - private Random random = new Random(); - private JButton buttonGenerate = new JButton("Создать"); - private JList listEntity = new JList(); - private JList listRollers = new JList(); - public FormAdditionalCollection() { - setTitle("Случайный объект"); - setMinimumSize(new Dimension(650,310)); - additionalCollection = new AdditionalCollections(3, (Class) EntityBulldozer.class, (Class) IDifferentRollers.class); - AddEntities(); - AddRollers(); - buttonGenerate.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - - drawingBulldozer = additionalCollection.CreateAdditionalCollectionBulldozer(); - drawingBulldozer.SetPictureSize(getWidth(), getHeight()); - drawingBulldozer.SetPosition(50,50); - canvasExc._drawingBulldozer = drawingBulldozer; - canvasExc.repaint(); - DrawingBulldozer copyBulldozer; - if (drawingBulldozer instanceof DrawingExcavator) - copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - else - copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - company._collection.Insert(copyBulldozer); - FormBulldozerCollection.canvasShow(); - - String[] data1 = new String[additionalCollection.CountEntities]; - for (int i = 0; i < additionalCollection.CountEntities; i++) { - EntityBulldozer entity = additionalCollection._collectionEntity[i]; - data1[i] = ToString(entity); - } - String[] data2 = new String[additionalCollection.CountRollers]; - for (int i = 0; i < additionalCollection.CountRollers; i++) { - IDifferentRollers rollers = additionalCollection._collectionRollers[i]; - data2[i] = ToString(rollers); - } - listEntity.setListData(data1); - listRollers.setListData(data2); - } - }); - buttonGenerate.setBounds(450, 10, 100, 50); - add(buttonGenerate); - listEntity.setBounds(10,200,300,60); - listRollers.setBounds(320,200,300,60); - add(listEntity); - add(listRollers); - add(canvasExc); - setVisible(true); - } - private String ToString(EntityBulldozer entity) { - String str = ""; - if (entity instanceof EntityExcavator) str += "EntityExcavator "; - else str += "EntityBulldozer "; - str += entity.getBodyColor().toString(); - return str; - } - private String ToString(IDifferentRollers rollers) { - if (rollers == null || rollers.getRollersCount() == null) - return "Dont have rollers"; - String str = "Deck "; - if (rollers instanceof DrawingRollersCross) str += "Type Cross "; - else if (rollers instanceof DrawingRollersPlus) str += "Type Plus "; - else str += "Type 3 "; - str += rollers.getRollersCount().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)); - EntityBulldozer entity; - if (random.nextBoolean()) { - entity = new EntityBulldozer(speed, weight, bodycolor); - } - else { - Color additionalcolor = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)); - boolean prop = random.nextBoolean(); - boolean ladle = random.nextBoolean(); - entity = new EntityExcavator(speed, weight, bodycolor, - additionalcolor, prop, ladle); - } - additionalCollection.Insert(entity); - } - } - public void AddRollers() { - for (int i = 0; i < additionalCollection.CountRollers; i++) { - random = new Random(); - Integer numberOfRollers = random.nextInt(0, 4); - IDifferentRollers drawingRollers = null; - switch (random.nextInt(0,4)) { - case 1: - drawingRollers = new DrawingRollersCross(); - break; - case 2: - drawingRollers = new DrawingRollersPlus(); - break; - case 3: - drawingRollers = new DrawingRollersStar(); - break; - default: - numberOfRollers = null; - break; - } - if (drawingRollers != null) drawingRollers.setRollersCount(numberOfRollers); - additionalCollection.Insert(drawingRollers); - } - } - void setCompany(AbstractCompany company) { - this.company = company; - } -} diff --git a/ProjectExcavator/src/FormBulldozerCollection.java b/ProjectExcavator/src/FormBulldozerCollection.java deleted file mode 100644 index 730d04b..0000000 --- a/ProjectExcavator/src/FormBulldozerCollection.java +++ /dev/null @@ -1,220 +0,0 @@ -import CollectionGenericObjects.AbstractCompany; -import CollectionGenericObjects.BulldozerSharingService; -import CollectionGenericObjects.MassiveGenericObjects; -import Drawings.CanvasFormBulldozerCollection; -import Drawings.DrawingBulldozer; -import Drawings.DrawingExcavator; - -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 FormBulldozerCollection extends JFrame{ - private String title; - private Dimension dimension; - public static CanvasFormBulldozerCollection _canvasExcavator = new CanvasFormBulldozerCollection(); - private static AbstractCompany _company = null; - private JButton CreateButton = new JButton("Создать экскаватор");; - private JButton CreateShipButton = new JButton("Создать бульдозер"); - private JButton RemoveButton = new JButton("Удалить"); - private JButton GoToCheckButton = new JButton("Тест"); - private JButton RandomButton = new JButton("Случайный объект"); - private JButton RefreshButton = new JButton("Обновить"); - private JComboBox ComboBoxCollections = new JComboBox(new String[]{"", "Хранилище"}); - private JFormattedTextField MaskedTextField; - public FormBulldozerCollection(String title, Dimension dimension) { - this.title = title; - this.dimension = dimension; - } - public static void canvasShow() { - _company.SetPosition(); - _canvasExcavator.SetCollectionToCanvas(_company); - _canvasExcavator.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(); - DrawingBulldozer drawingBulldozer; - switch (typeOfClass) { - case "DrawingBulldozer": - drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); - break; - case "DrawingExcavator": - Color additionalColor = getColor(); - boolean prop = new Random().nextBoolean(); - boolean ladle = new Random().nextBoolean(); - drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, prop, ladle); - break; - default: return; - } - if (_company._collection.Insert(drawingBulldozer, 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, "Выберите цвет", 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 BulldozerSharingService(getWidth()-200, getHeight()-70, new MassiveGenericObjects()); - break; - } - } - }); - - CreateShipButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingBulldozer"); - } - }); - CreateButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingExcavator"); - } - }); - - 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; - } - DrawingBulldozer bulldozer = null; - int counter = 100; - while (bulldozer == null) - { - bulldozer = _company.GetRandomObject(); - counter--; - if (counter <= 0) - { - break; - } - } - if (bulldozer == null) - { - return; - } - FormExcavator form = new FormExcavator("Экскаватор", new Dimension(900,565)); - form.Init(bulldozer); - } - }); - - 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(); - } - }); - - _canvasExcavator.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(_canvasExcavator); - 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) { - _canvasExcavator.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/ProjectExcavator/src/FormExcavator.java b/ProjectExcavator/src/FormExcavator.java index 13b6326..a810d30 100644 --- a/ProjectExcavator/src/FormExcavator.java +++ b/ProjectExcavator/src/FormExcavator.java @@ -1,4 +1,7 @@ -import Drawings.*; +import Drawings.CanvasExcavator; +import Drawings.DirectionType; +import Drawings.DrawingBulldozer; +import Drawings.DrawingExcavator; import MovementStrategy.*; import javax.swing.*; @@ -7,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 FormExcavator extends JFrame { private String title; private Dimension dimension; private int Width, Height; private CanvasExcavator canvasExcavator = new CanvasExcavator(); + private JButton CreateButton = new JButton("Создать экскаватор"); + private JButton CreateBullButton = new JButton("Создать бульдозер"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton(); private JButton LeftButton = new JButton(); @@ -25,17 +31,44 @@ public class FormExcavator extends JFrame { this.dimension = dimension; } - public void Init(DrawingBulldozer bulldozer) { + 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 "DrawingBulldozer": + canvasExcavator._drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); + canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); + canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); + canvasExcavator.repaint(); + break; + case "DrawingExcavator": + 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(); + canvasExcavator._drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); + canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); + canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); + canvasExcavator.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; - ComboBoxStrategy.setEnabled(true); _strategy = null; - canvasExcavator._drawingBulldozer = bulldozer; + CreateButton.setName("CREATE"); + CreateBullButton.setName("CREATEBULLBUTTON"); Icon iconUp = new ImageIcon("ProjectExcavator/res/up.png"); UpButton.setIcon(iconUp); UpButton.setName("UP"); @@ -49,6 +82,20 @@ public class FormExcavator extends JFrame { Icon iconRight = new ImageIcon("ProjectExcavator/res/right.png"); RightButton.setIcon(iconRight); + CreateButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingExcavator"); + } + }); + + CreateBullButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CreateObject("DrawingBulldozer"); + } + }); + ButtonStrategy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { @@ -120,12 +167,16 @@ public class FormExcavator extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); + CreateButton.setBounds(10, getHeight() - 85, 160, 35); + CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 25); ButtonStrategy.setBounds(getWidth() - 130, 45, 100, 25); + add(CreateButton); + add(CreateBullButton); add(UpButton); add(DownButton); add(RightButton); @@ -142,6 +193,8 @@ public class FormExcavator extends JFrame { if (canvasExcavator._drawingBulldozer != null) canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); + CreateButton.setBounds(10, getHeight() - 85, 160, 35); + CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); diff --git a/ProjectExcavator/src/Program.java b/ProjectExcavator/src/Program.java index 2ff804c..a6a309a 100644 --- a/ProjectExcavator/src/Program.java +++ b/ProjectExcavator/src/Program.java @@ -2,7 +2,7 @@ import java.awt.*; public class Program { public static void main(String[] args) { - FormBulldozerCollection form = new FormBulldozerCollection("Коллекция экскаваторов", new Dimension(1100, 650)); + FormExcavator form = new FormExcavator("Экскаватор", new Dimension(700, 500)); form.Init(); } } \ No newline at end of file -- 2.25.1 From 78c5a8a4c023b6c8a99d6927d04dc8944370a4ef Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:25:58 +0400 Subject: [PATCH 12/25] revert 4c5a29427dad8cf08b4c19a534ab92c7521122d2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit revert Лабораторная работа №2 --- .../src/{Drawings => }/CanvasExcavator.java | 8 +- .../DifferentRollers/DrawingRollersCross.java | 32 ---- .../DifferentRollers/DrawingRollersStar.java | 34 ----- .../DifferentRollers/IDifferentRollers.java | 9 -- .../src/{Drawings => }/DirectionType.java | 3 - ...ngBulldozer.java => DrawingExcavator.java} | 144 ++++++++++-------- ...ngRollersPlus.java => DrawingRollers.java} | 12 +- .../src/Drawings/DrawingExcavator.java | 67 -------- .../src/Entities/EntityBulldozer.java | 20 --- .../src/Entities/EntityExcavator.java | 18 --- ProjectExcavator/src/EntityExcavator.java | 33 ++++ ProjectExcavator/src/FormExcavator.java | 130 +++------------- .../MovementStrategy/AbstractStrategy.java | 56 ------- .../MovementStrategy/IMoveableObjects.java | 7 - .../src/MovementStrategy/MoveToBorder.java | 26 ---- .../src/MovementStrategy/MoveToCenter.java | 48 ------ .../MovementStrategy/MoveableExcavator.java | 45 ------ .../MovementStrategy/MovementDirection.java | 8 - .../MovementStrategy/ObjectParameters.java | 27 ---- .../src/MovementStrategy/StrategyStatus.java | 7 - .../{DifferentRollers => }/RollersCount.java | 2 - 21 files changed, 141 insertions(+), 595 deletions(-) rename ProjectExcavator/src/{Drawings => }/CanvasExcavator.java (66%) delete mode 100644 ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java delete mode 100644 ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java delete mode 100644 ProjectExcavator/src/DifferentRollers/IDifferentRollers.java rename ProjectExcavator/src/{Drawings => }/DirectionType.java (67%) rename ProjectExcavator/src/{Drawings/DrawingBulldozer.java => DrawingExcavator.java} (52%) rename ProjectExcavator/src/{DifferentRollers/DrawingRollersPlus.java => DrawingRollers.java} (65%) delete mode 100644 ProjectExcavator/src/Drawings/DrawingExcavator.java delete mode 100644 ProjectExcavator/src/Entities/EntityBulldozer.java delete mode 100644 ProjectExcavator/src/Entities/EntityExcavator.java create mode 100644 ProjectExcavator/src/EntityExcavator.java delete mode 100644 ProjectExcavator/src/MovementStrategy/AbstractStrategy.java delete mode 100644 ProjectExcavator/src/MovementStrategy/IMoveableObjects.java delete mode 100644 ProjectExcavator/src/MovementStrategy/MoveToBorder.java delete mode 100644 ProjectExcavator/src/MovementStrategy/MoveToCenter.java delete mode 100644 ProjectExcavator/src/MovementStrategy/MoveableExcavator.java delete mode 100644 ProjectExcavator/src/MovementStrategy/MovementDirection.java delete mode 100644 ProjectExcavator/src/MovementStrategy/ObjectParameters.java delete mode 100644 ProjectExcavator/src/MovementStrategy/StrategyStatus.java rename ProjectExcavator/src/{DifferentRollers => }/RollersCount.java (90%) diff --git a/ProjectExcavator/src/Drawings/CanvasExcavator.java b/ProjectExcavator/src/CanvasExcavator.java similarity index 66% rename from ProjectExcavator/src/Drawings/CanvasExcavator.java rename to ProjectExcavator/src/CanvasExcavator.java index 38210aa..3ad543e 100644 --- a/ProjectExcavator/src/Drawings/CanvasExcavator.java +++ b/ProjectExcavator/src/CanvasExcavator.java @@ -1,18 +1,16 @@ -package Drawings; - import javax.swing.*; import java.awt.*; public class CanvasExcavator extends JComponent{ - public DrawingBulldozer _drawingBulldozer; + public DrawingExcavator _drawingExcavator; public CanvasExcavator(){} public void paintComponent(Graphics g){ - if(_drawingBulldozer == null){ + if(_drawingExcavator == null){ return; } super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; - _drawingBulldozer.DrawTransport(g2d); + _drawingExcavator.DrawTransport(g2d); super.repaint(); } } diff --git a/ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java b/ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java deleted file mode 100644 index 30a006b..0000000 --- a/ProjectExcavator/src/DifferentRollers/DrawingRollersCross.java +++ /dev/null @@ -1,32 +0,0 @@ -package DifferentRollers; - -import java.awt.*; - -public class DrawingRollersCross implements IDifferentRollers{ - private RollersCount rollersCount; - @Override - public void setRollersCount(int numOfRoller){ - for (RollersCount numofenum : RollersCount.values()){ - if (numofenum.getNumOfRollers() == numOfRoller){ - rollersCount = numofenum; - return; - } - } - } - - @Override - public RollersCount getRollersCount(){ - return rollersCount; - } - - @Override - public void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor){ - g.setColor(bodyColor); - g.fillOval(x, y, width, height); - g.setColor(Color.BLACK); - g.drawLine(x+2, y+2, x+6, y+6); - g.drawLine(x+2, y+6, x+6, y+2); - g.drawOval(x, y, width, height); - g.setColor(bodyColor); - } -} diff --git a/ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java b/ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java deleted file mode 100644 index 6ec0643..0000000 --- a/ProjectExcavator/src/DifferentRollers/DrawingRollersStar.java +++ /dev/null @@ -1,34 +0,0 @@ -package DifferentRollers; - -import java.awt.*; - -public class DrawingRollersStar implements IDifferentRollers{ - private RollersCount rollersCount; - @Override - public void setRollersCount(int numOfRoller){ - for (RollersCount numofenum : RollersCount.values()){ - if (numofenum.getNumOfRollers() == numOfRoller){ - rollersCount = numofenum; - return; - } - } - } - - @Override - public RollersCount getRollersCount(){ - return rollersCount; - } - - @Override - public void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor){ - g.setColor(bodyColor); - g.fillOval(x, y, width, height); - g.setColor(Color.BLACK); - g.drawLine(x+4, y, x+4, y+8); - g.drawLine(x, y+4, x+8, y+4); - g.drawLine(x+2, y+2, x+6, y+6); - g.drawLine(x+2, y+6, x+6, y+2); - g.drawOval(x, y, width, height); - g.setColor(bodyColor); - } -} diff --git a/ProjectExcavator/src/DifferentRollers/IDifferentRollers.java b/ProjectExcavator/src/DifferentRollers/IDifferentRollers.java deleted file mode 100644 index ca40065..0000000 --- a/ProjectExcavator/src/DifferentRollers/IDifferentRollers.java +++ /dev/null @@ -1,9 +0,0 @@ -package DifferentRollers; - -import java.awt.*; - -public interface IDifferentRollers { - void setRollersCount(int numOfRoller); - RollersCount getRollersCount(); - void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor); -} diff --git a/ProjectExcavator/src/Drawings/DirectionType.java b/ProjectExcavator/src/DirectionType.java similarity index 67% rename from ProjectExcavator/src/Drawings/DirectionType.java rename to ProjectExcavator/src/DirectionType.java index 618c8b4..d3a2058 100644 --- a/ProjectExcavator/src/Drawings/DirectionType.java +++ b/ProjectExcavator/src/DirectionType.java @@ -1,7 +1,4 @@ -package Drawings; - public enum DirectionType { - Unknow, Up, Down, Left, diff --git a/ProjectExcavator/src/Drawings/DrawingBulldozer.java b/ProjectExcavator/src/DrawingExcavator.java similarity index 52% rename from ProjectExcavator/src/Drawings/DrawingBulldozer.java rename to ProjectExcavator/src/DrawingExcavator.java index 3b0f2e9..9278b07 100644 --- a/ProjectExcavator/src/Drawings/DrawingBulldozer.java +++ b/ProjectExcavator/src/DrawingExcavator.java @@ -1,59 +1,30 @@ -package Drawings; -import DifferentRollers.DrawingRollersCross; -import DifferentRollers.DrawingRollersPlus; -import DifferentRollers.DrawingRollersStar; -import DifferentRollers.IDifferentRollers; -import Entities.EntityBulldozer; - -import javax.swing.*; import java.awt.*; import java.util.Random; -public class DrawingBulldozer extends JPanel { - public Entities.EntityBulldozer EntityBulldozer; - public IDifferentRollers drawingRollers; - public Integer _startPosX; // Левая координата отрисовки - public Integer _startPosY; // Верхняя координата отрисовки +public class DrawingExcavator { + private EntityExcavator EntityExcavator; // Класс-сущность + public DrawingRollers drawingRollers = null; + + private Integer _startPosX; // Левая координата отрисовки + private Integer _startPosY; // Верхняя координата отрисовки private Integer _pictureWidth; // Ширина окна отрисовки private Integer _pictureHeight; // Высота окна отрисовки - protected int _drawingExcWidth = 120; // Ширина отрисовки трактора - protected int _drawingExcHeight = 70; // Высота отрисовки трактора - public Integer GetPosX(){return _startPosX;} - public Integer GetPosY(){return _startPosY;} - public Integer GetWidth(){return _drawingExcWidth;} - public Integer GetHeight(){return _drawingExcHeight;} + private final int _drawingExcWidth = 120; // Ширина отрисовки трактора + private final int _drawingExcHeight = 70; // Высота отрисовки трактора - protected DrawingBulldozer(){ + + + // Инициализация свойств + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ + EntityExcavator = new EntityExcavator(); + EntityExcavator.Init(speed, weight, bodyColor, additionalColor, prop, ladle); _pictureWidth = null; _pictureHeight = null; _startPosX = null; _startPosY = null; - } - - protected void SetTypeRollers(){ - int rollersCount = (int)(Math.random()*4); - switch ((int)(Math.random()*3+1)){ - case 1: - drawingRollers = new DrawingRollersCross(); - break; - case 2: - drawingRollers = new DrawingRollersPlus(); - break; - case 3: - drawingRollers = new DrawingRollersStar(); - break; - default: - rollersCount = 0; - break; - } - drawingRollers.setRollersCount(rollersCount); - } - - public DrawingBulldozer(int speed, double weight, Color bodyColor){ - super(); - EntityBulldozer = new EntityBulldozer(speed, weight, bodyColor); - SetTypeRollers(); + drawingRollers = new DrawingRollers(); + drawingRollers.setRollersCount((int)(Math.random() * 4)); } // Смена границ формы отрисовки @@ -100,28 +71,28 @@ public class DrawingBulldozer extends JPanel { // Изменение направления движения public boolean MoveTransport(DirectionType direction){ - if (EntityBulldozer == null || _startPosX == null || _startPosY == null){ + if (EntityExcavator == null || _startPosX == null || _startPosY == null){ return false; } switch (direction) { case Left: - if (_startPosX - EntityBulldozer.Step > 0) { - _startPosX -= (int) EntityBulldozer.Step; + if (_startPosX - EntityExcavator.Step > 0) { + _startPosX -= (int) EntityExcavator.Step; } return true; case Up: - if (_startPosY - EntityBulldozer.Step > 0) { - _startPosY -= (int) EntityBulldozer.Step; + if (_startPosY - EntityExcavator.Step > 0) { + _startPosY -= (int) EntityExcavator.Step; } return true; case Right: - if (_startPosX + EntityBulldozer.Step < _pictureWidth - _drawingExcWidth) { - _startPosX += (int) EntityBulldozer.Step; + if (_startPosX + EntityExcavator.Step < _pictureWidth - _drawingExcWidth) { + _startPosX += (int) EntityExcavator.Step; } return true; case Down: - if (_startPosY + EntityBulldozer.Step < _pictureHeight - _drawingExcHeight) { - _startPosY += (int) EntityBulldozer.Step; + if (_startPosY + EntityExcavator.Step < _pictureHeight - _drawingExcHeight) { + _startPosY += (int) EntityExcavator.Step; } return true; default: @@ -131,7 +102,7 @@ public class DrawingBulldozer extends JPanel { // Отрисовка Экскаватора public void DrawTransport(Graphics2D g){ - if (EntityBulldozer == null || _startPosX == null || _startPosY == null){ + if (EntityExcavator == null || _startPosX == null || _startPosY == null){ return; } @@ -141,7 +112,7 @@ public class DrawingBulldozer extends JPanel { g.drawRect(_startPosX + 35, _startPosY + 10, 5, 15); g.drawRect(_startPosX + 55, _startPosY + 3, 22, 22); // кабина - g.setColor(EntityBulldozer.getBodyColor()); + g.setColor(EntityExcavator.getBodyColor()); g.fillRect(_startPosX + 21, _startPosY + 26, 59, 19); g.fillRect(_startPosX + 36, _startPosY + 11, 4, 14); @@ -157,7 +128,7 @@ public class DrawingBulldozer extends JPanel { g.drawOval(_startPosX + 15, _startPosY + 47, 17, 17); g.drawOval(_startPosX + 63, _startPosY + 47, 17, 17); - g.setColor(EntityBulldozer.getBodyColor()); + g.setColor(EntityExcavator.getBodyColor()); g.fillOval(_startPosX + 15, _startPosY + 47, 17, 17); g.fillOval(_startPosX + 63, _startPosY + 47, 17, 17); @@ -166,24 +137,69 @@ public class DrawingBulldozer extends JPanel { g.drawOval(_startPosX + 40, _startPosY + 48, 5, 5); g.drawOval(_startPosX + 50, _startPosY + 48, 5, 5); - g.setColor(EntityBulldozer.getBodyColor()); + g.setColor(EntityExcavator.getBodyColor()); g.fillOval(_startPosX + 40, _startPosY + 48, 5, 5); g.fillOval(_startPosX + 50, _startPosY + 48, 5, 5); + if (EntityExcavator.getProp()){ + g.setColor(Color.BLACK); + //Опоры + //справа + g.drawRect(_startPosX + 80, _startPosY + 40, 11, 3); + g.drawRect(_startPosX + 87, _startPosY + 43, 5, 25); + g.drawRect(_startPosX + 84, _startPosY + 68, 11, 3); + + //слева + g.drawRect(_startPosX + 6, _startPosY + 40, 13, 3); + g.drawRect(_startPosX + 4, _startPosY + 43, 5, 25); + g.drawRect(_startPosX + 1, _startPosY + 68, 11, 3); + + g.setColor(EntityExcavator.getAdditionalColor()); + //покраска справа + g.fillRect(_startPosX + 81, _startPosY + 41, 10, 2); + g.fillRect(_startPosX + 88, _startPosY + 44, 4, 24); + g.fillRect(_startPosX + 85, _startPosY + 69, 10, 2); + + //покраска слева + g.fillRect(_startPosX + 7, _startPosY + 41, 12, 2); + g.fillRect(_startPosX + 5, _startPosY + 44, 4, 24); + g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); + } + + if(EntityExcavator.getLadle()){ + g.setColor(Color.BLACK); + //Ковш + //ковш(стрела) + g.drawRect(_startPosX + 77, _startPosY + 17, 14, 8); + g.drawRect(_startPosX + 91, _startPosY + 9, 20, 7); + g.drawRect(_startPosX + 111, _startPosY + 17, 9, 20); + + int[] pointsLadleX = {_startPosX + 120, _startPosX + 104, _startPosX + 120}; + int[] pointsLadleY = {_startPosY + 37, _startPosY + 54, _startPosY + 54}; + + Polygon Ladle = new Polygon(pointsLadleX, pointsLadleY, 3); + g.drawPolygon(Ladle); + g.setColor(EntityExcavator.getAdditionalColor()); + g.fillPolygon(Ladle); + //покраска + g.fillRect(_startPosX + 78, _startPosY + 18, 13, 7); + g.fillRect(_startPosX + 92, _startPosY + 10, 19, 6); + g.fillRect(_startPosX + 112, _startPosY + 18, 8, 19); + } int x = _startPosX; if (drawingRollers.getRollersCount() != null){ switch (drawingRollers.getRollersCount()){ case OneRoller: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); break; case TwoRollers: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); - drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); break; case ThreeRollers: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); - drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); - drawingRollers.DrawRollers(g,x + 54, _startPosY + 55, 8, 8, EntityBulldozer.getBodyColor()); + drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); + drawingRollers.DrawRollers(g,x + 54, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); break; } } diff --git a/ProjectExcavator/src/DifferentRollers/DrawingRollersPlus.java b/ProjectExcavator/src/DrawingRollers.java similarity index 65% rename from ProjectExcavator/src/DifferentRollers/DrawingRollersPlus.java rename to ProjectExcavator/src/DrawingRollers.java index 1754e45..e42b12f 100644 --- a/ProjectExcavator/src/DifferentRollers/DrawingRollersPlus.java +++ b/ProjectExcavator/src/DrawingRollers.java @@ -1,10 +1,7 @@ -package DifferentRollers; - import java.awt.*; -public class DrawingRollersPlus implements IDifferentRollers{ +public class DrawingRollers { private RollersCount rollersCount; - @Override public void setRollersCount(int numOfRoller){ for (RollersCount numofenum : RollersCount.values()){ if (numofenum.getNumOfRollers() == numOfRoller){ @@ -14,18 +11,13 @@ public class DrawingRollersPlus implements IDifferentRollers{ } } - @Override public RollersCount getRollersCount(){ return rollersCount; } - - @Override - public void DrawRollers(Graphics2D g, int x, int y, int width, int height, Color bodyColor){ + public void DrawRollers(Graphics g, int x, int y, int width, int height, Color bodyColor){ g.setColor(bodyColor); g.fillOval(x, y, width, height); g.setColor(Color.BLACK); - g.drawLine(x+4, y, x+4, y+8); - g.drawLine(x, y+4, x+8, y+4); g.drawOval(x, y, width, height); g.setColor(bodyColor); } diff --git a/ProjectExcavator/src/Drawings/DrawingExcavator.java b/ProjectExcavator/src/Drawings/DrawingExcavator.java deleted file mode 100644 index 6600b23..0000000 --- a/ProjectExcavator/src/Drawings/DrawingExcavator.java +++ /dev/null @@ -1,67 +0,0 @@ -package Drawings; - -import Entities.EntityExcavator; - -import java.awt.*; - -public class DrawingExcavator extends DrawingBulldozer{ - - public DrawingExcavator(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ - EntityBulldozer = new EntityExcavator(speed, weight, bodyColor, additionalColor, prop, ladle); - SetTypeRollers(); - } - - // Отрисовка Экскаватора - @Override - public void DrawTransport(Graphics2D g){ - if (EntityBulldozer == null || !(EntityBulldozer instanceof EntityExcavator excavator) || _startPosX == null || _startPosY == null){ - return; - } - super.DrawTransport(g); - if (excavator.Prop){ - g.setColor(Color.BLACK); - //Опоры - //справа - g.drawRect(_startPosX + 80, _startPosY + 40, 11, 3); - g.drawRect(_startPosX + 87, _startPosY + 43, 5, 25); - g.drawRect(_startPosX + 84, _startPosY + 68, 11, 3); - - //слева - g.drawRect(_startPosX + 6, _startPosY + 40, 13, 3); - g.drawRect(_startPosX + 4, _startPosY + 43, 5, 25); - g.drawRect(_startPosX + 1, _startPosY + 68, 11, 3); - - g.setColor(excavator.getAdditionalColor()); - //покраска справа - g.fillRect(_startPosX + 81, _startPosY + 41, 10, 2); - g.fillRect(_startPosX + 88, _startPosY + 44, 4, 24); - g.fillRect(_startPosX + 85, _startPosY + 69, 10, 2); - - //покраска слева - g.fillRect(_startPosX + 7, _startPosY + 41, 12, 2); - g.fillRect(_startPosX + 5, _startPosY + 44, 4, 24); - g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); - } - - if(excavator.Ladle){ - g.setColor(Color.BLACK); - //Ковш - //ковш(стрела) - g.drawRect(_startPosX + 77, _startPosY + 17, 14, 8); - g.drawRect(_startPosX + 91, _startPosY + 9, 20, 7); - g.drawRect(_startPosX + 111, _startPosY + 17, 9, 20); - - int[] pointsLadleX = {_startPosX + 120, _startPosX + 104, _startPosX + 120}; - int[] pointsLadleY = {_startPosY + 37, _startPosY + 54, _startPosY + 54}; - - Polygon Ladle = new Polygon(pointsLadleX, pointsLadleY, 3); - g.drawPolygon(Ladle); - g.setColor(excavator.getAdditionalColor()); - g.fillPolygon(Ladle); - //покраска - g.fillRect(_startPosX + 78, _startPosY + 18, 13, 7); - g.fillRect(_startPosX + 92, _startPosY + 10, 19, 6); - g.fillRect(_startPosX + 112, _startPosY + 18, 8, 19); - } - } -} diff --git a/ProjectExcavator/src/Entities/EntityBulldozer.java b/ProjectExcavator/src/Entities/EntityBulldozer.java deleted file mode 100644 index 7dfab9e..0000000 --- a/ProjectExcavator/src/Entities/EntityBulldozer.java +++ /dev/null @@ -1,20 +0,0 @@ -package Entities; - -import java.awt.*; - -public class EntityBulldozer { - private int Speed; - private double Weight; - private Color BodyColor; - - public Color getBodyColor() { - return BodyColor; - } - public double Step; - public EntityBulldozer(int speed, double weight, Color bodyColor){ - Speed = speed; - Weight = weight; - BodyColor = bodyColor; - Step = Speed * 100 / Weight; - } -} diff --git a/ProjectExcavator/src/Entities/EntityExcavator.java b/ProjectExcavator/src/Entities/EntityExcavator.java deleted file mode 100644 index eca47e9..0000000 --- a/ProjectExcavator/src/Entities/EntityExcavator.java +++ /dev/null @@ -1,18 +0,0 @@ -package Entities; - -import java.awt.*; - -public class EntityExcavator extends EntityBulldozer{ - private Color AdditionalColor; - public Color getAdditionalColor(){ - return AdditionalColor; - } - public boolean Prop; - public boolean Ladle; - public EntityExcavator(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ - super(speed, weight, bodyColor); - AdditionalColor = additionalColor; - Prop = prop; - Ladle = ladle; - } -} diff --git a/ProjectExcavator/src/EntityExcavator.java b/ProjectExcavator/src/EntityExcavator.java new file mode 100644 index 0000000..75b1aa1 --- /dev/null +++ b/ProjectExcavator/src/EntityExcavator.java @@ -0,0 +1,33 @@ +import java.awt.*; + +public class EntityExcavator { + private int Speed; + private double Weight; + private Color BodyColor; + + public Color getBodyColor() { + return BodyColor; + } + private Color AdditionalColor; + public Color getAdditionalColor(){ + return AdditionalColor; + } + private boolean Prop; + public boolean getProp(){ + return Prop; + } + private boolean Ladle; + public boolean getLadle(){ + return Ladle; + } + public double Step; + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Prop = prop; + Ladle = ladle; + Step = Speed * 100 / Weight; + } +} diff --git a/ProjectExcavator/src/FormExcavator.java b/ProjectExcavator/src/FormExcavator.java index a810d30..9834e27 100644 --- a/ProjectExcavator/src/FormExcavator.java +++ b/ProjectExcavator/src/FormExcavator.java @@ -1,9 +1,3 @@ -import Drawings.CanvasExcavator; -import Drawings.DirectionType; -import Drawings.DrawingBulldozer; -import Drawings.DrawingExcavator; -import MovementStrategy.*; - import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; @@ -17,58 +11,23 @@ public class FormExcavator extends JFrame { private Dimension dimension; private int Width, Height; private CanvasExcavator canvasExcavator = new CanvasExcavator(); - private JButton CreateButton = new JButton("Создать экскаватор"); - private JButton CreateBullButton = new JButton("Создать бульдозер"); + private JButton CreateButton = new JButton("Создать"); private JButton UpButton = new JButton(); private JButton DownButton = new JButton(); private JButton LeftButton = new JButton(); private JButton RightButton = new JButton(); - private AbstractStrategy _strategy; - private JComboBox ComboBoxStrategy = new JComboBox(new String[]{"К центру", "К краю"}); - private JButton ButtonStrategy = new JButton("Шаг"); public FormExcavator(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 "DrawingBulldozer": - canvasExcavator._drawingBulldozer = new DrawingBulldozer(speed, weight, bodyColor); - canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); - canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); - canvasExcavator.repaint(); - break; - case "DrawingExcavator": - 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(); - canvasExcavator._drawingBulldozer = new DrawingExcavator(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); - canvasExcavator._drawingBulldozer.SetPosition(StartPositionX, StartPositionY); - canvasExcavator.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; - _strategy = null; CreateButton.setName("CREATE"); - CreateBullButton.setName("CREATEBULLBUTTON"); Icon iconUp = new ImageIcon("ProjectExcavator/res/up.png"); UpButton.setIcon(iconUp); UpButton.setName("UP"); @@ -85,73 +44,39 @@ public class FormExcavator extends JFrame { CreateButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - CreateObject("DrawingExcavator"); - } - }); - - CreateBullButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - CreateObject("DrawingBulldozer"); - } - }); - - ButtonStrategy.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - if (canvasExcavator._drawingBulldozer == 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 MoveableExcavator(canvasExcavator._drawingBulldozer), Width, Height); - } - if (_strategy == null) - { - return; - } - ComboBoxStrategy.setEnabled(false); - _strategy.MakeStep(); - if (_strategy.GetStatus() == StrategyStatus.Finish) - { - ComboBoxStrategy.setEnabled(true); - _strategy = null; - } + int StartPositionX = (int)(Math.random() * 90 + 10); + int StartPositionY = (int)(Math.random() * 90 + 10); + int speed = (int)(Math.random() * 300 + 100); + double weight = (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(); + canvasExcavator._drawingExcavator = new DrawingExcavator(); + canvasExcavator._drawingExcavator.Init(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); + canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); + canvasExcavator._drawingExcavator.SetPosition( StartPositionX, StartPositionY); + canvasExcavator.repaint(); } }); ActionListener actionListener = new ActionListener() { @Override public void actionPerformed(ActionEvent event) { - if (canvasExcavator._drawingBulldozer == null) return; + if (canvasExcavator._drawingExcavator == null) return; boolean result = false; switch ((((JButton)(event.getSource())).getName())) { case "UP": - result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Up); + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Up); break; case "DOWN": - result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Down); + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Down); break; case "LEFT": - result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Left); + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Left); break; case "RIGHT": - result = canvasExcavator._drawingBulldozer.MoveTransport(DirectionType.Right); + result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Right); break; } if (result) { @@ -167,22 +92,16 @@ public class FormExcavator extends JFrame { setSize(dimension.width,dimension.height); setLayout(null); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 85, 160, 35); - CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); + CreateButton.setBounds(10, getHeight() - 90, 100, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); - ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 25); - ButtonStrategy.setBounds(getWidth() - 130, 45, 100, 25); add(CreateButton); - add(CreateBullButton); add(UpButton); add(DownButton); add(RightButton); add(LeftButton); - add(ButtonStrategy); - add(ComboBoxStrategy); add(canvasExcavator); setVisible(true); //обработка события изменения размеров окна @@ -190,17 +109,14 @@ public class FormExcavator extends JFrame { public void componentResized(ComponentEvent e) { Width = getWidth() - 15; Height = getHeight() - 35; - if (canvasExcavator._drawingBulldozer != null) - canvasExcavator._drawingBulldozer.SetPictureSize(Width, Height); + if (canvasExcavator._drawingExcavator != null) + canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 85, 160, 35); - CreateBullButton.setBounds(180, getHeight() - 85, 160, 35); + CreateButton.setBounds(10, getHeight() - 90, 100, 35); UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); - ComboBoxStrategy.setBounds(getWidth() - 170, 10, 140, 25); - ButtonStrategy.setBounds(getWidth() - 130, 45, 100, 25); } }); } diff --git a/ProjectExcavator/src/MovementStrategy/AbstractStrategy.java b/ProjectExcavator/src/MovementStrategy/AbstractStrategy.java deleted file mode 100644 index 05a10f8..0000000 --- a/ProjectExcavator/src/MovementStrategy/AbstractStrategy.java +++ /dev/null @@ -1,56 +0,0 @@ -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 (IsTargetDestination()) - { - _state = StrategyStatus.Finish; - return; - } - MoveToTarget(); - } - protected boolean MoveLeft() {return MoveTo(MovementDirection.Left);} - protected boolean MoveRight() {return MoveTo(MovementDirection.Right);} - protected boolean MoveUp() {return MoveTo(MovementDirection.Up);} - protected boolean MoveDown() {return MoveTo(MovementDirection.Down);} - protected ObjectParameters GetObjectParameters() {return _moveableObject.GetObjectPosition();} - protected Integer GetStep() - { - if (_state != StrategyStatus.InProgress) - { - return null; - } - return _moveableObject.GetStep(); - } - protected abstract void MoveToTarget(); - protected abstract boolean IsTargetDestination(); - 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/ProjectExcavator/src/MovementStrategy/IMoveableObjects.java b/ProjectExcavator/src/MovementStrategy/IMoveableObjects.java deleted file mode 100644 index 4ecb751..0000000 --- a/ProjectExcavator/src/MovementStrategy/IMoveableObjects.java +++ /dev/null @@ -1,7 +0,0 @@ -package MovementStrategy; - -public interface IMoveableObjects { - ObjectParameters GetObjectPosition(); - int GetStep(); - boolean TryMoveObject(MovementDirection direction); -} diff --git a/ProjectExcavator/src/MovementStrategy/MoveToBorder.java b/ProjectExcavator/src/MovementStrategy/MoveToBorder.java deleted file mode 100644 index 647a390..0000000 --- a/ProjectExcavator/src/MovementStrategy/MoveToBorder.java +++ /dev/null @@ -1,26 +0,0 @@ -package MovementStrategy; - -public class MoveToBorder extends AbstractStrategy{ - @Override - protected boolean IsTargetDestination(){ - 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/ProjectExcavator/src/MovementStrategy/MoveToCenter.java b/ProjectExcavator/src/MovementStrategy/MoveToCenter.java deleted file mode 100644 index 74a093a..0000000 --- a/ProjectExcavator/src/MovementStrategy/MoveToCenter.java +++ /dev/null @@ -1,48 +0,0 @@ -package MovementStrategy; - -public class MoveToCenter extends AbstractStrategy{ - @Override - protected boolean IsTargetDestination() { - 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/ProjectExcavator/src/MovementStrategy/MoveableExcavator.java b/ProjectExcavator/src/MovementStrategy/MoveableExcavator.java deleted file mode 100644 index 24e6501..0000000 --- a/ProjectExcavator/src/MovementStrategy/MoveableExcavator.java +++ /dev/null @@ -1,45 +0,0 @@ -package MovementStrategy; - -import Drawings.CanvasExcavator; -import Drawings.DrawingBulldozer; -import Drawings.DirectionType; - -public class MoveableExcavator implements IMoveableObjects{ - private CanvasExcavator canvas = new CanvasExcavator(); - public MoveableExcavator(DrawingBulldozer drawingBulldozer){ - canvas._drawingBulldozer = drawingBulldozer; - } - - @Override - public ObjectParameters GetObjectPosition() { - if (canvas._drawingBulldozer == null || canvas._drawingBulldozer.EntityBulldozer == null || - canvas._drawingBulldozer.GetPosX() == null || canvas._drawingBulldozer.GetPosY() == null) - { - return null; - } - return new ObjectParameters(canvas._drawingBulldozer.GetPosX(), canvas._drawingBulldozer.GetPosY(), - canvas._drawingBulldozer.GetWidth(), canvas._drawingBulldozer.GetHeight()); - } - @Override - public int GetStep() { - return (int)(canvas._drawingBulldozer.EntityBulldozer.Step); - } - @Override - public boolean TryMoveObject(MovementDirection direction) { - if (canvas._drawingBulldozer == null || canvas._drawingBulldozer.EntityBulldozer == null) - { - return false; - } - return canvas._drawingBulldozer.MoveTransport(GetDirectionType(direction)); - } - private static DirectionType GetDirectionType(MovementDirection direction) - { - switch (direction) { - case Left: return DirectionType.Left; - case Right: return DirectionType.Right; - case Up: return DirectionType.Up; - case Down: return DirectionType.Down; - default: return DirectionType.Unknow; - } - } -} diff --git a/ProjectExcavator/src/MovementStrategy/MovementDirection.java b/ProjectExcavator/src/MovementStrategy/MovementDirection.java deleted file mode 100644 index 661d82f..0000000 --- a/ProjectExcavator/src/MovementStrategy/MovementDirection.java +++ /dev/null @@ -1,8 +0,0 @@ -package MovementStrategy; - -public enum MovementDirection { - Up, - Down, - Left, - Right -} \ No newline at end of file diff --git a/ProjectExcavator/src/MovementStrategy/ObjectParameters.java b/ProjectExcavator/src/MovementStrategy/ObjectParameters.java deleted file mode 100644 index b68fe75..0000000 --- a/ProjectExcavator/src/MovementStrategy/ObjectParameters.java +++ /dev/null @@ -1,27 +0,0 @@ -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/ProjectExcavator/src/MovementStrategy/StrategyStatus.java b/ProjectExcavator/src/MovementStrategy/StrategyStatus.java deleted file mode 100644 index 4f087ea..0000000 --- a/ProjectExcavator/src/MovementStrategy/StrategyStatus.java +++ /dev/null @@ -1,7 +0,0 @@ -package MovementStrategy; - -public enum StrategyStatus { - NotInit, - InProgress, - Finish -} diff --git a/ProjectExcavator/src/DifferentRollers/RollersCount.java b/ProjectExcavator/src/RollersCount.java similarity index 90% rename from ProjectExcavator/src/DifferentRollers/RollersCount.java rename to ProjectExcavator/src/RollersCount.java index 94f8bb4..c8603d5 100644 --- a/ProjectExcavator/src/DifferentRollers/RollersCount.java +++ b/ProjectExcavator/src/RollersCount.java @@ -1,5 +1,3 @@ -package DifferentRollers; - public enum RollersCount { OneRoller(1), TwoRollers(2), -- 2.25.1 From 381937ca6c5f774b6a544267ba1159b2fec011d2 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:38:46 +0400 Subject: [PATCH 13/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/res/down.png'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/res/down.png | Bin 321 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ProjectExcavator/res/down.png diff --git a/ProjectExcavator/res/down.png b/ProjectExcavator/res/down.png deleted file mode 100644 index 30e0015c4063766af2f6329d54e48713db85bba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!E2r_jv*25Z>JgZF*-`Ls=F+{m~n)0OB45w zrc=5l=ML(Y^gZA>VyjZJ>Zz@rncrq|4@-?YBsY~1)H9ay0)Fug-0~0WIDgKud^UMy`&B14{sK1X0+!no zN*=JBdnh*VVfcfy?>K(eJ}HX-c`RIP-i$p0*RM?eW_YiRUCil^;<;GH>+wqAHFVdQ&MBb@0E2sh=l}o! -- 2.25.1 From 25753f7e754acb50bd1acbe2dfe8f79003c63d40 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:38:51 +0400 Subject: [PATCH 14/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/res/left.png'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/res/left.png | Bin 270 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ProjectExcavator/res/left.png diff --git a/ProjectExcavator/res/left.png b/ProjectExcavator/res/left.png deleted file mode 100644 index 9f5b0d0af1df28a6f237891f975f04b0c5b25782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!Nr~~jv*25$r7xK6GVEN0u8t%BqSD^Xg0`q z$SV4@{dM>wcxZ{f08>(_0w4RM{|+^Br{o0$*pG-eN<0w|kTcjI*Wt)#!E@x8LSrM7 zcEb;50e|+SP=#kqNwXN7I3+}s798R7+G4(7MvwrV3o1EnQeH0uI>YUth6L+j5d#AT2Gf3poT@E*rU0GG;OXk; Jvd$@?2>=PePs9KK -- 2.25.1 From aba24424d3254d42b2f3b1bb0d4fee413f8ba033 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:38:54 +0400 Subject: [PATCH 15/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/res/right.png'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/res/right.png | Bin 266 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ProjectExcavator/res/right.png diff --git a/ProjectExcavator/res/right.png b/ProjectExcavator/res/right.png deleted file mode 100644 index e0568bb06e0be9acd0738e1be8dce566438941e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!TFvpjv*25$r7xK6GVEN0u8t%BqSD^Y-O+) zuy&fk^Skkfa*L&bgKWon=8yFXeC?lF8!8+aPZ%oH2zESnU}EO&Y4~9v&@8i6PQ_qC zgK$S^V}+GKJ;NhWhaPbOuLD;;Ok@*j7BbcdWM?uAb2wqRKw+8Lfz0O%xFn;P^c2)I z&t4FcVE(w^gm3erISW^?$XzSFtO0e4B8P+o!zE{hoHzG$ZUddl;OXk;vd$@?2>|@M BQY8QY -- 2.25.1 From c10b38d62fad9a0f2992ea75519e450d8996f947 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:38:58 +0400 Subject: [PATCH 16/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/res/up.png'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/res/up.png | Bin 304 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ProjectExcavator/res/up.png diff --git a/ProjectExcavator/res/up.png b/ProjectExcavator/res/up.png deleted file mode 100644 index 5f5d5b656d9d04a0d1754a88d77d28e393f5edd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a1|;QfZjJ;}jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!K0oojv*25Zzmn(WHJ@XMXdu}hheliXwYcgrWqYk`)hb}x|(dli@< zv~i-wSAX>_6RJ->Wv}F|4$JyBXY%TEUU5%6^-_PG5BNN{xF~ey>A6onZJl#+i{vZc z6(=XIKNeOb=yoYh$Y22WQ%mvv4FO#m{?ec=EA -- 2.25.1 From a79adc1793dd13030ace54cbddb2895240fa314f Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:39:59 +0400 Subject: [PATCH 17/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/CanvasExcavator.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/CanvasExcavator.java | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 ProjectExcavator/src/CanvasExcavator.java diff --git a/ProjectExcavator/src/CanvasExcavator.java b/ProjectExcavator/src/CanvasExcavator.java deleted file mode 100644 index 3ad543e..0000000 --- a/ProjectExcavator/src/CanvasExcavator.java +++ /dev/null @@ -1,16 +0,0 @@ -import javax.swing.*; -import java.awt.*; - -public class CanvasExcavator extends JComponent{ - public DrawingExcavator _drawingExcavator; - public CanvasExcavator(){} - public void paintComponent(Graphics g){ - if(_drawingExcavator == null){ - return; - } - super.paintComponent(g); - Graphics2D g2d = (Graphics2D) g; - _drawingExcavator.DrawTransport(g2d); - super.repaint(); - } -} -- 2.25.1 From 83a99e607bfd15b037540431baf216c2c3ebe615 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:40:02 +0400 Subject: [PATCH 18/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/DirectionType.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/DirectionType.java | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 ProjectExcavator/src/DirectionType.java diff --git a/ProjectExcavator/src/DirectionType.java b/ProjectExcavator/src/DirectionType.java deleted file mode 100644 index d3a2058..0000000 --- a/ProjectExcavator/src/DirectionType.java +++ /dev/null @@ -1,6 +0,0 @@ -public enum DirectionType { - Up, - Down, - Left, - Right -} \ No newline at end of file -- 2.25.1 From 385f78a9e0b9f314ea7b4fe209f6fdbabde22e9d Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:40:05 +0400 Subject: [PATCH 19/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/DrawingExcavator.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/DrawingExcavator.java | 207 --------------------- 1 file changed, 207 deletions(-) delete mode 100644 ProjectExcavator/src/DrawingExcavator.java diff --git a/ProjectExcavator/src/DrawingExcavator.java b/ProjectExcavator/src/DrawingExcavator.java deleted file mode 100644 index 9278b07..0000000 --- a/ProjectExcavator/src/DrawingExcavator.java +++ /dev/null @@ -1,207 +0,0 @@ - -import java.awt.*; -import java.util.Random; - -public class DrawingExcavator { - private EntityExcavator EntityExcavator; // Класс-сущность - public DrawingRollers drawingRollers = null; - - private Integer _startPosX; // Левая координата отрисовки - private Integer _startPosY; // Верхняя координата отрисовки - private Integer _pictureWidth; // Ширина окна отрисовки - private Integer _pictureHeight; // Высота окна отрисовки - private final int _drawingExcWidth = 120; // Ширина отрисовки трактора - private final int _drawingExcHeight = 70; // Высота отрисовки трактора - - - - // Инициализация свойств - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ - EntityExcavator = new EntityExcavator(); - EntityExcavator.Init(speed, weight, bodyColor, additionalColor, prop, ladle); - _pictureWidth = null; - _pictureHeight = null; - _startPosX = null; - _startPosY = null; - drawingRollers = new DrawingRollers(); - drawingRollers.setRollersCount((int)(Math.random() * 4)); - } - - // Смена границ формы отрисовки - public void SetPictureSize(int width, int height) - { - if (_drawingExcWidth > width || _drawingExcHeight > height) - { - return; - } - - if (_startPosX != null && _startPosY != null) { - if (_startPosX < 0) { _startPosX = 0; } - if (_startPosX + _drawingExcWidth > width) { _startPosX = width - _drawingExcWidth; } - if (_startPosY < 0) { _startPosY = 0; } - if (_startPosY + _drawingExcHeight > height) { _startPosY = height - _drawingExcHeight; } - } - _pictureWidth = width; - _pictureHeight = height; - } - - //Установка позиции Экскаватора - public void SetPosition(int x, int y){ - if (_pictureWidth == null || _pictureHeight == null) - { - return; - } - - if (x + _drawingExcWidth > _pictureWidth || x < 0) { - Random random = new Random(); - _startPosX = random.nextInt(_pictureWidth - _drawingExcWidth); - } - else { - _startPosX = x; - } - - if (y + _drawingExcHeight > _pictureHeight || y < 0) { - Random random = new Random(); - _startPosY = random.nextInt(_pictureHeight - _drawingExcHeight); - } - else { - _startPosY = y; - } - } - - // Изменение направления движения - public boolean MoveTransport(DirectionType direction){ - if (EntityExcavator == null || _startPosX == null || _startPosY == null){ - return false; - } - switch (direction) { - case Left: - if (_startPosX - EntityExcavator.Step > 0) { - _startPosX -= (int) EntityExcavator.Step; - } - return true; - case Up: - if (_startPosY - EntityExcavator.Step > 0) { - _startPosY -= (int) EntityExcavator.Step; - } - return true; - case Right: - if (_startPosX + EntityExcavator.Step < _pictureWidth - _drawingExcWidth) { - _startPosX += (int) EntityExcavator.Step; - } - return true; - case Down: - if (_startPosY + EntityExcavator.Step < _pictureHeight - _drawingExcHeight) { - _startPosY += (int) EntityExcavator.Step; - } - return true; - default: - return false; - } - } - - // Отрисовка Экскаватора - public void DrawTransport(Graphics2D g){ - if (EntityExcavator == null || _startPosX == null || _startPosY == null){ - return; - } - - // Границы экскаватора - g.setColor(Color.BLACK); - g.drawRect(_startPosX + 20, _startPosY + 25, 60, 20); // главная нижняя - g.drawRect(_startPosX + 35, _startPosY + 10, 5, 15); - g.drawRect(_startPosX + 55, _startPosY + 3, 22, 22); // кабина - - g.setColor(EntityExcavator.getBodyColor()); - g.fillRect(_startPosX + 21, _startPosY + 26, 59, 19); - g.fillRect(_startPosX + 36, _startPosY + 11, 4, 14); - - g.setColor(Color.cyan); - g.fillRect(_startPosX + 56, _startPosY + 4, 21, 21); - - // Гусеница - g.setColor(Color.BLACK); - g.drawRect(_startPosX + 24, _startPosY + 47, 48, 17); - - // Основные катки - g.setColor(Color.BLACK); - g.drawOval(_startPosX + 15, _startPosY + 47, 17, 17); - g.drawOval(_startPosX + 63, _startPosY + 47, 17, 17); - - g.setColor(EntityExcavator.getBodyColor()); - g.fillOval(_startPosX + 15, _startPosY + 47, 17, 17); - g.fillOval(_startPosX + 63, _startPosY + 47, 17, 17); - - // Малые катки - g.setColor(Color.BLACK); - g.drawOval(_startPosX + 40, _startPosY + 48, 5, 5); - g.drawOval(_startPosX + 50, _startPosY + 48, 5, 5); - - g.setColor(EntityExcavator.getBodyColor()); - g.fillOval(_startPosX + 40, _startPosY + 48, 5, 5); - g.fillOval(_startPosX + 50, _startPosY + 48, 5, 5); - - if (EntityExcavator.getProp()){ - g.setColor(Color.BLACK); - //Опоры - //справа - g.drawRect(_startPosX + 80, _startPosY + 40, 11, 3); - g.drawRect(_startPosX + 87, _startPosY + 43, 5, 25); - g.drawRect(_startPosX + 84, _startPosY + 68, 11, 3); - - //слева - g.drawRect(_startPosX + 6, _startPosY + 40, 13, 3); - g.drawRect(_startPosX + 4, _startPosY + 43, 5, 25); - g.drawRect(_startPosX + 1, _startPosY + 68, 11, 3); - - g.setColor(EntityExcavator.getAdditionalColor()); - //покраска справа - g.fillRect(_startPosX + 81, _startPosY + 41, 10, 2); - g.fillRect(_startPosX + 88, _startPosY + 44, 4, 24); - g.fillRect(_startPosX + 85, _startPosY + 69, 10, 2); - - //покраска слева - g.fillRect(_startPosX + 7, _startPosY + 41, 12, 2); - g.fillRect(_startPosX + 5, _startPosY + 44, 4, 24); - g.fillRect(_startPosX + 2, _startPosY + 69, 10, 2); - } - - if(EntityExcavator.getLadle()){ - g.setColor(Color.BLACK); - //Ковш - //ковш(стрела) - g.drawRect(_startPosX + 77, _startPosY + 17, 14, 8); - g.drawRect(_startPosX + 91, _startPosY + 9, 20, 7); - g.drawRect(_startPosX + 111, _startPosY + 17, 9, 20); - - int[] pointsLadleX = {_startPosX + 120, _startPosX + 104, _startPosX + 120}; - int[] pointsLadleY = {_startPosY + 37, _startPosY + 54, _startPosY + 54}; - - Polygon Ladle = new Polygon(pointsLadleX, pointsLadleY, 3); - g.drawPolygon(Ladle); - g.setColor(EntityExcavator.getAdditionalColor()); - g.fillPolygon(Ladle); - //покраска - g.fillRect(_startPosX + 78, _startPosY + 18, 13, 7); - g.fillRect(_startPosX + 92, _startPosY + 10, 19, 6); - g.fillRect(_startPosX + 112, _startPosY + 18, 8, 19); - } - int x = _startPosX; - if (drawingRollers.getRollersCount() != null){ - switch (drawingRollers.getRollersCount()){ - case OneRoller: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - break; - case TwoRollers: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - break; - case ThreeRollers: - drawingRollers.DrawRollers(g,x + 34, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - drawingRollers.DrawRollers(g,x + 44, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - drawingRollers.DrawRollers(g,x + 54, _startPosY + 55, 8, 8, EntityExcavator.getBodyColor()); - break; - } - } - } -} -- 2.25.1 From 0ed9b601343df22482fd62d31542d0e31cdab0dd Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:40:09 +0400 Subject: [PATCH 20/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/DrawingRollers.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/DrawingRollers.java | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 ProjectExcavator/src/DrawingRollers.java diff --git a/ProjectExcavator/src/DrawingRollers.java b/ProjectExcavator/src/DrawingRollers.java deleted file mode 100644 index e42b12f..0000000 --- a/ProjectExcavator/src/DrawingRollers.java +++ /dev/null @@ -1,24 +0,0 @@ -import java.awt.*; - -public class DrawingRollers { - private RollersCount rollersCount; - public void setRollersCount(int numOfRoller){ - for (RollersCount numofenum : RollersCount.values()){ - if (numofenum.getNumOfRollers() == numOfRoller){ - rollersCount = numofenum; - return; - } - } - } - - public RollersCount getRollersCount(){ - return rollersCount; - } - public void DrawRollers(Graphics g, int x, int y, int width, int height, Color bodyColor){ - g.setColor(bodyColor); - g.fillOval(x, y, width, height); - g.setColor(Color.BLACK); - g.drawOval(x, y, width, height); - g.setColor(bodyColor); - } -} -- 2.25.1 From a8b1651fd8c69683209bdb621c170e891b609a43 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:40:12 +0400 Subject: [PATCH 21/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/EntityExcavator.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/EntityExcavator.java | 33 ----------------------- 1 file changed, 33 deletions(-) delete mode 100644 ProjectExcavator/src/EntityExcavator.java diff --git a/ProjectExcavator/src/EntityExcavator.java b/ProjectExcavator/src/EntityExcavator.java deleted file mode 100644 index 75b1aa1..0000000 --- a/ProjectExcavator/src/EntityExcavator.java +++ /dev/null @@ -1,33 +0,0 @@ -import java.awt.*; - -public class EntityExcavator { - private int Speed; - private double Weight; - private Color BodyColor; - - public Color getBodyColor() { - return BodyColor; - } - private Color AdditionalColor; - public Color getAdditionalColor(){ - return AdditionalColor; - } - private boolean Prop; - public boolean getProp(){ - return Prop; - } - private boolean Ladle; - public boolean getLadle(){ - return Ladle; - } - public double Step; - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, boolean prop, boolean ladle){ - Speed = speed; - Weight = weight; - BodyColor = bodyColor; - AdditionalColor = additionalColor; - Prop = prop; - Ladle = ladle; - Step = Speed * 100 / Weight; - } -} -- 2.25.1 From 9414dc58d11d732a0fffae95cf51a222f352e5d0 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:40:15 +0400 Subject: [PATCH 22/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/FormExcavator.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/FormExcavator.java | 123 ------------------------ 1 file changed, 123 deletions(-) delete mode 100644 ProjectExcavator/src/FormExcavator.java diff --git a/ProjectExcavator/src/FormExcavator.java b/ProjectExcavator/src/FormExcavator.java deleted file mode 100644 index 9834e27..0000000 --- a/ProjectExcavator/src/FormExcavator.java +++ /dev/null @@ -1,123 +0,0 @@ -import javax.swing.*; -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.util.Random; - -public class FormExcavator extends JFrame { - private String title; - private Dimension dimension; - private int Width, Height; - private CanvasExcavator canvasExcavator = new CanvasExcavator(); - private JButton CreateButton = new JButton("Создать"); - private JButton UpButton = new JButton(); - private JButton DownButton = new JButton(); - private JButton LeftButton = new JButton(); - private JButton RightButton = new JButton(); - public FormExcavator(String title, Dimension dimension) { - this.title = title; - this.dimension = dimension; - } - public void Init() { - setTitle(title); - setMinimumSize(dimension); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - Width = getWidth() - 15; - Height = getHeight() - 35; - - CreateButton.setName("CREATE"); - Icon iconUp = new ImageIcon("ProjectExcavator/res/up.png"); - UpButton.setIcon(iconUp); - UpButton.setName("UP"); - DownButton.setName("DOWN"); - Icon iconDown = new ImageIcon("ProjectExcavator/res/down.png"); - DownButton.setIcon(iconDown); - LeftButton.setName("LEFT"); - Icon iconLeft = new ImageIcon("ProjectExcavator/res/left.png"); - LeftButton.setIcon(iconLeft); - RightButton.setName("RIGHT"); - Icon iconRight = new ImageIcon("ProjectExcavator/res/right.png"); - RightButton.setIcon(iconRight); - - CreateButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - int StartPositionX = (int)(Math.random() * 90 + 10); - int StartPositionY = (int)(Math.random() * 90 + 10); - int speed = (int)(Math.random() * 300 + 100); - double weight = (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(); - canvasExcavator._drawingExcavator = new DrawingExcavator(); - canvasExcavator._drawingExcavator.Init(speed, weight, bodyColor, additionalColor, sheepPipes, fuelTank); - canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); - canvasExcavator._drawingExcavator.SetPosition( StartPositionX, StartPositionY); - canvasExcavator.repaint(); - } - }); - - ActionListener actionListener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent event) { - if (canvasExcavator._drawingExcavator == null) return; - boolean result = false; - switch ((((JButton)(event.getSource())).getName())) { - case "UP": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Up); - break; - case "DOWN": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Down); - break; - case "LEFT": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Left); - break; - case "RIGHT": - result = canvasExcavator._drawingExcavator.MoveTransport(DirectionType.Right); - break; - } - if (result) { - canvasExcavator.repaint(); - } - } - }; - UpButton.addActionListener(actionListener); - DownButton.addActionListener(actionListener); - LeftButton.addActionListener(actionListener); - RightButton.addActionListener(actionListener); - - setSize(dimension.width,dimension.height); - setLayout(null); - canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 90, 100, 35); - UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); - DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); - RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); - LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); - add(CreateButton); - add(UpButton); - add(DownButton); - add(RightButton); - add(LeftButton); - add(canvasExcavator); - setVisible(true); - //обработка события изменения размеров окна - addComponentListener(new ComponentAdapter() { - public void componentResized(ComponentEvent e) { - Width = getWidth() - 15; - Height = getHeight() - 35; - if (canvasExcavator._drawingExcavator != null) - canvasExcavator._drawingExcavator.SetPictureSize(Width, Height); - canvasExcavator.setBounds(0,0, getWidth(), getHeight()); - CreateButton.setBounds(10, getHeight() - 90, 100, 35); - UpButton.setBounds(getWidth() - 110, getHeight() - 135, 35, 35); - DownButton.setBounds(getWidth() - 110, getHeight() - 85, 35, 35); - RightButton.setBounds(getWidth() - 60, getHeight() - 85, 35, 35); - LeftButton.setBounds(getWidth() - 160, getHeight() - 85, 35, 35); - } - }); - } -} -- 2.25.1 From 1dd764d0d7a7af861ea44abc0aefadd617baa14c Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:40:18 +0400 Subject: [PATCH 23/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/Program.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/Program.java | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 ProjectExcavator/src/Program.java diff --git a/ProjectExcavator/src/Program.java b/ProjectExcavator/src/Program.java deleted file mode 100644 index a6a309a..0000000 --- a/ProjectExcavator/src/Program.java +++ /dev/null @@ -1,8 +0,0 @@ -import java.awt.*; - -public class Program { - public static void main(String[] args) { - FormExcavator form = new FormExcavator("Экскаватор", new Dimension(700, 500)); - form.Init(); - } -} \ No newline at end of file -- 2.25.1 From b019ddaf9a03a94950287b88c0bfa42b3a3267e7 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:40:21 +0400 Subject: [PATCH 24/25] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20'ProjectExcavator/src/RollersCount.java'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectExcavator/src/RollersCount.java | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 ProjectExcavator/src/RollersCount.java diff --git a/ProjectExcavator/src/RollersCount.java b/ProjectExcavator/src/RollersCount.java deleted file mode 100644 index c8603d5..0000000 --- a/ProjectExcavator/src/RollersCount.java +++ /dev/null @@ -1,12 +0,0 @@ -public enum RollersCount { - OneRoller(1), - TwoRollers(2), - ThreeRollers(3); - private int numOfRollers; - RollersCount(int numOfRollers){ - this.numOfRollers = numOfRollers; - } - public int getNumOfRollers(){ - return numOfRollers; - } -} -- 2.25.1 From 087acf10809d53ea1051d419699c48d76a90e7f4 Mon Sep 17 00:00:00 2001 From: insideq Date: Sat, 8 Jun 2024 11:43:21 +0400 Subject: [PATCH 25/25] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/FormAdditionalCollection.java | 61 ++++++++++++++++++------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/src/FormAdditionalCollection.java b/src/FormAdditionalCollection.java index 8dec13d..d5a1042 100644 --- a/src/FormAdditionalCollection.java +++ b/src/FormAdditionalCollection.java @@ -22,7 +22,8 @@ public class FormAdditionalCollection extends JFrame { private CanvasExcavator canvasExc = new CanvasExcavator(); private AdditionalCollections additionalCollection = null; private Random random = new Random(); - private JButton buttonGenerate = new JButton("Создать"); + private JButton buttonCreate = new JButton("Создать"); + private JButton buttonAdd = new JButton("Добавить"); private JList listEntity = new JList(); private JList listRollers = new JList(); public FormAdditionalCollection() { @@ -31,39 +32,49 @@ public class FormAdditionalCollection extends JFrame { additionalCollection = new AdditionalCollections(3, (Class) EntityBulldozer.class, (Class) IDifferentRollers.class); AddEntities(); AddRollers(); - buttonGenerate.addActionListener(new ActionListener() { + + buttonCreate.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - drawingBulldozer = additionalCollection.CreateAdditionalCollectionBulldozer(); drawingBulldozer.SetPictureSize(getWidth(), getHeight()); - drawingBulldozer.SetPosition(50,50); + drawingBulldozer.SetPosition(50, 50); canvasExc._drawingBulldozer = drawingBulldozer; canvasExc.repaint(); - DrawingBulldozer copyBulldozer; - if (drawingBulldozer instanceof DrawingExcavator) - copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - else - copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); - company._collection.Insert(copyBulldozer); - FormBulldozerCollection.canvasShow(); - + String[] data1 = new String[additionalCollection.CountEntities]; - for (int i = 0; i < additionalCollection.CountEntities; i++) { - EntityBulldozer entity = additionalCollection._collectionEntity[i]; - data1[i] = ToString(entity); - } - String[] data2 = new String[additionalCollection.CountRollers]; - for (int i = 0; i < additionalCollection.CountRollers; i++) { - IDifferentRollers rollers = additionalCollection._collectionRollers[i]; - data2[i] = ToString(rollers); - } - listEntity.setListData(data1); - listRollers.setListData(data2); + for (int i = 0; i < additionalCollection.CountEntities; i++) { + EntityBulldozer entity = additionalCollection._collectionEntity[i]; + data1[i] = ToString(entity); + } + String[] data2 = new String[additionalCollection.CountRollers]; + for (int i = 0; i < additionalCollection.CountRollers; i++) { + IDifferentRollers rollers = additionalCollection._collectionRollers[i]; + data2[i] = ToString(rollers); + } + listEntity.setListData(data1); + listRollers.setListData(data2); } }); - buttonGenerate.setBounds(450, 10, 100, 50); - add(buttonGenerate); + + buttonAdd.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + if (drawingBulldozer != null) { + DrawingBulldozer copyBulldozer; + if (drawingBulldozer instanceof DrawingExcavator) + copyBulldozer = new DrawingExcavator((EntityExcavator) drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + else + copyBulldozer = new DrawingBulldozer(drawingBulldozer.EntityBulldozer, drawingBulldozer.drawingRollers); + company._collection.Insert(copyBulldozer); + FormBulldozerCollection.canvasShow(); + } + } + }); + buttonCreate.setBounds(300, 10, 100, 50); + buttonAdd.setBounds(450, 10, 100, 50); + add(buttonCreate); + add(buttonAdd); listEntity.setBounds(10,200,300,60); listRollers.setBounds(320,200,300,60); add(listEntity); -- 2.25.1