-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAntSettings.java
151 lines (116 loc) · 4.6 KB
/
AntSettings.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class AntSettings {
private JPanel mainPanel;
private JLabel speedLabel;
private JLabel brightnessLabel;
private JSlider speedSlider;
private JSlider stepSpeedslider;
private JLabel xLabel;
private JFormattedTextField xField;
private JLabel yLabel;
private JFormattedTextField yField;
private JLabel directionLabel;
private JButton confirm;
private JComboBox direction;
private JCheckBox xrng;
private JCheckBox yrng;
private JCheckBox collides;
private JLabel title;
private JSlider rSlide;
private JPanel colorPrev;
private JSlider gSlide;
private JSlider bSlide;
private JFrame frame;
private ChangeListener sliderChangeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
colorPrev.setBackground(new Color(rSlide.getValue(), gSlide.getValue(), bSlide.getValue()));
}
};
private AntSettings() {
frame = new JFrame("Ant breeder");
frame.setContentPane(mainPanel);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
rSlide.addChangeListener(sliderChangeListener);
gSlide.addChangeListener(sliderChangeListener);
bSlide.addChangeListener(sliderChangeListener);
colorPrev.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
Color c = new Color((int) (Math.random() * 0x1000000)).brighter();
rSlide.setValue(c.getRed());
gSlide.setValue(c.getGreen());
bSlide.setValue(c.getBlue());
}
}
});
}
public AntSettings(Simulation simulation) {
this();
xrng.addActionListener(e -> xField.setEnabled(!xrng.isSelected()));
yrng.addActionListener(e -> yField.setEnabled(!yrng.isSelected()));
confirm.addActionListener(e -> {
Plateau p = simulation.getPlateau();
if (p.getFourmisCount() >= p.getFourmis().length) return;
Integer x = null, y = null;
if (xrng.isSelected()) x = (int) (Math.random() * p.getWidth());
else
try {
x = Integer.parseInt(xField.getText().replaceAll(" ", ""));
} catch (Exception ex) {
ex.printStackTrace();
return;
}
if (yrng.isSelected()) y = (int) (Math.random() * p.getHeight());
else
try {
y = Integer.parseInt(yField.getText().replaceAll(" ", ""));
} catch (Exception ex) {
ex.printStackTrace();
return;
}
System.out.println(x);
System.out.println(y);
Fourmi fourmi = new Fourmi(Math.abs(x) % p.getWidth(), Math.abs(y) % p.getHeight(), direction.getSelectedIndex(), new int[] { speedSlider.getValue(), stepSpeedslider.getValue() }, collides.isSelected());
fourmi.setColor(new Color(rSlide.getValue(), gSlide.getValue(), bSlide.getValue()));
p.addFourmi(fourmi);
});
}
public AntSettings(Fourmi fourmi) {
this();
if (fourmi == null) return;
frame.setTitle("Ant mutator");
confirm.setText("mutate it");
xrng.setEnabled(false);
yrng.setEnabled(false);
xField.setEnabled(false);
yField.setEnabled(false);
direction.setSelectedIndex(fourmi.getDirection());
speedSlider.setValue(fourmi.getVelocity());
stepSpeedslider.setValue(fourmi.getStepVelocity());
collides.setSelected(fourmi.doesCollide());
rSlide.setValue(fourmi.getColor().getRed());
gSlide.setValue(fourmi.getColor().getGreen());
bSlide.setValue(fourmi.getColor().getBlue());
confirm.addActionListener(e -> {
fourmi.setDirection(direction.getSelectedIndex());
fourmi.setVelocity(speedSlider.getValue());
fourmi.setStepVelocity(stepSpeedslider.getValue());
fourmi.setCollisions(collides.isSelected());
fourmi.setColor(new Color(rSlide.getValue(), gSlide.getValue(), bSlide.getValue()));
});
}
public void pop() {
frame.setVisible(true);
}
public void hide() {
frame.setVisible(false);
}
}