91 lines
3.1 KiB
Java
91 lines
3.1 KiB
Java
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<EntityBus, IDrawingDoors> 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;
|
||
}
|
||
} |