231 lines
9.5 KiB
Java
231 lines
9.5 KiB
Java
package laba1Loco;
|
|
|
|
import java.awt.*;
|
|
import java.util.*;
|
|
import javax.swing.*;
|
|
import java.awt.event.*;
|
|
|
|
public class FormTrain{
|
|
private class Canvas extends JComponent{
|
|
public Canvas(){
|
|
}
|
|
public void paintComponent (Graphics g){
|
|
if (_drawingTrain == null){
|
|
return;
|
|
}
|
|
super.paintComponents (g) ;
|
|
Graphics2D g2d = (Graphics2D)g;
|
|
_drawingTrain.DrawTransport(g2d);
|
|
super.repaint();
|
|
}
|
|
}
|
|
public DrawingTrain SelectedTrain;
|
|
public boolean DialogResult = false;
|
|
public DrawingTrain _drawingTrain;
|
|
private AbstractStrategy abstractStrategy;
|
|
Canvas canv;
|
|
static int pictureBoxWidth = 980;
|
|
static int pictureBoxHeight = 580;
|
|
public JButton buttonSelectTrain;
|
|
public JFrame w;
|
|
|
|
public void Draw(){
|
|
canv.repaint();
|
|
}
|
|
|
|
public FormTrain(){
|
|
SelectedTrain = null;
|
|
w = new JFrame ("Loco");
|
|
JButton buttonCreate = new JButton("create");
|
|
JButton buttonCreateLocomotive = new JButton("create locomotive");
|
|
JButton buttonStrategysStep = new JButton("strategys step");
|
|
buttonSelectTrain = new JButton("select train");
|
|
|
|
JComboBox<String> comboBoxStrategy = new JComboBox<String>(
|
|
new String[]{
|
|
"к центру",
|
|
"к краю",
|
|
});
|
|
JButton up = new JButton();
|
|
up.setBorderPainted(false);
|
|
up.setFocusPainted(false);
|
|
up.setContentAreaFilled(false);
|
|
up.setName("up");
|
|
up.setIcon(new ImageIcon("D:\\Coffee\\PIbd-21_Kouvshinoff_T._A._WarmlyLocomotive._Harder\\laba1Loco\\images\\arowUp340x259.png"));
|
|
JButton down = new JButton();
|
|
down.setBorderPainted(false);
|
|
down.setFocusPainted(false);
|
|
down.setContentAreaFilled(false);
|
|
down.setName("down");
|
|
down.setIcon(new ImageIcon("D:\\Coffee\\PIbd-21_Kouvshinoff_T._A._WarmlyLocomotive._Harder\\laba1Loco\\images\\arowDown340x259.png"));
|
|
JButton left = new JButton();
|
|
left.setBorderPainted(false);
|
|
left.setFocusPainted(false);
|
|
left.setContentAreaFilled(false);
|
|
left.setName("left");
|
|
left.setIcon(new ImageIcon("D:\\Coffee\\PIbd-21_Kouvshinoff_T._A._WarmlyLocomotive._Harder\\laba1Loco\\images\\arowL340x259.png"));
|
|
JButton right = new JButton();
|
|
right.setBorderPainted(false);
|
|
right.setFocusPainted(false);
|
|
right.setContentAreaFilled(false);
|
|
right.setName("right");
|
|
right.setIcon(new ImageIcon("D:\\Coffee\\PIbd-21_Kouvshinoff_T._A._WarmlyLocomotive._Harder\\laba1Loco\\images\\arowR340x259.png"));
|
|
|
|
buttonStrategysStep.addActionListener(
|
|
new ActionListener() {
|
|
public void actionPerformed(ActionEvent e){
|
|
if (_drawingTrain == null)
|
|
{
|
|
return;
|
|
}
|
|
if (comboBoxStrategy.isEnabled())
|
|
{
|
|
switch (comboBoxStrategy.getSelectedIndex())
|
|
{
|
|
case 0:
|
|
abstractStrategy = new MoveToCenter();
|
|
break;
|
|
case 1:
|
|
abstractStrategy = new MoveToBorder();
|
|
break;
|
|
default:
|
|
abstractStrategy = null;
|
|
break;
|
|
};
|
|
if (abstractStrategy == null)
|
|
{
|
|
return;
|
|
}
|
|
abstractStrategy.SetData(new
|
|
DrawningObjectTrain(_drawingTrain), pictureBoxWidth,
|
|
pictureBoxHeight);
|
|
comboBoxStrategy.setEnabled(false);
|
|
}
|
|
if (abstractStrategy == null)
|
|
{
|
|
return;
|
|
}
|
|
abstractStrategy.MakeStep();
|
|
Draw();
|
|
if (abstractStrategy.GetStatus() == Status.Finish)
|
|
{
|
|
comboBoxStrategy.setEnabled(true);
|
|
abstractStrategy = null;
|
|
}
|
|
}
|
|
}
|
|
);
|
|
buttonCreateLocomotive.addActionListener(
|
|
new ActionListener() {
|
|
public void actionPerformed(ActionEvent e){
|
|
System.out.println(e.getActionCommand());
|
|
Random random = new Random();
|
|
Color color = new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256));
|
|
// Вызываем диалоговое окно выбора цвета
|
|
Color selectedColor = JColorChooser.showDialog(w, "Выберите цвет", Color.WHITE);
|
|
if (selectedColor != null)
|
|
{
|
|
color = selectedColor;
|
|
}
|
|
Color color2 = new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256));
|
|
// Вызываем диалоговое окно выбора цвета
|
|
selectedColor = JColorChooser.showDialog(w, "Выберите цвет", Color.WHITE);
|
|
if (selectedColor != null)
|
|
{
|
|
color2 = selectedColor;
|
|
}
|
|
_drawingTrain = new DrawingLoco(
|
|
random.nextInt(100, 300),
|
|
random.nextInt(1000, 3000),
|
|
color,
|
|
random.nextInt(2, 5),
|
|
color2,
|
|
random.nextInt(0, 2) == 1,
|
|
random.nextInt(0, 2) == 1,
|
|
random.nextInt(0, 2) == 1,
|
|
pictureBoxWidth,
|
|
pictureBoxHeight);
|
|
_drawingTrain.SetPosition(random.nextInt(10, 100), random.nextInt(10, 100));
|
|
Draw();
|
|
}
|
|
}
|
|
);
|
|
buttonCreate.addActionListener(
|
|
new ActionListener() {
|
|
public void actionPerformed(ActionEvent e){
|
|
System.out.println(e.getActionCommand());
|
|
Random random = new Random();
|
|
Color color = new Color(random.nextInt(0, 256), random.nextInt(0, 256), random.nextInt(0, 256));
|
|
// Вызываем диалоговое окно выбора цвета
|
|
Color selectedColor = JColorChooser.showDialog(w, "Выберите цвет", Color.WHITE);
|
|
if (selectedColor != null)
|
|
{
|
|
color = selectedColor;
|
|
}
|
|
_drawingTrain = new DrawingTrain(
|
|
random.nextInt(100, 300),
|
|
random.nextInt(1000, 3000),
|
|
color,
|
|
random.nextInt(2, 5),
|
|
pictureBoxWidth,
|
|
pictureBoxHeight);
|
|
_drawingTrain.SetPosition(random.nextInt(10, 100), random.nextInt(10, 100));
|
|
Draw();
|
|
}
|
|
}
|
|
);
|
|
ActionListener actioListener = new ActionListener() {
|
|
public void actionPerformed(ActionEvent e){
|
|
System.out.println(((JButton)(e.getSource())).getName());
|
|
if (_drawingTrain == null)
|
|
{
|
|
return;
|
|
}
|
|
switch(((JButton)(e.getSource())).getName()){
|
|
case "up":
|
|
_drawingTrain.MoveTransport(Direction.Up);
|
|
break;
|
|
case "down":
|
|
_drawingTrain.MoveTransport(Direction.Down);
|
|
break;
|
|
case "left":
|
|
_drawingTrain.MoveTransport(Direction.Left);
|
|
break;
|
|
case "right":
|
|
_drawingTrain.MoveTransport(Direction.Right);
|
|
break;
|
|
}
|
|
Draw();
|
|
}
|
|
};
|
|
up.addActionListener(actioListener);
|
|
down.addActionListener(actioListener);
|
|
left.addActionListener(actioListener);
|
|
right.addActionListener(actioListener);
|
|
|
|
w.setSize (1000, 600);
|
|
w.setLayout(null);
|
|
canv = new Canvas();
|
|
canv.setBounds(0, 0, pictureBoxWidth, pictureBoxHeight);
|
|
buttonCreate.setBounds(2, 540, 100, 20);
|
|
buttonCreateLocomotive.setBounds(105, 540, 150, 20);
|
|
up.setBounds(900, 480, 40, 40);
|
|
down.setBounds(900, 520, 40, 40);
|
|
left.setBounds(860, 520, 40, 40);
|
|
right.setBounds(940, 520, 40, 40);
|
|
comboBoxStrategy.setBounds(pictureBoxWidth - 150, 20, 150, 20);
|
|
buttonStrategysStep.setBounds(pictureBoxWidth - 150, 45, 150, 20);
|
|
buttonSelectTrain.setBounds(pictureBoxWidth/2, 540, 150, 20);
|
|
w.add(buttonSelectTrain);
|
|
w.add(canv);
|
|
w.add(buttonCreate);
|
|
w.add(buttonCreateLocomotive);
|
|
w.add(up);
|
|
w.add(down);
|
|
w.add(left);
|
|
w.add(right);
|
|
w.add(comboBoxStrategy);
|
|
w.add(buttonStrategysStep);
|
|
w.setVisible(true);
|
|
}
|
|
} |