|
Marine Biology Simulation |
Consider adding forward-moving fish (ForwardFish) to the Marine
Biology Simulation program. A forward-moving fish can move forward or forward
and slightly to the left or right. For example, a fish facing north could move
north, northeast, or northwest. A fish facing east could move northeast, east,
or southeast. If a fish moves directly forward, its direction should be unchanged.
A fish that turns as it moves should change its direction 90 degrees to the
right or left. For example, if a north-facing fish moves northeast, it should
turn to face east. If an east-facing fish moves northeast, it should turn to
face north. [Remember that locations in a bounded environment have only four
adjacent neighbors, and that the getDirection method in such an
environment will "round" directions to one of the four cardinal directions
in a square environment.]
Variant: You can modify the BoundedEnv constructor to create
a bounded environment in which a location has eight adjacent neighbors (four
sides and four diagonals) rather than four. BoundedEnv extends
the SquareEnvironment class, which provides the implementations
for methods such as getDirection, getNeighbor, and
neighborsOf. The BoundedEnv constructor calls
super() to construct the SquareEnvironment aspects
of the object using the default SquareEnvironment constructor.
It could use the other SquareEnvironment constructor, though, and
create an environment that looks for neighbors on the diagonals. Research
the second SquareEnvironment constructor and then modify the BoundedEnv
constructor to pass parameters to super. This will lead to
a different solution to the forward-moving fish problem.
Extension: Notice that forward-moving fish get stuck at the sides of
the environment. Modify the ForwardFish class so that a fish that
is stuck reverses direction.