fixed source code links to go to repo.or.cz repository
[applet-bots.git] / src / appletbots / friendly / FriendlyApplet.java
blobafeeb686b815b0c9215ecad10136b4f114873d10
1 /*
2 * Copyright (c) 2002 Erik Rasmussen - All Rights Reserverd
3 */
4 package appletbots.friendly;
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 FriendlyAgent simulation
17 * @author Erik Rasmussen
19 public class FriendlyApplet 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 agent sight value allowed
44 public static final int MAX_AGENT_SIGHT = 100;
45 /**
46 * The minimum agent sight value allowed
48 public static final int MIN_AGENT_SIGHT = 5;
49 /**
50 * The agent sight value
52 protected int agentSight = 60;
53 /**
54 * The "Agent Sight" slider
56 protected JSlider agentSightSlider;
57 /**
58 * The "Agent Sight" label
60 protected JLabel agentSightLabel;
62 /**
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);
71 try
73 for (int i = 0; i < numAgents; i++)
74 world.addObject(new FriendlyAgent(5, agentSight, 5, 3));
76 catch (Exception e)
78 e.printStackTrace();
80 return world;
83 /**
84 * Returns a settings panel with "Number of Agents" and "Agent Sight"
85 * sliders
87 * @return A settings panel with "Number of Agents" and "Agent Sight"
88 * sliders
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);