
public  class Strategy extends Object {
  int strategyNumber;  // each strategy will be assigned an ID number
  
  // This default Strategy always returns 0; it's Nice
 
  protected void Strategy () {}
  
  protected int firstMove () {return 0;}
  // Override firstMove if the Strategy doesn't always play 0 on the first move
  
  protected int secondMove (int myLastPlay, int otherLastPlay, int currentScore)
    {return firstMove();}
  // The default secondMove acts as if the Strategy ignores the state of the game.
  // Override secondMove if the Strategy uses the results of the last move
  
  protected int thirdMove  (int myLastPlay, int otherLastPlay,
                            int myPreviousPlay, int otherPreviousPlay, int currentScore)
    {return secondMove (myLastPlay, otherLastPlay, currentScore);}
  // The default thirdMove acts the same as the second move.  Override it if the
  // Strategy can depend on the last two moves
    
}

