2023-11-04 14:33:13 +04:00
|
|
|
import javax.swing.*;
|
|
|
|
import java.awt.*;
|
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
|
|
class DrawRandomTanker extends JComponent {
|
|
|
|
private DrawTanker _drawTanker;
|
|
|
|
private final ComboGenericCollection<BaseTanker, IWheelDraw> GeneratorTanker;
|
|
|
|
|
|
|
|
public DrawRandomTanker() {
|
|
|
|
GeneratorTanker = new ComboGenericCollection<>(25, 1000, 600);
|
2023-11-15 14:06:06 +04:00
|
|
|
GeneratorTanker.Add(GenerateTanker());
|
|
|
|
GeneratorTanker.Add(GenerateWheel());
|
|
|
|
GeneratorTanker.Add(GenerateTanker());
|
|
|
|
GeneratorTanker.Add(GenerateWheel());
|
|
|
|
GeneratorTanker.Add(GenerateTanker());
|
|
|
|
GeneratorTanker.Add(GenerateWheel());
|
2023-11-04 14:33:13 +04:00
|
|
|
}
|
|
|
|
public void paintComponent(Graphics g)
|
|
|
|
{
|
|
|
|
super.paintComponent(g);
|
|
|
|
if (_drawTanker == null)
|
|
|
|
return;
|
|
|
|
_drawTanker.DrawTransport(g);
|
|
|
|
super.repaint();
|
|
|
|
}
|
2023-11-15 14:06:06 +04:00
|
|
|
private boolean IntToBool(int n) {return n % 2 == 0;}
|
|
|
|
public BaseTanker GenerateTanker()
|
|
|
|
{
|
|
|
|
Random random = new Random();
|
|
|
|
int mode = random.nextInt(0, 100) % 2;
|
|
|
|
if (mode == 0)
|
|
|
|
{
|
|
|
|
return new BaseTanker(random.nextInt(100, 200), random.nextInt(2000, 4000),
|
|
|
|
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)));
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return new GasolineTanker(random.nextInt(100, 200), random.nextInt(2000, 4000),
|
|
|
|
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
|
|
|
|
new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256)),
|
|
|
|
IntToBool(random.nextInt(0, 100)),IntToBool(random.nextInt(0, 100)), IntToBool(random.nextInt(0, 100)));
|
|
|
|
}
|
|
|
|
}
|
2023-11-04 14:33:13 +04:00
|
|
|
|
2023-11-15 14:06:06 +04:00
|
|
|
public IWheelDraw GenerateWheel()
|
|
|
|
{
|
|
|
|
Random random = new Random();
|
|
|
|
int mode = random.nextInt(0, 100) % 3;
|
|
|
|
IWheelDraw Wheels = new DrawWheelSquare();
|
|
|
|
switch (mode)
|
|
|
|
{
|
|
|
|
case 0 -> {Wheels = new DrawWheelCircle();}
|
|
|
|
case 1 -> {Wheels = new DrawWheelClassic();}
|
|
|
|
case 2 -> {Wheels = new DrawWheelSquare();}
|
|
|
|
}
|
|
|
|
int count = random.nextInt(0, 100);
|
|
|
|
Wheels.setWheelCount(count);
|
|
|
|
return Wheels;
|
|
|
|
}
|
2023-11-04 14:33:13 +04:00
|
|
|
protected void GenerateTanker_Click()
|
|
|
|
{
|
|
|
|
_drawTanker = GeneratorTanker.CreateDraw();
|
|
|
|
super.repaint();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class ComboFrame extends JFrame {
|
|
|
|
|
|
|
|
public ComboFrame()
|
|
|
|
{
|
|
|
|
initUI();
|
|
|
|
}
|
|
|
|
|
|
|
|
protected static final int Width = 1000;
|
|
|
|
protected static final int Height = 600;
|
|
|
|
DrawRandomTanker Tanker;
|
|
|
|
|
|
|
|
private void initUI()
|
|
|
|
{
|
|
|
|
setSize(Width, Height);
|
|
|
|
setTitle("TankGasoline");
|
|
|
|
setLocationRelativeTo(null);
|
|
|
|
setLayout(null);
|
|
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
setResizable(false);
|
|
|
|
Tanker = new DrawRandomTanker();
|
|
|
|
Tanker.setBounds(0, 0, Width, Height);
|
|
|
|
add(Tanker);
|
|
|
|
|
|
|
|
JButton UpdateButton = new JButton("Update tanker");
|
|
|
|
UpdateButton.setLayout(null);
|
|
|
|
UpdateButton.setBounds(Width-200, Height- 200, 100, 100);
|
|
|
|
add(UpdateButton);
|
|
|
|
UpdateButton.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
Tanker.GenerateTanker_Click();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|