| public enum GameState {Ongoing, Won, Lost}
abstract class HangmanGame {
  /* Encapsulates the data of a single play of Hangman */
  /** Set the puzzle of this game */
  public abstract void setPuzzle(Puzzle p);
  /** Get the secret puzzle of this game */
  public abstract Puzzle CurrentPuzzle();
  /** Set the alphabet of this game - a array of all possible chars */
  public abstract void setAlphabet(char[] alphabet);
  /** Return the array of all chars not yet guessed */  
  public abstract char[] RemainingAlphabet();
  /** Return a string which represents the guessing state */
  public abstract string PuzzleOutline(Puzzle p);
  /** Call this method when the user wish to attempt ch */
  public abstract void GuessChar(char ch);
  /** Return the state of the game - Won, Lost or Ongoing */
  public abstract GameState GameState();
  /** Return the number of points obtained until now in this game */
  public abstract int HowManyPoints();
}    |