package Trolleybus; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; public class FormDifficult{ private JFrame frameMain; private JPanel panelMain; private JButton buttonCreate; private GenericDifficult generator; public FormDifficult() { InitializeComponent(); Random rand = new Random(); // макс. кол-во вариаций форм дверей/видов автобуса int maxCnt = rand.nextInt(5, 11); generator = new GenericDifficult<>(maxCnt, maxCnt, panelMain.getWidth(), panelMain.getHeight()); // добавление в массивы с дверьми/сущностями рандомные варианты for (int i = 0; i < maxCnt; i++) { generator.Add(createRandomEntityBus()); generator.Add(createRandomDoors()); } } private void InitializeComponent() { //Само окно frameMain = new JFrame("Усложнённая лаб 3"); frameMain.setSize(900, 500); frameMain.setLayout(new BorderLayout()); frameMain.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Панель, на которой отрисовывается panelMain = new JPanel(); panelMain.setLayout(null); buttonCreate = new JButton("Создать"); buttonCreate.setBounds(10,400,150,30); buttonCreate.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { createRandomDrawingBus(e); } }); frameMain.add(panelMain, BorderLayout.CENTER); panelMain.add(buttonCreate); frameMain.setVisible(true); } private void Draw(DrawingBus drawingBus){ if (drawingBus == null) { return; } Graphics g = panelMain.getGraphics(); // Очистка перед перерисовкой panelMain.paint(g); drawingBus.DrawTransport(g); } private void createRandomDrawingBus(ActionEvent e) { DrawingBus drawingBus = generator.CreateObject(); drawingBus.SetPosition(50, 50); Draw(drawingBus); } private EntityBus createRandomEntityBus() { Random rand = new Random(); Color color = new Color(rand.nextInt(0, 256), rand.nextInt(0, 256), rand.nextInt(0, 256)); EntityBus entityBus = new EntityBus(rand.nextInt(100, 300), rand.nextDouble(1000, 3000), color); return entityBus; } private IDrawingDoors createRandomDoors() { IDrawingDoors doors; Random rand = new Random(); int shape = rand.nextInt(1, 4); if (shape == 1) { doors = new DrawingDoors(); } else if (shape == 2) { doors = new DrawingOvalDoors(); } else { doors = new DrawingTriangleDoors(); } doors.SetCntOfDoors(rand.nextInt(3, 6)); return doors; } }