import java.util.Collection;

/**
 * Interface that defines the methods that must be implement by a Hangman.
 *   @author Dave Reed
 *   @version 2/5/14
 */
public interface Hangman {      
    /**
     * Selects a word at random to be guessed (and resets appropriate fields).
     * [Note: should be called by the constructor to select the initial word.]
     */
	public void selectWord();
	
    /**
     * Returns the word with unguessed letters redacted (i.e., replaced by '-').
     *   @return the redacted word
     */
    public String getRedactedWord();
        
    /**
     * Returns a set of all characters guessed so far.
     *   @return the set of guessed characters
     */
    public Collection<Character> getPastGuesses();
    
    /**
     * Records a guess and returns whether the guess was successful
     *   @param guess the character being guessed
     *   @return true if that character is in the word, otherwise false
     */
    public boolean recordGuess(char guess);
    
    /**
     * Returns whether the word has been completely guessed
     *   @return true if all the letters have been guessed, else false
     */
    public boolean wordIsGuessed();

}
