-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAgentFactory.pde
61 lines (56 loc) · 2.3 KB
/
AgentFactory.pde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import java.util.Random;
public class AgentFactory {
int minMetabolism;
int maxMetabolism;
int minVision;
int maxVision;
int minInitialSugar;
int maxInitialSugar;
MovementRule movementRule;
/* public - creates a new AgentFactory with the specified parameters.
*/
public AgentFactory(int minMetabolism, int maxMetabolism, int minVision, int maxVision,
int minInitialSugar, int maxInitialSugar, MovementRule m) {
this.minMetabolism = minMetabolism;
this.maxMetabolism = maxMetabolism;
this.minVision = minVision;
this.maxVision = maxVision;
this.minInitialSugar = minInitialSugar;
this.maxInitialSugar = maxInitialSugar;
this.movementRule = m;
}
/* Returns a new Agent with randomly selected parameters.
* The Agent's metabolism must be between minMetabolism and maxMetabolism (inclusive).
* The Agent's vision must be between minVision and maxVision (inclusive).
* The Agent's initial sugar must be between minInitialSugar and maxInitialSugar (inclusive).
* The Agent's movement rule must be the same as the MovementRule used to construct this AgentFactory.
* Parameter values should be selected uniformly at random.
*/
public Agent makeAgent() {
Random r = new Random();
int metabolism = minMetabolism + r.nextInt(maxMetabolism + 1 - minMetabolism);
int vision = minVision + r.nextInt(maxVision + 1 - minVision);
int initialSugar = minInitialSugar + r.nextInt(maxInitialSugar + 1 - minInitialSugar);
return new Agent(metabolism, vision, initialSugar, movementRule);
}
}
class AgentFactoryTester {
public void test() {
int minMetabolism = 3;
int maxMetabolism = 6;
int minVision = 2;
int maxVision = 4;
int minInitialSugar = 5;
int maxInitialSugar = 10;
MovementRule mr = new PollutionMovementRule();
AgentFactory af = new AgentFactory(minMetabolism, maxMetabolism, minVision, maxVision,
minInitialSugar, maxInitialSugar, mr);
Agent a = af.makeAgent();
int m = a.getMetabolism();
assert(m >= minMetabolism && m <= maxMetabolism);
int v = a.getVision();
assert(v >= minVision && v <= maxVision);
int is = a.getSugarLevel();
assert(is >= minInitialSugar && is <= maxInitialSugar);
}
}