1: package agent2d;
3: import swarm.objectbase.SwarmImpl;
4: import swarm.objectbase.Swarm;
5: import swarm.activity.Activity;
6: import swarm.activity.Schedule;
7: import swarm.activity.ScheduleImpl;
8: import swarm.defobj.Zone;
9: import swarm.gui.Raster;
11: import swarm.Selector;
12: import swarm.Globals;
14: import ObserverSwarm;
15: import Organization;
17: public class User2d extends DirectedAgent2d {
18: Schedule schedule;
20: void newEffort () {
21: direction = Globals.env.uniformIntRand.getIntegerWithMin$withMax (0, 359);
22: sampleEnergy ();
23: }
25: public User2d (Zone aZone, Organization org,
26: int x, int y,
27: int scatter,
28: double resistanceProbabilityMean,
29: double resistanceProbabilityDeviation,
30: int energyMean, int energyDeviation) {
32: super (aZone, org, x, y, scatter, 2,
33: resistanceProbabilityMean, resistanceProbabilityDeviation,
34: energyMean, energyDeviation);
36: sampleResistProbability ();
37: newEffort ();
38: schedule = new ScheduleImpl (aZone, 1);
40: try {
41: schedule.at$createActionTo$message
42: (0,
43: this,
44: new Selector (getClass (), "stepAgent", false));
45: } catch (Exception e) {
46: e.printStackTrace (System.err);
47: System.exit (1);
48: }
49: }
51: public Activity activateIn (Swarm context) {
52: super.activateIn (context);
54: schedule.activateIn (this);
55: return getActivity ();
56: }
58: public void stepAgent () {
59: if (frobbed && !resisting)
60: color = ObserverSwarm.UserListenColor;
61: else
62: color = resisting ? ObserverSwarm.UserResistColor : ObserverSwarm.UserTourColor;
63: moveDirection ();
64: if (energy == 0)
65: newEffort ();
66: else
67: energy--;
68: clearFrobStatus ();
69: }
70: }