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

119 lines
4.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
}