initial commit
[applet-bots.git] / src / appletbots / tag / TagApplet.java
blob2749198e6ee440c4f04554555fa037cb8ef75f52
1 /*
2 * Copyright (c) 2002 Erik Rasmussen - All Rights Reserverd
3 */
4 package appletbots.tag;
6 import appletbots.World;
7 import appletbots.Applet;
9 import javax.swing.*;
10 import javax.swing.event.ChangeEvent;
11 import javax.swing.event.ChangeListener;
12 import java.util.Hashtable;
14 /**
15 * An applet to run a TagAgent simulation
17 * @author Erik Rasmussen
19 public class TagApplet extends Applet
21 /**
22 * The maximum number of agents allowed
24 public static final int MAX_NUM_AGENTS = 100;
25 /**
26 * The minimum number of agents allowed
28 public static final int MIN_NUM_AGENTS = 2;
29 /**
30 * The number of agents
32 protected int numAgents = 50;
33 /**
34 * The "Number of Agents" slider
36 protected JSlider numAgentsSlider;
37 /**
38 * The "Number of Agents" label
40 protected JLabel numAgentsLabel;
41 /**
42 * The maximum number of "it" agents allowed
44 public static final int MAX_NUM_IT_AGENTS = 20;
45 /**
46 * The minimum number of "it" agents allowed
48 public static final int MIN_NUM_IT_AGENTS = 1;
49 /**
50 * The number of "it" agents
52 protected int numItAgents = 1;
53 /**
54 * The "Number of 'It' Agents" slider
56 protected JSlider numItAgentsSlider;
57 /**
58 * The "Number of 'It' Agents" label
60 protected JLabel numItAgentsLabel;
61 /**
62 * The maximum agent sight value allowed
64 public static final int MAX_AGENT_SIGHT = 100;
65 /**
66 * The minimum agent sight value allowed
68 public static final int MIN_AGENT_SIGHT = 5;
69 /**
70 * The agent sight value
72 protected int agentSight = 60;
73 /**
74 * The "Agent Sight" slider
76 protected JSlider agentSightSlider;
77 /**
78 * The "Agent Sight" label
80 protected JLabel agentSightLabel;
82 /**
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);
91 try
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);
98 it.setIt(true);
99 world.addObject(it);
102 catch (Exception e)
104 e.printStackTrace();
106 return world;
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);