bridge
Class BridgeMove

java.lang.Object
  extended by framework.Move
      extended by bridge.BridgeMove

public class BridgeMove
extends Move

This class represents moves in the Bridge Crossing problem. A move object stores its move name and knows how to apply itself to a bridge state to create a new state representing the result of the move. Note that this class extends the abstract class Move and therefore imports framework.Move. This class inherits the getMoveName() method from its parent and thus it should not have an instance field for the move name. Other than that, it can be essentially the same as in the previous assignment.


Constructor Summary
BridgeMove(java.lang.String moveName)
          Constructs a new bridge move object.
 
Method Summary
 State doMove(State otherState)
          Attempts to perform this move on a given bridge state.
 
Methods inherited from class framework.Move
getMoveName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BridgeMove

public BridgeMove(java.lang.String moveName)
Constructs a new bridge move object. Note that the move name is passed to the parent constructor using super.

Parameters:
moveName - the name of this move. It is an error if the name is not one of the following:
  • "P1 crosses alone"
  • "P2 crosses alone"
  • "P5 crosses alone"
  • "P10 crosses alone"
  • "P1 crosses with P2"
  • "P1 crosses with P5"
  • "P1 crosses with P10"
  • "P2 crosses with P5"
  • "P2 crosses with P10"
  • "P5 crosses with P10"
Method Detail

doMove

public State doMove(State otherState)
Attempts to perform this move on a given bridge state. Note that this method implements the abstract doMove method declared in the parent. Thus the argument of type State must be cast to type BridgeState before processing. The move to perform is determined by this object's move name. If the move can be performed a new bridge state object is returned that reflects this move. A move cannot be performed if the flashlight is not on the same side as the crossing person(s), or if a pair of persons who are crossing are not on the same side. If the move cannot be performed null is returned.

Specified by:
doMove in class Move
Parameters:
otherState - the bridge state on which this move is to be performed
Returns:
a new bridge state reflecting the move, or null if it cannot be performed