2 * Copyright (c) 2002 Erik Rasmussen - All Rights Reserverd
4 package appletbots
.tag
;
6 import appletbots
.World
;
7 import appletbots
.Applet
;
10 import javax
.swing
.event
.ChangeEvent
;
11 import javax
.swing
.event
.ChangeListener
;
12 import java
.util
.Hashtable
;
15 * An applet to run a TagAgent simulation
17 * @author Erik Rasmussen
19 public class TagApplet
extends Applet
22 * The maximum number of agents allowed
24 public static final int MAX_NUM_AGENTS
= 100;
26 * The minimum number of agents allowed
28 public static final int MIN_NUM_AGENTS
= 2;
30 * The number of agents
32 protected int numAgents
= 50;
34 * The "Number of Agents" slider
36 protected JSlider numAgentsSlider
;
38 * The "Number of Agents" label
40 protected JLabel numAgentsLabel
;
42 * The maximum number of "it" agents allowed
44 public static final int MAX_NUM_IT_AGENTS
= 20;
46 * The minimum number of "it" agents allowed
48 public static final int MIN_NUM_IT_AGENTS
= 1;
50 * The number of "it" agents
52 protected int numItAgents
= 1;
54 * The "Number of 'It' Agents" slider
56 protected JSlider numItAgentsSlider
;
58 * The "Number of 'It' Agents" label
60 protected JLabel numItAgentsLabel
;
62 * The maximum agent sight value allowed
64 public static final int MAX_AGENT_SIGHT
= 100;
66 * The minimum agent sight value allowed
68 public static final int MIN_AGENT_SIGHT
= 5;
70 * The agent sight value
72 protected int agentSight
= 60;
74 * The "Agent Sight" slider
76 protected JSlider agentSightSlider
;
78 * The "Agent Sight" label
80 protected JLabel agentSightLabel
;
83 * Initializes the world with the appropriate number of TagAgents
84 * with the appropriate "agent sight" settings
86 * @return A world with TagAgents
88 protected World
initializeWorld()
90 final World world
= new World(300, 300);
93 for (int i
= 0; i
< numAgents
; i
++)
94 world
.addObject(new TagAgent(5, agentSight
, 5, 3));
95 for (int i
= 0; i
< numItAgents
; i
++)
97 final TagAgent it
= new TagAgent(5, agentSight
, 5, 3);
110 * Returns a settings panel with "Number of Agents", "Number of 'It'
111 * Agents", and "Agent Sight" sliders
113 * @return A settings panel with "Number of Agents", "Number of 'It'
114 * Agents", and "Agent Sight" sliders
116 protected JPanel
getSettingsPanel()
118 final JPanel settingsPanel
= new JPanel();
119 settingsPanel
.setLayout(new BoxLayout(settingsPanel
, BoxLayout
.Y_AXIS
));
121 numAgentsLabel
= new JLabel("Number of Agents: " + numAgents
);
122 numAgentsLabel
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
123 settingsPanel
.add(numAgentsLabel
);
125 final Hashtable numAgentsLabels
= new Hashtable();
126 numAgentsLabels
.put(new Integer(MIN_NUM_AGENTS
), new JLabel(Integer
.toString(MIN_NUM_AGENTS
)));
127 numAgentsLabels
.put(new Integer(MAX_NUM_AGENTS
), new JLabel(Integer
.toString(MAX_NUM_AGENTS
)));
129 numAgentsSlider
= new JSlider(MIN_NUM_AGENTS
, MAX_NUM_AGENTS
, numAgents
);
130 numAgentsSlider
.setLabelTable(numAgentsLabels
);
131 numAgentsSlider
.setPaintLabels(true);
132 numAgentsSlider
.addChangeListener(new ChangeListener()
134 public void stateChanged(final ChangeEvent event
)
136 numAgentsChanged(event
);
139 settingsPanel
.add(numAgentsSlider
);
141 numItAgentsLabel
= new JLabel("Number of \"It\" Agents: " + numItAgents
);
142 numItAgentsLabel
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
143 settingsPanel
.add(numItAgentsLabel
);
145 final Hashtable numItAgentsLabels
= new Hashtable();
146 numItAgentsLabels
.put(new Integer(MIN_NUM_IT_AGENTS
), new JLabel(Integer
.toString(MIN_NUM_IT_AGENTS
)));
147 numItAgentsLabels
.put(new Integer(MAX_NUM_IT_AGENTS
), new JLabel(Integer
.toString(MAX_NUM_IT_AGENTS
)));
149 numItAgentsSlider
= new JSlider(MIN_NUM_IT_AGENTS
, MAX_NUM_IT_AGENTS
, numItAgents
);
150 numItAgentsSlider
.setLabelTable(numItAgentsLabels
);
151 numItAgentsSlider
.setPaintLabels(true);
152 numItAgentsSlider
.addChangeListener(new ChangeListener()
154 public void stateChanged(final ChangeEvent event
)
156 numItAgentsChanged(event
);
159 settingsPanel
.add(numItAgentsSlider
);
161 agentSightLabel
= new JLabel("Agent Sight: " + agentSight
);
162 agentSightLabel
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
163 settingsPanel
.add(agentSightLabel
);
165 final Hashtable agentSightLabels
= new Hashtable();
166 agentSightLabels
.put(new Integer(MIN_AGENT_SIGHT
), new JLabel(Integer
.toString(MIN_AGENT_SIGHT
)));
167 agentSightLabels
.put(new Integer(MAX_AGENT_SIGHT
), new JLabel(Integer
.toString(MAX_AGENT_SIGHT
)));
169 agentSightSlider
= new JSlider(MIN_AGENT_SIGHT
, MAX_AGENT_SIGHT
, agentSight
);
170 agentSightSlider
.setLabelTable(agentSightLabels
);
171 agentSightSlider
.setPaintLabels(true);
172 agentSightSlider
.addChangeListener(new ChangeListener()
174 public void stateChanged(final ChangeEvent event
)
176 agentSightChanged(event
);
179 settingsPanel
.add(agentSightSlider
);
181 final JLabel changes
= new JLabel("Changes will take");
182 changes
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
183 final JLabel takeEffect
= new JLabel("effect at next reset");
184 takeEffect
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
185 settingsPanel
.add(changes
);
186 settingsPanel
.add(takeEffect
);
187 return settingsPanel
;
191 * The method invoked when the "Number of Agents" slider changes
193 * @param event The change event
195 public void numAgentsChanged(final ChangeEvent event
)
197 numAgents
= numAgentsSlider
.getValue();
198 numAgentsLabel
.setText("Number of Agents: " + numAgents
);
202 * The method invoked when the "Number of 'It' Agents" slider changes
204 * @param event The change event
206 public void numItAgentsChanged(final ChangeEvent event
)
208 numItAgents
= numItAgentsSlider
.getValue();
209 numItAgentsLabel
.setText("Number of \"It\" Agents: " + numItAgents
);
213 * The method invoked when the "Agent Sight" slider changes
215 * @param event The change event
217 public void agentSightChanged(final ChangeEvent event
)
219 agentSight
= agentSightSlider
.getValue();
220 agentSightLabel
.setText("Agent Sight: " + agentSight
);