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.