From d61b6cf6c52813c86531d5068597460e8a1a38d9 Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Fri, 28 Oct 2022 15:29:54 +0400 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F=20=D1=83=D1=81=D0=BB=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=BD=D0=B0=D1=8F=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D0=B0=20=E2=84=963?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/CreaterGeneric.java | 10 -- src/CreaterGenericField.java | 102 -------------------- src/DrawingAdvancedWarship.java | 8 +- src/DrawingDocks.java | 119 ----------------------- src/DrawingField.java | 3 - src/DrawingWarship.java | 7 +- src/FormCreater.java | 123 +++++++++++++++--------- src/FormMapWithSetWarships.java | 147 ++++++++++++++++++++++------- src/MapWithSetWarshipsGeneric.java | 19 ++-- 9 files changed, 213 insertions(+), 325 deletions(-) delete mode 100644 src/CreaterGenericField.java delete mode 100644 src/DrawingDocks.java diff --git a/src/CreaterGeneric.java b/src/CreaterGeneric.java index 96a3212..24b22dd 100644 --- a/src/CreaterGeneric.java +++ b/src/CreaterGeneric.java @@ -26,14 +26,4 @@ public class CreaterGeneric createrGeneric; - private DrawingObjectWarship _warship; - - public CreaterGenericField(FormCreater form){ - formCreater=form; - createrGeneric=new CreaterGeneric<>(40,40); - } - @Override - protected void paintComponent(Graphics g){ - super.paintComponent(g); - if(_warship!=null){ - _warship.DrawingObject(g); - } - } - public void Draw(Graphics g){ - if(_warship!=null){ - _warship.DrawingObject(g); - } - else return; - } - - public void BasicRadioButtonAction(int speed,int weight){ - Color color=JColorChooser.showDialog(formCreater,"Выберите цвет корпуса корабля",Color.WHITE); - if(speed==0 || weight==0 || color==null){ - return; - } - createrGeneric.AddWarship(new EntityWarship(speed,weight,color)); - Draw(formCreater.getGraphics()); - } - public void AdvancedRadioButtonAction(int speed,int weight, Boolean antenna, Boolean missile, Boolean helipad){ - Color color1=JColorChooser.showDialog(formCreater,"Выберите цвет корпуса корабля",Color.WHITE); - if(speed==0 || weight==0 || color1==null){ - return; - } - Color color2=JColorChooser.showDialog(formCreater,"Выберите цвет модификаций корабля",Color.WHITE); - if(color2==null){ - return; - } - createrGeneric.AddWarship(new EntityAdvancedWarship(speed,weight,color1,color2,helipad,antenna,missile)); - Draw(formCreater.getGraphics()); - } - public BlockCount TwoRadioButtonAction(){ - return BlockCount.TwoBlocks; - } - public BlockCount FourRadioButtonAction(){ - return BlockCount.FourBlocks; - } - public BlockCount SixRadioButtonAction(){ - return BlockCount.SixBlocks; - } - public void RectangleFormRadioButtonAction(BlockCount count){ - if(count==null){ - return; - } - IDrawingObjectBlock block=new DrawingBlock(count); - if(block==null) - return; - block.SetBlockCount(count.GetBlockCount()); - createrGeneric.AddBlock(block); - Draw(formCreater.getGraphics()); - } - public void RoundFormRadioButtonAction(BlockCount count){ - if(count==null){ - return; - } - IDrawingObjectBlock block=new DrawingRoundBlocks(count); - if(block==null) - return; - block.SetBlockCount(count.GetBlockCount()); - createrGeneric.AddBlock(block); - Draw(formCreater.getGraphics()); - } - public void TriangleFormRadioButtonAction(BlockCount count){ - if(count==null){ - return; - } - IDrawingObjectBlock block=new DrawingTriangleBlocks(count); - if(block==null) - return; - block.SetBlockCount(count.GetBlockCount()); - createrGeneric.AddBlock(block); - Draw(formCreater.getGraphics()); - } - public void ShowWarshipButtonAction(){ - Random rand=new Random(); - _warship=new DrawingObjectWarship(createrGeneric.NewWarshipCreate()); - _warship.SetObject(rand.nextInt(100),rand.nextInt(100),getWidth(),getHeight()); - Draw(formCreater.getGraphics()); - } - public void RemoveSelect(){ - _warship=null; - } - public DrawingObjectWarship GetWarship(){ - return _warship; - } -} diff --git a/src/DrawingAdvancedWarship.java b/src/DrawingAdvancedWarship.java index cdaddb7..bfe1257 100644 --- a/src/DrawingAdvancedWarship.java +++ b/src/DrawingAdvancedWarship.java @@ -8,10 +8,10 @@ public class DrawingAdvancedWarship extends DrawingWarship { Blocks= GetFormOfBlock(blockForm); Blocks.SetBlockCount(2*(int)(Math.random()*3+1)); } - - public DrawingAdvancedWarship(EntityWarship selectedWarship, IDrawingObjectBlock selectedBlock) { - super(selectedWarship,selectedBlock); - Warship=selectedWarship; + public DrawingAdvancedWarship(int speed, float weight, Color bodyColor, Color dopColor, boolean Helipad,boolean Antenna, boolean Missile,IDrawingObjectBlock blockForm) { + super(speed, weight, bodyColor, 120, 50); + Warship=new EntityAdvancedWarship(speed,weight,bodyColor,dopColor,Helipad,Antenna,Missile); + Blocks= blockForm; } @Override diff --git a/src/DrawingDocks.java b/src/DrawingDocks.java deleted file mode 100644 index 40d0619..0000000 --- a/src/DrawingDocks.java +++ /dev/null @@ -1,119 +0,0 @@ -import javax.swing.*; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.util.Random; - -public class DrawingDocks extends JPanel { - private final FormMapWithSetWarships Dock; - private FormCreater formCreater; - private MapWithSetWarshipsGeneric _mapWarshipsCollectionGeneric; - BufferedImage bufferedImage; - public DrawingDocks(FormMapWithSetWarships dock) { - Dock = dock; - formCreater=new FormCreater(Dock); - } - - @Override - protected void paintComponent(Graphics g) { - super.paintComponent(g); - Graphics2D g2=(Graphics2D)g; - g2.drawImage(bufferedImage,0,0,null); - } - public void DrawDock(Graphics g){ - Graphics2D g2=(Graphics2D)g; - g2.drawImage(bufferedImage,0,0,null); - } - - public void AddWarshipButtonAction(){ - if (_mapWarshipsCollectionGeneric == null) - { - return; - } - formCreater.Open(); - DrawingObjectWarship warship = formCreater.GetField().GetWarship(); - if (_mapWarshipsCollectionGeneric.plus(warship)>=0) - { - JOptionPane.showMessageDialog(Dock,"Объект добавлен"); - bufferedImage = _mapWarshipsCollectionGeneric.ShowSet(); - DrawDock(Dock.getGraphics()); - } - else - { - JOptionPane.showMessageDialog(Dock,"Не удалось добавить объект"); - } - } - public void DeleteWarshipButtonAction(String count, JPanel panel){ - if (count==""||_mapWarshipsCollectionGeneric==null) - { - return; - } - int result = JOptionPane.showConfirmDialog( - panel, - "Удалить объект?", - "Удаление", - JOptionPane.YES_NO_CANCEL_OPTION); - if (result == JOptionPane.NO_OPTION) - { - return; - } - int pos = Integer.parseInt(count); - if (_mapWarshipsCollectionGeneric.minus(pos) !=null) - { - JOptionPane.showMessageDialog(Dock,"Объект удален"); - bufferedImage = _mapWarshipsCollectionGeneric.ShowSet(); - } - else - { - JOptionPane.showMessageDialog(Dock,"Не удалось удалить объект"); - } - } - - public void ShowStorageButtonAction() - { - if (_mapWarshipsCollectionGeneric == null) - { - return; - } - bufferedImage = _mapWarshipsCollectionGeneric.ShowSet(); - DrawDock(Dock.getGraphics()); - } - - public void ShowOnMapButtonAction() - { - if (_mapWarshipsCollectionGeneric == null) - { - return; - } - bufferedImage = _mapWarshipsCollectionGeneric.ShowOnMap(); - DrawDock(Dock.getGraphics()); - } - - public void ComboBoxAction(String name,JPanel panel){ - AbstractMap map = null; - - switch (name) - { - case "Первая карта": - map = new SimpleMap(); - break; - case "Вторая карта": - map = new SecondMap(); - break; - } - if (map != null) - { - _mapWarshipsCollectionGeneric = new MapWithSetWarshipsGeneric( - panel.getWidth(), panel.getHeight(), map); - } - else - { - _mapWarshipsCollectionGeneric = null; - } - } - public void DirectionButtonAction(Direction side){ - if(_mapWarshipsCollectionGeneric != null){ - bufferedImage=_mapWarshipsCollectionGeneric.MoveObject(side); - } - DrawDock(Dock.getGraphics()); - } -} diff --git a/src/DrawingField.java b/src/DrawingField.java index bd83c48..35c9228 100644 --- a/src/DrawingField.java +++ b/src/DrawingField.java @@ -57,7 +57,4 @@ public class DrawingField extends JPanel{ return _warship; } - public void ResetSelected() { - _warship=null; - } } diff --git a/src/DrawingWarship.java b/src/DrawingWarship.java index 922c8b0..6542488 100644 --- a/src/DrawingWarship.java +++ b/src/DrawingWarship.java @@ -20,9 +20,10 @@ public class DrawingWarship { Blocks= GetFormOfBlock(blockForm); Blocks.SetBlockCount(2*(int)(Math.random()*3+1)); } - public DrawingWarship(EntityWarship selectedWarship, IDrawingObjectBlock selectedBlock) { - Warship=selectedWarship; - Blocks=selectedBlock; + public DrawingWarship(int speed, float weight, Color bodyColor, IDrawingObjectBlock blockForm) + { + Warship = new EntityWarship(speed, weight, bodyColor); + Blocks= blockForm; } public IDrawingObjectBlock GetFormOfBlock(int FormOfBlock){ diff --git a/src/FormCreater.java b/src/FormCreater.java index 8c6ad03..665ac62 100644 --- a/src/FormCreater.java +++ b/src/FormCreater.java @@ -1,7 +1,8 @@ import javax.swing.*; import java.awt.*; +import java.util.Random; -public class FormCreater extends JDialog { +public class FormCreater extends JDialog{ private JLabel SetSpeedLabel; private JPanel PropertiesPanel; private JTextField SpeedTextField; @@ -23,72 +24,106 @@ public class FormCreater extends JDialog { private JButton ShowWarshipButton; private JButton ChooseButton; private JPanel PictureBox; - CreaterGenericField field=new CreaterGenericField(this); BlockCount block=null; + IDrawingObjectBlock fblock=null; + private final CreaterGeneric createrGeneric=new CreaterGeneric<>(40,40); + private DrawingWarship _warship; + private DrawingWarship selectedWarship; - public FormCreater(JFrame frame){ - super(frame,"Создание корабля"); + public FormCreater(){ + setTitle("Военный корабль"); setContentPane(PictureBox); - setModal(true); + ShowWindow(); setSize(1200,700); setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); - ShowWindow(); + } + + @Override + public void paint(Graphics g) { + super.paint(g); + Graphics2D g2d = (Graphics2D) PictureBox.getGraphics(); + if (_warship != null) { + _warship.DrawTransport(g2d); + } } private void ShowWindow(){ - BasicRadioButton.addActionListener(e -> { - field.BasicRadioButtonAction(Integer.parseInt(SpeedTextField.getText()),Integer.parseInt(WeightTextField.getText())); - ReDraw(); - }); - AdvancedRadioButton.addActionListener(e -> { - field.AdvancedRadioButtonAction(Integer.parseInt(SpeedTextField.getText()),Integer.parseInt(WeightTextField.getText()),AntennaCheckBox.isSelected(),MissileCheckBox.isSelected(),HelipadCheckBox.isSelected()); - ReDraw(); - }); + TwoRadioButton.addActionListener(e -> { - block=field.TwoRadioButtonAction(); - ReDraw(); + block=BlockCount.TwoBlocks; }); FourRadioButton.addActionListener(e -> { - block=field.FourRadioButtonAction(); - ReDraw(); + block=BlockCount.FourBlocks; }); SixRadioButton.addActionListener(e -> { - block=field.SixRadioButtonAction(); - ReDraw(); + block=BlockCount.SixBlocks; }); + RectangleFormRadioButton.addActionListener(e -> { - field.RectangleFormRadioButtonAction(block); - ReDraw(); + if(block==null){ + return; + } + fblock=new DrawingBlock(block); + if(fblock==null) + return; + fblock.SetBlockCount(block.GetBlockCount()); + createrGeneric.AddBlock(fblock); }); + RoundFormRadioButton.addActionListener(e -> { - field.RoundFormRadioButtonAction(block); - ReDraw(); + if(block==null){ + return; + } + fblock=new DrawingRoundBlocks(block); + if(fblock==null) + return; + fblock.SetBlockCount(block.GetBlockCount()); + createrGeneric.AddBlock(fblock); }); + TriangleFormRadioButton.addActionListener(e -> { - field.TriangleFormRadioButtonAction(block); - ReDraw(); + if(block==null){ + return; + } + fblock=new DrawingTriangleBlocks(block); + if(fblock==null) + return; + fblock.SetBlockCount(block.GetBlockCount()); + createrGeneric.AddBlock(fblock); }); + ShowWarshipButton.addActionListener(e -> { - field.ShowWarshipButtonAction(); - ReDraw(); + Random rand=new Random(); + if (BasicRadioButton.isSelected()) { + Color color=JColorChooser.showDialog(this,"Выберите цвет корпуса корабля",Color.WHITE); + if(Integer.parseInt(SpeedTextField.getText())==0 || Integer.parseInt(WeightTextField.getText())==0 || color==null){ + return; + } + createrGeneric.AddWarship(new EntityWarship(Integer.parseInt(SpeedTextField.getText()),Integer.parseInt(WeightTextField.getText()),color)); + _warship=new DrawingWarship(Integer.parseInt(SpeedTextField.getText()),Integer.parseInt(WeightTextField.getText()),color, fblock); + } + if (AdvancedRadioButton.isSelected()){ + Color color1=JColorChooser.showDialog(this,"Выберите цвет корпуса корабля",Color.WHITE); + if(Integer.parseInt(SpeedTextField.getText())==0 || Integer.parseInt(WeightTextField.getText())==0 || color1==null){ + return; + } + Color color2=JColorChooser.showDialog(this,"Выберите цвет модификаций корабля",Color.WHITE); + if(color2==null){ + return; + } + createrGeneric.AddWarship(new EntityAdvancedWarship(Integer.parseInt(SpeedTextField.getText()),Integer.parseInt(WeightTextField.getText()), + color1,color2,HelipadCheckBox.isSelected(),AntennaCheckBox.isSelected(),MissileCheckBox.isSelected())); + _warship=new DrawingAdvancedWarship(Integer.parseInt(SpeedTextField.getText()),Integer.parseInt(WeightTextField.getText()),color1,color2, + HelipadCheckBox.isSelected(),AntennaCheckBox.isSelected(),MissileCheckBox.isSelected(),fblock); + } + _warship.SetPosition(rand.nextInt(100),rand.nextInt(100),getWidth(),getHeight()); + repaint(); }); ChooseButton.addActionListener(e -> { - Close(); + selectedWarship=_warship; + dispose(); }); } - public void Close(){ - setVisible(false); - } - public void Open(){ - field.RemoveSelect(); - setVisible(true); - } - public CreaterGenericField GetField(){ - return field; - } - public void ReDraw(){ - Graphics graphics = PictureBox.getGraphics(); - graphics.clearRect(0, 0, PictureBox.getWidth(), PictureBox.getHeight()); - PictureBox.paintComponents(graphics); - field.Draw(graphics); + public DrawingWarship getSelectedWarship() { + return selectedWarship; } } diff --git a/src/FormMapWithSetWarships.java b/src/FormMapWithSetWarships.java index 235ba5a..d8da024 100644 --- a/src/FormMapWithSetWarships.java +++ b/src/FormMapWithSetWarships.java @@ -1,13 +1,9 @@ - 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.awt.image.BufferedImage; public class FormMapWithSetWarships extends JFrame{ - DrawingDocks dock = new DrawingDocks(this); + private JComboBox СomboBoxSelectorMap; private JButton ButtonAddWarship; private JTextField TextBoxPosition; @@ -18,67 +14,152 @@ public class FormMapWithSetWarships extends JFrame{ private JButton ButtonUp; private JButton ButtonLeft; private JButton ButtonRight; - private JPanel GroupBoxTools; private JPanel PictureBox; private JPanel MainPanel; + private JPanel GroupBoxTools; + private MapWithSetWarshipsGeneric _mapWarshipsCollectionGeneric; + private Image bufferedImage; public FormMapWithSetWarships(){ - super("Военный корабль"); + setTitle("Военный корабль"); setContentPane(MainPanel); setResizable(false); - setSize(1000,700); + setSize(1000,685); ShowWindow(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } + @Override + public void paint(Graphics g) { + super.paint(g); + + if (bufferedImage != null) { + PictureBox.paintComponents(bufferedImage.getGraphics()); + PictureBox.getGraphics().drawImage(bufferedImage, 0, 0, null); + } + } + private void ShowWindow(){ ButtonShowOnMap.addActionListener(e -> { - dock.ShowOnMapButtonAction(); - ReDraw(); + if (_mapWarshipsCollectionGeneric == null) + { + return; + } + bufferedImage = _mapWarshipsCollectionGeneric.ShowOnMap(); + repaint(); }); ButtonShowStorage.addActionListener(e -> { - dock.ShowStorageButtonAction(); - ReDraw(); + if (_mapWarshipsCollectionGeneric == null) + { + return; + } + bufferedImage = _mapWarshipsCollectionGeneric.ShowSet(); + repaint(); }); ButtonAddWarship.addActionListener(e -> { - dock.AddWarshipButtonAction(); - ReDraw(); + if (_mapWarshipsCollectionGeneric == null) + { + return; + } + FormCreater dialog=new FormCreater(); + dialog.setSize(1200,700); + dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL); + dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + dialog.setVisible(true); + if (dialog.getSelectedWarship()!=null) { + DrawingObjectWarship warship = new DrawingObjectWarship(dialog.getSelectedWarship()); + + if (_mapWarshipsCollectionGeneric.plus(warship) >= 0) { + JOptionPane.showMessageDialog(this, "Объект добавлен", "Успех", JOptionPane.INFORMATION_MESSAGE); + bufferedImage = _mapWarshipsCollectionGeneric.ShowSet(); + repaint(); + } else { + JOptionPane.showMessageDialog(this, "Не удалось добавить объект", "Ошибка",JOptionPane.INFORMATION_MESSAGE); + } + } }); ButtonRemoveWarship.addActionListener(e -> { - dock.DeleteWarshipButtonAction(TextBoxPosition.getText(),PictureBox); - ReDraw(); + String txt=TextBoxPosition.getText(); + if (txt==null||_mapWarshipsCollectionGeneric==null||txt.isEmpty()) + { + return; + } + int result = JOptionPane.showConfirmDialog( + this, + "Удалить объект?", + "Удаление", + JOptionPane.YES_NO_CANCEL_OPTION); + if (result == JOptionPane.NO_OPTION) + { + return; + } + int pos = Integer.parseInt(txt); + if (_mapWarshipsCollectionGeneric.minus(pos) !=null) + { + JOptionPane.showMessageDialog(this,"Объект удален","Успех",JOptionPane.INFORMATION_MESSAGE); + bufferedImage = _mapWarshipsCollectionGeneric.ShowSet(); + repaint(); + } + else + { + JOptionPane.showMessageDialog(this,"Не удалось удалить объект","Ошибка",JOptionPane.INFORMATION_MESSAGE); + } }); СomboBoxSelectorMap.addActionListener(e -> { - dock.ComboBoxAction(СomboBoxSelectorMap.getSelectedItem().toString(),PictureBox); - ReDraw(); + AbstractMap map = null; + + switch (СomboBoxSelectorMap.getSelectedItem().toString()) + { + case "Первая карта": + map = new SimpleMap(); + break; + case "Вторая карта": + map = new SecondMap(); + break; + } + if (map != null) + { + _mapWarshipsCollectionGeneric = new MapWithSetWarshipsGeneric<>( + PictureBox.getWidth(), PictureBox.getHeight(), map); + } + else + { + _mapWarshipsCollectionGeneric = null; + } }); + ButtonUp.addActionListener(e -> { - dock.DirectionButtonAction(Direction.Up); - ReDraw(); + if (_mapWarshipsCollectionGeneric != null) { + bufferedImage = _mapWarshipsCollectionGeneric.MoveObject(Direction.Up); + repaint(); + } }); + ButtonDown.addActionListener(e -> { - dock.DirectionButtonAction(Direction.Down); - ReDraw(); + if (_mapWarshipsCollectionGeneric != null) { + bufferedImage = _mapWarshipsCollectionGeneric.MoveObject(Direction.Down); + repaint(); + } }); + ButtonRight.addActionListener(e -> { - dock.DirectionButtonAction(Direction.Right); - ReDraw(); + if (_mapWarshipsCollectionGeneric != null) { + bufferedImage = _mapWarshipsCollectionGeneric.MoveObject(Direction.Right); + repaint(); + } }); + ButtonLeft.addActionListener(e -> { - dock.DirectionButtonAction(Direction.Left); - ReDraw(); + if (_mapWarshipsCollectionGeneric != null) { + bufferedImage = _mapWarshipsCollectionGeneric.MoveObject(Direction.Left); + repaint(); + } }); } - public void ReDraw(){ - Graphics graphics = MainPanel.getGraphics(); - graphics.clearRect(0, 0, MainPanel.getWidth(), MainPanel.getHeight()); - MainPanel.paintComponents(graphics); - dock.DrawDock(graphics); - } } diff --git a/src/MapWithSetWarshipsGeneric.java b/src/MapWithSetWarshipsGeneric.java index d9069ed..dee5f53 100644 --- a/src/MapWithSetWarshipsGeneric.java +++ b/src/MapWithSetWarshipsGeneric.java @@ -29,16 +29,16 @@ public class MapWithSetWarshipsGeneric