import java.util.Collection;

/**
 * Interface that defines the methods that must be implement by a Hangman.
 *   @author Dave Reed
 *   @version 1/29/16
 */
public interface Hangman {      
    /**
     * Returns the selected word with unguessed letters redacted (i.e., replaced by '-').
     *   @return the redacted word
     */
    public String getRedactedWord();
        
    /**
     * Records a guess and returns a message describing the result.
     *   @param guess the character being guessed
     *   @return a message describing the result of the guess, either 
     *           "You already guessed X.", "Sorry.  X does not appear in the word.",
     *           or "Good guess!".
     */
    public String makeGuess(char guess);
    
    /**
     * Returns a collection of all characters guessed so far.
     *   @return the collection of guessed characters
     */
    public Collection<Character> getGuesses();

    /**
     * Resets the game, selecting a new word and resetting the guesses.
     */
    public void reset();
}
