lab 3
This commit is contained in:
parent
77371f66bf
commit
78234afc84
@ -1,7 +1,7 @@
|
|||||||
package AirplaneWithRadar;
|
package AirplaneWithRadar;
|
||||||
|
|
||||||
import AirplaneWithRadar.MovementStrategy.Movement;
|
|
||||||
import AirplaneWithRadar.MovementStrategy.*;
|
import AirplaneWithRadar.MovementStrategy.*;
|
||||||
|
import AirplaneWithRadar.MovementStrategy.Movement;
|
||||||
import AirplaneWithRadar.PaintObjects.PaintAirplane;
|
import AirplaneWithRadar.PaintObjects.PaintAirplane;
|
||||||
import AirplaneWithRadar.PaintObjects.PaintAirplaneWithRadar;
|
import AirplaneWithRadar.PaintObjects.PaintAirplaneWithRadar;
|
||||||
|
|
||||||
@ -14,6 +14,8 @@ import java.util.Random;
|
|||||||
public class AirplaneWithRadarForm extends JFrame {
|
public class AirplaneWithRadarForm extends JFrame {
|
||||||
private PaintAirplane PaintPlanes;
|
private PaintAirplane PaintPlanes;
|
||||||
private AbstractStrategy abstractStrategy;
|
private AbstractStrategy abstractStrategy;
|
||||||
|
public PaintAirplane SelectedAiplane;
|
||||||
|
public PaintAirplane GetSelectedAirplane() { return PaintPlanes; }
|
||||||
|
|
||||||
private void Draw()
|
private void Draw()
|
||||||
{
|
{
|
||||||
@ -33,6 +35,8 @@ public class AirplaneWithRadarForm extends JFrame {
|
|||||||
public AirplaneWithRadarForm()
|
public AirplaneWithRadarForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
abstractStrategy = null;
|
||||||
|
SelectedAiplane = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
@ -46,6 +50,7 @@ public class AirplaneWithRadarForm extends JFrame {
|
|||||||
ButtonUp = new JButton();
|
ButtonUp = new JButton();
|
||||||
MovementStrategyComboBox = new JComboBox<String>();
|
MovementStrategyComboBox = new JComboBox<String>();
|
||||||
ButtonPerformMove = new JButton();
|
ButtonPerformMove = new JButton();
|
||||||
|
SelectAiplaneButton = new JButton();
|
||||||
AirplanePictureBox.setBounds(0, 0, 884, 461);
|
AirplanePictureBox.setBounds(0, 0, 884, 461);
|
||||||
//
|
//
|
||||||
// ButtonCreateBomberBase
|
// ButtonCreateBomberBase
|
||||||
@ -124,6 +129,15 @@ public class AirplaneWithRadarForm extends JFrame {
|
|||||||
MovementStrategyComboBox.addItem("Перемещать в центр");
|
MovementStrategyComboBox.addItem("Перемещать в центр");
|
||||||
MovementStrategyComboBox.addItem("Перемещать вправо вниз");
|
MovementStrategyComboBox.addItem("Перемещать вправо вниз");
|
||||||
//
|
//
|
||||||
|
// SelectBomberButton
|
||||||
|
//
|
||||||
|
SelectAiplaneButton.setBounds(354, 407, 159, 42);
|
||||||
|
SelectAiplaneButton.setName("SelectBomberButton");
|
||||||
|
SelectAiplaneButton.setText("Выбрать бомбардировщик");
|
||||||
|
SelectAiplaneButton.setBackground(new Color(225, 225, 225));
|
||||||
|
SelectAiplaneButton.setFont(new Font("Segoe UI", Font.PLAIN, 11));
|
||||||
|
SelectAiplaneButton.setFocusable(false);
|
||||||
|
//
|
||||||
// AirplaneWithRadarForm
|
// AirplaneWithRadarForm
|
||||||
//
|
//
|
||||||
setTitle("Самолет с радаром");
|
setTitle("Самолет с радаром");
|
||||||
@ -141,6 +155,7 @@ public class AirplaneWithRadarForm extends JFrame {
|
|||||||
add(ButtonPerformMove);
|
add(ButtonPerformMove);
|
||||||
add(MovementStrategyComboBox);
|
add(MovementStrategyComboBox);
|
||||||
add(AirplanePictureBox);
|
add(AirplanePictureBox);
|
||||||
|
add(SelectAiplaneButton);
|
||||||
}
|
}
|
||||||
private JLabel AirplanePictureBox;
|
private JLabel AirplanePictureBox;
|
||||||
private JButton ButtonCreateAirplane;
|
private JButton ButtonCreateAirplane;
|
||||||
@ -151,6 +166,7 @@ public class AirplaneWithRadarForm extends JFrame {
|
|||||||
private JButton ButtonUp;
|
private JButton ButtonUp;
|
||||||
private JButton ButtonPerformMove;
|
private JButton ButtonPerformMove;
|
||||||
private JComboBox<String> MovementStrategyComboBox;
|
private JComboBox<String> MovementStrategyComboBox;
|
||||||
|
public JButton SelectAiplaneButton;
|
||||||
|
|
||||||
private void ButtonMove_Click(ActionEvent e)
|
private void ButtonMove_Click(ActionEvent e)
|
||||||
{
|
{
|
||||||
@ -184,11 +200,28 @@ public class AirplaneWithRadarForm extends JFrame {
|
|||||||
{
|
{
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
|
||||||
|
Color bodyColor = new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256));
|
||||||
|
Color additColor = new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256));
|
||||||
|
|
||||||
|
JColorChooser BodyColorPicker = new JColorChooser(Color.BLACK);
|
||||||
|
if (JOptionPane.showConfirmDialog(null, BodyColorPicker, "Выберите цвет", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)
|
||||||
|
== JOptionPane.OK_OPTION)
|
||||||
|
{
|
||||||
|
bodyColor = BodyColorPicker.getColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
JColorChooser AdditionalColorPicker = new JColorChooser(Color.BLACK);
|
||||||
|
if (JOptionPane.showConfirmDialog(null, AdditionalColorPicker, "Выберите цвет", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)
|
||||||
|
== JOptionPane.OK_OPTION)
|
||||||
|
{
|
||||||
|
additColor = AdditionalColorPicker.getColor();
|
||||||
|
}
|
||||||
|
|
||||||
PaintPlanes = new PaintAirplaneWithRadar(
|
PaintPlanes = new PaintAirplaneWithRadar(
|
||||||
random.nextInt(100, 300),
|
random.nextInt(100, 300),
|
||||||
random.nextInt(1000, 3000),
|
random.nextInt(1000, 3000),
|
||||||
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
|
bodyColor,
|
||||||
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
|
additColor,
|
||||||
true,
|
true,
|
||||||
true,
|
true,
|
||||||
AirplanePictureBox.getWidth(),
|
AirplanePictureBox.getWidth(),
|
||||||
@ -203,10 +236,19 @@ public class AirplaneWithRadarForm extends JFrame {
|
|||||||
{
|
{
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
|
||||||
|
Color bodyColor = new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256));
|
||||||
|
|
||||||
|
JColorChooser BodyColorPicker = new JColorChooser(Color.BLACK);
|
||||||
|
if (JOptionPane.showConfirmDialog(null, BodyColorPicker, "Выберите цвет", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)
|
||||||
|
== JOptionPane.OK_OPTION)
|
||||||
|
{
|
||||||
|
bodyColor = BodyColorPicker.getColor();
|
||||||
|
}
|
||||||
|
|
||||||
PaintPlanes = new PaintAirplane(
|
PaintPlanes = new PaintAirplane(
|
||||||
random.nextInt(100, 300),
|
random.nextInt(100, 300),
|
||||||
random.nextInt(1000, 3000),
|
random.nextInt(1000, 3000),
|
||||||
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
|
bodyColor,
|
||||||
AirplanePictureBox.getWidth(),
|
AirplanePictureBox.getWidth(),
|
||||||
AirplanePictureBox.getHeight()
|
AirplanePictureBox.getHeight()
|
||||||
);
|
);
|
||||||
|
146
src/AirplaneWithRadar/FormAirplaneCollection.java
Normal file
146
src/AirplaneWithRadar/FormAirplaneCollection.java
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
package AirplaneWithRadar;
|
||||||
|
|
||||||
|
import AirplaneWithRadar.Generics.AirplanesGenericCollection;
|
||||||
|
import AirplaneWithRadar.MovementStrategy.PaintObjectAirplane;
|
||||||
|
import AirplaneWithRadar.PaintObjects.PaintAirplane;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
public class FormAirplaneCollection extends JFrame {
|
||||||
|
private final AirplanesGenericCollection<PaintAirplane, PaintObjectAirplane> aiplanes;
|
||||||
|
|
||||||
|
public FormAirplaneCollection()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
aiplanes = new AirplanesGenericCollection<PaintAirplane, PaintObjectAirplane>(
|
||||||
|
CollectionPictureBox.getWidth(), CollectionPictureBox.getHeight()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ButtonAddEntity_Click(ActionEvent e)
|
||||||
|
{
|
||||||
|
AirplaneWithRadarForm Form = new AirplaneWithRadarForm();
|
||||||
|
|
||||||
|
Form.SelectAiplaneButton.addActionListener(e2 -> {
|
||||||
|
if (aiplanes.Add(Form.GetSelectedAirplane()) != -1)
|
||||||
|
{
|
||||||
|
JOptionPane.showMessageDialog(null, "Объект добавлен");
|
||||||
|
CollectionPictureBox.setIcon(new ImageIcon(aiplanes.ShowAirplanes()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
JOptionPane.showMessageDialog(null, "Не удалось добавить объект");
|
||||||
|
}
|
||||||
|
|
||||||
|
Form.dispose();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ButtonRemoveEntity_Click(ActionEvent e)
|
||||||
|
{
|
||||||
|
int Pos;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Pos = Integer.parseInt(NumberMaskedTextBox.getText());
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
JOptionPane.showMessageDialog(null, "Некорректный ввод");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (aiplanes.Remove(Pos) == true)
|
||||||
|
{
|
||||||
|
JOptionPane.showMessageDialog(null, "Объект удален");
|
||||||
|
CollectionPictureBox.setIcon(new ImageIcon(aiplanes.ShowAirplanes()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
JOptionPane.showMessageDialog(null, "Не удалось удалить объект");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ButtonRefreshCollection_Click(ActionEvent e)
|
||||||
|
{
|
||||||
|
CollectionPictureBox.setIcon(new ImageIcon(aiplanes.ShowAirplanes()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
CollectionPictureBox = new JLabel();
|
||||||
|
ToolGroupBox = new JPanel();
|
||||||
|
RefreshCollectionButton = new JButton();
|
||||||
|
RemoveBomberButton = new JButton();
|
||||||
|
NumberMaskedTextBox = new JTextField();
|
||||||
|
AddBomberButton = new JButton();
|
||||||
|
//
|
||||||
|
// CollectionPictureBox
|
||||||
|
//
|
||||||
|
CollectionPictureBox.setBounds(0, 0, 812, 603);
|
||||||
|
//
|
||||||
|
// ToolGroupBox
|
||||||
|
//
|
||||||
|
ToolGroupBox.add(RefreshCollectionButton);
|
||||||
|
ToolGroupBox.add(RemoveBomberButton);
|
||||||
|
ToolGroupBox.add(NumberMaskedTextBox);
|
||||||
|
ToolGroupBox.add(AddBomberButton);
|
||||||
|
ToolGroupBox.setBounds(818, 12, 210, 545);
|
||||||
|
ToolGroupBox.setName("ToolGroupBox");
|
||||||
|
ToolGroupBox.setBorder(BorderFactory.createTitledBorder("Инструменты"));
|
||||||
|
ToolGroupBox.setLayout(null);
|
||||||
|
//
|
||||||
|
// RefreshCollectionButton
|
||||||
|
//
|
||||||
|
RefreshCollectionButton.setBounds(10, 190, 190, 30);
|
||||||
|
RefreshCollectionButton.setName("RefreshCollectionButton");
|
||||||
|
RefreshCollectionButton.setText("Обновить коллекцию");
|
||||||
|
RefreshCollectionButton.setBackground(new Color(225, 225, 225));
|
||||||
|
RefreshCollectionButton.setFont(new Font("Segoe UI", Font.PLAIN, 11));
|
||||||
|
RefreshCollectionButton.setFocusable(false);
|
||||||
|
RefreshCollectionButton.addActionListener(e -> ButtonRefreshCollection_Click(e));
|
||||||
|
//
|
||||||
|
// RemoveBomberButton
|
||||||
|
//
|
||||||
|
RemoveBomberButton.setBounds(10, 141, 190, 30);
|
||||||
|
RemoveBomberButton.setName("RemoveBomberButton");
|
||||||
|
RemoveBomberButton.setText("Удалить бомбардировщик");
|
||||||
|
RemoveBomberButton.setBackground(new Color(225, 225, 225));
|
||||||
|
RemoveBomberButton.setFont(new Font("Segoe UI", Font.PLAIN, 11));
|
||||||
|
RemoveBomberButton.setFocusable(false);
|
||||||
|
RemoveBomberButton.addActionListener(e -> ButtonRemoveEntity_Click(e));
|
||||||
|
//
|
||||||
|
// NumberMaskedTextBox
|
||||||
|
//
|
||||||
|
NumberMaskedTextBox.setBounds(10, 102, 190, 23);
|
||||||
|
NumberMaskedTextBox.setName("NumberMaskedTextBox");
|
||||||
|
//
|
||||||
|
// AddBomberButton
|
||||||
|
//
|
||||||
|
AddBomberButton.setBounds(10, 32, 190, 43);
|
||||||
|
AddBomberButton.setName("AddBomberButton");
|
||||||
|
AddBomberButton.setText("Добавить бомбардировщик");
|
||||||
|
AddBomberButton.setBackground(new Color(225, 225, 225));
|
||||||
|
AddBomberButton.setFont(new Font("Segoe UI", Font.PLAIN, 11));
|
||||||
|
AddBomberButton.setFocusable(false);
|
||||||
|
AddBomberButton.addActionListener(e -> ButtonAddEntity_Click(e));
|
||||||
|
//
|
||||||
|
// FormEntityCollection
|
||||||
|
//
|
||||||
|
setTitle("Набор самолётов");
|
||||||
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
setSize(1050, 603);
|
||||||
|
setLayout(null);
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
setVisible(true);
|
||||||
|
add(ToolGroupBox);
|
||||||
|
add(CollectionPictureBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
private JLabel CollectionPictureBox;
|
||||||
|
private JPanel ToolGroupBox;
|
||||||
|
private JButton RefreshCollectionButton;
|
||||||
|
private JButton RemoveBomberButton;
|
||||||
|
private JTextField NumberMaskedTextBox;
|
||||||
|
private JButton AddBomberButton;
|
||||||
|
}
|
113
src/AirplaneWithRadar/FormWithArrays.java
Normal file
113
src/AirplaneWithRadar/FormWithArrays.java
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
package AirplaneWithRadar;
|
||||||
|
|
||||||
|
import AirplaneWithRadar.Entities.AirplaneEntity;
|
||||||
|
import AirplaneWithRadar.Generics.ArraysGeneric;
|
||||||
|
import AirplaneWithRadar.PaintObjects.*;
|
||||||
|
import AirplaneWithRadar.PaintObjects.IPaintIlluminators;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class FormWithArrays extends JFrame {
|
||||||
|
private ArraysGeneric<AirplaneEntity, IPaintIlluminators> arrays;
|
||||||
|
|
||||||
|
public FormWithArrays()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
Random random = new Random();
|
||||||
|
int MaxCount = random.nextInt(2, 4);
|
||||||
|
|
||||||
|
arrays = new ArraysGeneric<>(MaxCount, MaxCount, PictureBox.getWidth(), PictureBox.getHeight());
|
||||||
|
|
||||||
|
for (int i = 0; i < MaxCount; i++)
|
||||||
|
{
|
||||||
|
arrays.Add(new AirplaneEntity(
|
||||||
|
random.nextInt(100, 300),
|
||||||
|
random.nextInt(1000, 3000),
|
||||||
|
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256))
|
||||||
|
));
|
||||||
|
|
||||||
|
IPaintIlluminators paintIllums = null;
|
||||||
|
|
||||||
|
int paintIllumsVariant = random.nextInt(1, 4);
|
||||||
|
switch (paintIllumsVariant) {
|
||||||
|
case 1:
|
||||||
|
paintIllums = new PaintIlluminators();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
paintIllums = new PaintRectangleIlluminators();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
paintIllums = new PaintRoundedRectIlluminator();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
paintIllums.setCount(random.nextInt(6, 35));
|
||||||
|
arrays.Add(paintIllums);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Draw(PaintAirplane PaintPlanes)
|
||||||
|
{
|
||||||
|
BufferedImage bmp = new BufferedImage(
|
||||||
|
PictureBox.getWidth(),
|
||||||
|
PictureBox.getHeight(),
|
||||||
|
BufferedImage.TYPE_INT_ARGB
|
||||||
|
);
|
||||||
|
Graphics2D g = bmp.createGraphics();
|
||||||
|
PaintPlanes.DrawTransport(g);
|
||||||
|
|
||||||
|
PictureBox.setIcon(new ImageIcon(bmp));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonCreate_Click(ActionEvent e)
|
||||||
|
{
|
||||||
|
PaintAirplane PaintPlanes = arrays.CreateObject();
|
||||||
|
|
||||||
|
PaintPlanes.SetPosition(100, 100);
|
||||||
|
Draw(PaintPlanes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
PictureBox = new JLabel();
|
||||||
|
ButtonCreate = new JButton();
|
||||||
|
//
|
||||||
|
// ButtonCreate
|
||||||
|
//
|
||||||
|
ButtonCreate.setName("ButtonCreate");
|
||||||
|
ButtonCreate.setBounds(12, 419, 80, 30);
|
||||||
|
ButtonCreate.setText("Создать");
|
||||||
|
ButtonCreate.setBackground(new Color(225, 225, 225));
|
||||||
|
ButtonCreate.setFont(new Font("Segoe UI", Font.PLAIN, 11));
|
||||||
|
ButtonCreate.setFocusable(false);
|
||||||
|
ButtonCreate.addActionListener(e -> ButtonCreate_Click(e));
|
||||||
|
//
|
||||||
|
// PictureBox
|
||||||
|
//
|
||||||
|
PictureBox.setBounds(0, 0, 884, 461);
|
||||||
|
//
|
||||||
|
// BomberForm
|
||||||
|
//
|
||||||
|
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||||
|
setTitle("Усложнение");
|
||||||
|
setSize(900, 500);
|
||||||
|
setLayout(null);
|
||||||
|
setLocationRelativeTo(null);
|
||||||
|
setVisible(true);
|
||||||
|
add(PictureBox);
|
||||||
|
add(ButtonCreate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private JButton ButtonCreate;
|
||||||
|
private JLabel PictureBox;
|
||||||
|
}
|
@ -0,0 +1,95 @@
|
|||||||
|
package AirplaneWithRadar.Generics;
|
||||||
|
|
||||||
|
import AirplaneWithRadar.PaintObjects.PaintAirplane;
|
||||||
|
import AirplaneWithRadar.MovementStrategy.IMoveableObject;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.image.BufferedImage;
|
||||||
|
|
||||||
|
public class AirplanesGenericCollection<T extends PaintAirplane, U extends IMoveableObject> {
|
||||||
|
private int pictWidth;
|
||||||
|
private int pictHeight;
|
||||||
|
private final int placeSizeWidth = 200;
|
||||||
|
private final int placeSizeHeight = 70;
|
||||||
|
private SetGeneric<T> collection;
|
||||||
|
|
||||||
|
public AirplanesGenericCollection(int picWidth, int picHeight)
|
||||||
|
{
|
||||||
|
int width = picWidth / placeSizeWidth;
|
||||||
|
int height = picHeight / placeSizeHeight;
|
||||||
|
pictWidth = picWidth;
|
||||||
|
pictHeight = picHeight;
|
||||||
|
collection = new SetGeneric<T>(width * height);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Add(T obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return collection.Insert(obj);
|
||||||
|
}
|
||||||
|
public boolean Remove(int pos)
|
||||||
|
{
|
||||||
|
T obj = collection.Get(pos);
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return collection.Remove(pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
public U GetU(int pos)
|
||||||
|
{
|
||||||
|
return (U)collection.Get(pos).GetMoveableObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BufferedImage ShowAirplanes()
|
||||||
|
{
|
||||||
|
BufferedImage bmp = new BufferedImage(pictWidth, pictHeight, BufferedImage.TYPE_INT_ARGB);
|
||||||
|
Graphics2D gr = bmp.createGraphics();
|
||||||
|
DrawBackground(gr);
|
||||||
|
DrawObjects(gr);
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawBackground(Graphics2D g)
|
||||||
|
{
|
||||||
|
g.setColor(Color.BLACK);
|
||||||
|
g.setStroke(new BasicStroke(3));
|
||||||
|
for (int i = 0; i < pictWidth / placeSizeWidth; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < pictHeight / placeSizeHeight + 1; ++j)
|
||||||
|
{
|
||||||
|
g.drawLine(i * placeSizeWidth, j * placeSizeHeight, i * placeSizeWidth + placeSizeWidth / 2, j * placeSizeHeight);
|
||||||
|
}
|
||||||
|
g.drawLine(i * placeSizeWidth, 0, i * placeSizeWidth, pictHeight / placeSizeHeight * placeSizeHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void DrawObjects(Graphics g)
|
||||||
|
{
|
||||||
|
int width = pictWidth / placeSizeWidth;
|
||||||
|
int height = pictHeight / placeSizeHeight;
|
||||||
|
|
||||||
|
int j = 3;
|
||||||
|
int k = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < collection.Count(); i++)
|
||||||
|
{
|
||||||
|
PaintAirplane airplane = collection.Get(i);
|
||||||
|
if (j < 0)
|
||||||
|
{
|
||||||
|
j += 4;
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
if (airplane != null)
|
||||||
|
{
|
||||||
|
airplane.SetPosition(placeSizeWidth * j, placeSizeHeight * k);
|
||||||
|
airplane.DrawTransport(g);
|
||||||
|
}
|
||||||
|
j--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
66
src/AirplaneWithRadar/Generics/ArraysGeneric.java
Normal file
66
src/AirplaneWithRadar/Generics/ArraysGeneric.java
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
package AirplaneWithRadar.Generics;
|
||||||
|
|
||||||
|
import AirplaneWithRadar.Entities.AirplaneEntity;
|
||||||
|
import AirplaneWithRadar.PaintObjects.IPaintIlluminators;
|
||||||
|
import AirplaneWithRadar.PaintObjects.PaintAirplane;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Random;
|
||||||
|
public class ArraysGeneric<T extends AirplaneEntity, U extends IPaintIlluminators> {
|
||||||
|
private ArrayList<T> airplanes;
|
||||||
|
private ArrayList<U> paintIllums;
|
||||||
|
|
||||||
|
private int airplanesCount = 0;
|
||||||
|
private int paintIllumsCount = 0;
|
||||||
|
|
||||||
|
private final int aiplanesMaxCount;
|
||||||
|
private final int paintIllumsMaxCount;
|
||||||
|
|
||||||
|
private final int pictWidth;
|
||||||
|
private final int pictHeight;
|
||||||
|
|
||||||
|
public ArraysGeneric(int AiplanesMaxCount, int PaintIllumsMaxCount, int Width, int Height)
|
||||||
|
{
|
||||||
|
aiplanesMaxCount = AiplanesMaxCount;
|
||||||
|
paintIllumsMaxCount = PaintIllumsMaxCount;
|
||||||
|
|
||||||
|
airplanes = new ArrayList<T>(AiplanesMaxCount);
|
||||||
|
paintIllums = new ArrayList<U>(PaintIllumsMaxCount);
|
||||||
|
|
||||||
|
pictWidth = Width;
|
||||||
|
pictHeight = Height;
|
||||||
|
}
|
||||||
|
public boolean Add(T Entity)
|
||||||
|
{
|
||||||
|
if (Entity == null || airplanesCount >= aiplanesMaxCount)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
airplanes.add(airplanesCount++, Entity);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean Add(U Renderer)
|
||||||
|
{
|
||||||
|
if (Renderer == null || paintIllumsCount >= paintIllumsMaxCount)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
paintIllums.add(paintIllumsCount++, Renderer);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PaintAirplane CreateObject()
|
||||||
|
{
|
||||||
|
if (airplanesCount == 0 || paintIllumsCount == 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
Random Random = new Random();
|
||||||
|
|
||||||
|
int airplaneIndex = Random.nextInt(airplanesCount);
|
||||||
|
int paintIllumsIndex = Random.nextInt(paintIllumsCount);
|
||||||
|
|
||||||
|
T airplane = airplanes.get(airplaneIndex);
|
||||||
|
U paintIllums = this.paintIllums.get(paintIllumsIndex);
|
||||||
|
|
||||||
|
return new PaintAirplane(airplane, paintIllums, pictWidth, pictHeight);
|
||||||
|
}
|
||||||
|
}
|
62
src/AirplaneWithRadar/Generics/SetGeneric.java
Normal file
62
src/AirplaneWithRadar/Generics/SetGeneric.java
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package AirplaneWithRadar.Generics;
|
||||||
|
|
||||||
|
public class SetGeneric<T extends Object> {
|
||||||
|
private final T[] places;
|
||||||
|
|
||||||
|
public int Count() { return places.length; }
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public SetGeneric(int Count)
|
||||||
|
{
|
||||||
|
places = (T[]) new Object[Count];
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Insert(T Entity)
|
||||||
|
{
|
||||||
|
return Insert(Entity, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Insert(T Entity, int Pos)
|
||||||
|
{
|
||||||
|
if (Pos >= Count() || Pos < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (places[Pos] == null)
|
||||||
|
{
|
||||||
|
places[Pos] = Entity;
|
||||||
|
return Pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
int EmptyPos = -1;
|
||||||
|
|
||||||
|
for (int i = Pos + 1; i < Count(); i++)
|
||||||
|
if (places[i] == null)
|
||||||
|
{
|
||||||
|
EmptyPos = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EmptyPos == -1)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
places[EmptyPos] = Entity;
|
||||||
|
return EmptyPos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean Remove(int Pos)
|
||||||
|
{
|
||||||
|
if (Pos >= Count())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
places[Pos] = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T Get(int Pos)
|
||||||
|
{
|
||||||
|
if (Pos >= Count())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return places[Pos];
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,11 @@
|
|||||||
package AirplaneWithRadar;
|
package AirplaneWithRadar;
|
||||||
|
|
||||||
|
import AirplaneWithRadar.PaintObjects.IPaintIlluminators;
|
||||||
|
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Color;
|
import java.awt.Color;
|
||||||
|
|
||||||
public class PaintIlluminators {
|
public class PaintIlluminators implements IPaintIlluminators {
|
||||||
private IlluminatorsCount count;
|
private IlluminatorsCount count;
|
||||||
public void setCount(int count) {
|
public void setCount(int count) {
|
||||||
if (count <= 10)
|
if (count <= 10)
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
package AirplaneWithRadar.PaintObjects;
|
package AirplaneWithRadar.PaintObjects;
|
||||||
|
|
||||||
import AirplaneWithRadar.Entities.AirplaneEntity;
|
import AirplaneWithRadar.Entities.AirplaneEntity;
|
||||||
|
import AirplaneWithRadar.MovementStrategy.IMoveableObject;
|
||||||
import AirplaneWithRadar.MovementStrategy.Movement;
|
import AirplaneWithRadar.MovementStrategy.Movement;
|
||||||
|
import AirplaneWithRadar.MovementStrategy.PaintObjectAirplane;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@ -10,7 +12,7 @@ public class PaintAirplane {
|
|||||||
public AirplaneEntity getAirplaneEntity() {
|
public AirplaneEntity getAirplaneEntity() {
|
||||||
return airplaneEntity;
|
return airplaneEntity;
|
||||||
}
|
}
|
||||||
|
public IMoveableObject GetMoveableObject() {return new PaintObjectAirplane(this);}
|
||||||
private void setAirplaneEntity(AirplaneEntity airplaneEntity) {
|
private void setAirplaneEntity(AirplaneEntity airplaneEntity) {
|
||||||
this.airplaneEntity = airplaneEntity;
|
this.airplaneEntity = airplaneEntity;
|
||||||
}
|
}
|
||||||
@ -65,20 +67,24 @@ public class PaintAirplane {
|
|||||||
|
|
||||||
Random Random = new Random();
|
Random Random = new Random();
|
||||||
|
|
||||||
int paintIlluminatorsVariant = Random.nextInt(1, 4);
|
|
||||||
switch (paintIlluminatorsVariant) {
|
int EngineRendererVariant = Random.nextInt(1, 4);
|
||||||
|
switch (EngineRendererVariant) {
|
||||||
case 1:
|
case 1:
|
||||||
paintIlluminators = new PaintIlluminators();
|
paintIlluminators = new PaintIlluminators();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
paintIlluminators = new PaintRectangleIlluminators();
|
paintIlluminators = new PaintRectangleIlluminators();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
paintIlluminators = new PaintRoundedRectIlluminator();
|
paintIlluminators = new PaintRoundedRectIlluminator();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
paintIlluminators.setCount(Random.nextInt(6, 35));
|
paintIlluminators.setCount(Random.nextInt(6, 35));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,6 +103,21 @@ public class PaintAirplane {
|
|||||||
Random rnd = new Random();
|
Random rnd = new Random();
|
||||||
paintIlluminators.setCount(rnd.nextInt(6, 35));
|
paintIlluminators.setCount(rnd.nextInt(6, 35));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PaintAirplane(AirplaneEntity airplane, IPaintIlluminators paintIllums, int Width, int Height)
|
||||||
|
{
|
||||||
|
if (Width < planeWidth || Height < planeHeight)
|
||||||
|
return;
|
||||||
|
|
||||||
|
startPosX = 0;
|
||||||
|
startPosY = 0;
|
||||||
|
|
||||||
|
pictWidth = Width;
|
||||||
|
pictHeight = Height;
|
||||||
|
|
||||||
|
this.airplaneEntity = airplane;
|
||||||
|
this.paintIlluminators = paintIllums;
|
||||||
|
}
|
||||||
public void SetPosition(int x, int y) {
|
public void SetPosition(int x, int y) {
|
||||||
if (x + planeWidth < pictWidth && y + planeHeight < pictHeight) {
|
if (x + planeWidth < pictWidth && y + planeHeight < pictHeight) {
|
||||||
startPosX = x;
|
startPosX = x;
|
||||||
|
@ -36,4 +36,10 @@ public class PaintAirplaneWithRadar extends PaintAirplane {
|
|||||||
g.fillRoundRect(startPosX, startPosY + planeHeight - 2*planeHeight / 5, planeWidth / 5, planeHeight / 6, 5, 5);
|
g.fillRoundRect(startPosX, startPosY + planeHeight - 2*planeHeight / 5, planeWidth / 5, planeHeight / 6, 5, 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
private void DrawTriangle(Graphics g, int x1, int y1, int x2, int y2, int x3, int y3)
|
||||||
|
{
|
||||||
|
g.drawLine(x1, y1, x2, y2);
|
||||||
|
g.drawLine(x2, y2, x3, y3);
|
||||||
|
g.drawLine(x3, y3, x1, y1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,8 @@ public class PaintIlluminators implements IPaintIlluminators{
|
|||||||
int x = startPosX;
|
int x = startPosX;
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
g.fillOval(x + 34, startPosY + 30, 7, 7);
|
g.fillOval(x + 34, startPosY + 30, 5, 5);
|
||||||
x += 8;
|
x += 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == IlluminatorsCount.Ten) return;
|
if (count == IlluminatorsCount.Ten) return;
|
||||||
@ -31,8 +31,8 @@ public class PaintIlluminators implements IPaintIlluminators{
|
|||||||
x = startPosX;
|
x = startPosX;
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
g.fillOval(x + 34, startPosY + 38, 7, 7);
|
g.fillOval(x + 34, startPosY + 38, 5, 5);
|
||||||
x += 8;
|
x += 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == IlluminatorsCount.Twenty) return;
|
if (count == IlluminatorsCount.Twenty) return;
|
||||||
@ -40,8 +40,8 @@ public class PaintIlluminators implements IPaintIlluminators{
|
|||||||
x = startPosX;
|
x = startPosX;
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
g.fillOval(x + 34, startPosY + 46, 7, 7);
|
g.fillOval(x + 34, startPosY + 46, 5, 5);
|
||||||
x += 8;
|
x += 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,8 +21,8 @@ public class PaintRoundedRectIlluminator implements IPaintIlluminators {
|
|||||||
int x = startPosX;
|
int x = startPosX;
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
g.fillRoundRect(x + 34, startPosY + 30, 6, 6,2,2);
|
g.fillRoundRect(x + 34, startPosY + 30, 5, 5,3,3);
|
||||||
x += 8;
|
x += 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == IlluminatorsCount.Ten) return;
|
if (count == IlluminatorsCount.Ten) return;
|
||||||
@ -30,8 +30,8 @@ public class PaintRoundedRectIlluminator implements IPaintIlluminators {
|
|||||||
x = startPosX;
|
x = startPosX;
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
g.fillRoundRect(x + 34, startPosY + 38, 6, 6,2,2);
|
g.fillRoundRect(x + 34, startPosY + 38, 5, 5,3,3);
|
||||||
x += 8;
|
x += 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == IlluminatorsCount.Twenty) return;
|
if (count == IlluminatorsCount.Twenty) return;
|
||||||
@ -39,8 +39,8 @@ public class PaintRoundedRectIlluminator implements IPaintIlluminators {
|
|||||||
x = startPosX;
|
x = startPosX;
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
g.fillRoundRect(x + 34, startPosY + 46, 6, 6,2,2);
|
g.fillRoundRect(x + 34, startPosY + 46, 5, 5,3,3);
|
||||||
x += 8;
|
x += 7;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import AirplaneWithRadar.AirplaneWithRadarForm;
|
import AirplaneWithRadar.FormWithArrays;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
new AirplaneWithRadarForm();
|
new FormWithArrays();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user