2 * Copyright (c) 2002 Erik Rasmussen - All Rights Reserverd
4 package appletbots
.friendly
;
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 FriendlyAgent simulation
17 * @author Erik Rasmussen
19 public class FriendlyApplet
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 agent sight value allowed
44 public static final int MAX_AGENT_SIGHT
= 100;
46 * The minimum agent sight value allowed
48 public static final int MIN_AGENT_SIGHT
= 5;
50 * The agent sight value
52 protected int agentSight
= 60;
54 * The "Agent Sight" slider
56 protected JSlider agentSightSlider
;
58 * The "Agent Sight" label
60 protected JLabel agentSightLabel
;
63 * Initializes the world with the appropriate number of FriendlyAgents
64 * with the appropriate "agent sight" settings
66 * @return A world with FriendlyAgents
68 protected World
initializeWorld()
70 final World world
= new World(300, 300);
73 for (int i
= 0; i
< numAgents
; i
++)
74 world
.addObject(new FriendlyAgent(5, agentSight
, 5, 3));
84 * Returns a settings panel with "Number of Agents" and "Agent Sight"
87 * @return A settings panel with "Number of Agents" and "Agent Sight"
90 protected JPanel
getSettingsPanel()
92 final JPanel settingsPanel
= new JPanel();
93 settingsPanel
.setLayout(new BoxLayout(settingsPanel
, BoxLayout
.Y_AXIS
));
95 numAgentsLabel
= new JLabel("Number of Agents: " + numAgents
);
96 numAgentsLabel
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
97 settingsPanel
.add(numAgentsLabel
);
99 final Hashtable numAgentsLabels
= new Hashtable();
100 numAgentsLabels
.put(new Integer(MIN_NUM_AGENTS
), new JLabel(Integer
.toString(MIN_NUM_AGENTS
)));
101 numAgentsLabels
.put(new Integer(MAX_NUM_AGENTS
), new JLabel(Integer
.toString(MAX_NUM_AGENTS
)));
103 numAgentsSlider
= new JSlider(MIN_NUM_AGENTS
, MAX_NUM_AGENTS
, numAgents
);
104 numAgentsSlider
.setLabelTable(numAgentsLabels
);
105 numAgentsSlider
.setPaintLabels(true);
106 numAgentsSlider
.addChangeListener(new ChangeListener()
108 public void stateChanged(final ChangeEvent event
)
110 numAgentsChanged(event
);
113 settingsPanel
.add(numAgentsSlider
);
115 agentSightLabel
= new JLabel("Agent Sight: " + agentSight
);
116 agentSightLabel
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
117 settingsPanel
.add(agentSightLabel
);
119 final Hashtable agentSightLabels
= new Hashtable();
120 agentSightLabels
.put(new Integer(MIN_AGENT_SIGHT
), new JLabel(Integer
.toString(MIN_AGENT_SIGHT
)));
121 agentSightLabels
.put(new Integer(MAX_AGENT_SIGHT
), new JLabel(Integer
.toString(MAX_AGENT_SIGHT
)));
123 agentSightSlider
= new JSlider(MIN_AGENT_SIGHT
, MAX_AGENT_SIGHT
, agentSight
);
124 agentSightSlider
.setLabelTable(agentSightLabels
);
125 agentSightSlider
.setPaintLabels(true);
126 agentSightSlider
.addChangeListener(new ChangeListener()
128 public void stateChanged(final ChangeEvent event
)
130 agentSightChanged(event
);
133 settingsPanel
.add(agentSightSlider
);
135 final JLabel changes
= new JLabel("Changes will take");
136 changes
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
137 final JLabel takeEffect
= new JLabel("effect at next reset");
138 takeEffect
.setAlignmentX(java
.awt
.Component
.CENTER_ALIGNMENT
);
139 settingsPanel
.add(changes
);
140 settingsPanel
.add(takeEffect
);
141 return settingsPanel
;
145 * The method invoked when the "Number of Agents" slider changes
147 * @param event The change event
149 public void numAgentsChanged(final ChangeEvent event
)
151 numAgents
= numAgentsSlider
.getValue();
152 numAgentsLabel
.setText("Number of Agents: " + numAgents
);
156 * The method invoked when the "Agent Sight" slider changes
158 * @param event The change event
160 public void agentSightChanged(final ChangeEvent event
)
162 agentSight
= agentSightSlider
.getValue();
163 agentSightLabel
.setText("Agent Sight: " + agentSight
);