PIbd-23_Minhasapov_R.H._Exc.../FormMap.java

119 lines
4.1 KiB
Java
Raw Normal View History

import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import java.awt.event.ItemEvent;
import java.util.Random;
public class FormMap extends JFrame {
private JPanel ContentPanel;
private JButton buttonCreate;
private JLabel speedLabel;
private JLabel weightLabel;
private JLabel colorLabel;
private JButton buttonLeft;
private JButton buttonDown;
private JButton buttonRight;
private JButton buttonUp;
private JPanel pictureBox;
private JButton buttonCreateModif;
private JComboBox<String> comboBoxMapSelector;
private AbstractMap _abstractMap;
private Image imageBuffer;
public FormMap(){
setTitle("Трактор");
setContentPane(ContentPanel);
setSize(800, 500);
_abstractMap = new SimpleMap();
// Обработка нажатия кнопки "Создать"
buttonCreate.addActionListener(e->{
Random rnd = new Random();
var _tracktor = new DrawningTracktor(
rnd.nextInt(100, 300),
rnd.nextInt(1000, 2000),
new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)),
rnd.nextInt(3,8)
);
setData(_tracktor);
});
// Обработка нажатия кнопки "Модификация"
buttonCreateModif.addActionListener(e->{
Random rnd = new Random();
var _tracktor = new DrawningTrackedVehicle(
rnd.nextInt(100, 300),
rnd.nextInt(1000, 2000),
new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)),
rnd.nextInt(3,8),
new Color(rnd.nextInt(0, 256), rnd.nextInt(0, 256), rnd.nextInt(0, 256)),
rnd.nextBoolean(),
rnd.nextBoolean()
);
setData(_tracktor);
});
buttonUp.addActionListener(e->{
if (_abstractMap != null){
imageBuffer = _abstractMap.MoveObject(Direction.Up);
repaint();
}
});
buttonLeft.addActionListener(e->{
if (_abstractMap != null){
imageBuffer = _abstractMap.MoveObject(Direction.Left);
repaint();
}
});
buttonDown.addActionListener(e->{
if (_abstractMap != null){
imageBuffer = _abstractMap.MoveObject(Direction.Down);
repaint();
}
});
buttonRight.addActionListener(e->{
if (_abstractMap != null){
imageBuffer = _abstractMap.MoveObject(Direction.Right);
repaint();
}
});
comboBoxMapSelector.addItemListener(e->{
if (e.getStateChange()== ItemEvent.SELECTED){
switch (e.getItem().toString()) {
case "Простая карта" -> _abstractMap = new SimpleMap();
case "Свалка карта" -> _abstractMap = new DumpMap();
}
repaint();
}
});
}
private void setData(DrawningTracktor _tracktor) {
Random rnd = new Random();
_tracktor.SetPosition(rnd.nextInt(10, 100), rnd.nextInt(10, 100), pictureBox.getWidth(), pictureBox.getHeight());
speedLabel.setText("Скорость: " + _tracktor.getTracktor().getSpeed());
weightLabel.setText("Вес: " + _tracktor.getTracktor().getWeight());
colorLabel.setText("Цвет: " + String.format("%h",_tracktor.getTracktor().getBodyColor()));
imageBuffer = _abstractMap.CreateMap(pictureBox.getWidth(), pictureBox.getHeight(), new DrawningObjectExcavator(_tracktor));
repaint();
}
@Override
public void paint(Graphics g){
super.paint(g);
Graphics2D g2d = (Graphics2D)pictureBox.getGraphics();
if (imageBuffer != null){
pictureBox.paintComponents(imageBuffer.getGraphics());
g2d.drawImage(imageBuffer,0,0,null);
}
}
}