import java.util.Collection;
import java.util.Scanner;
import java.io.File;

/**
 * Driver class for playing a text-based game of Hangman.
 *   @author Dave Reed (based on code by Stuart Reges and Keith Schwarz)
 *   @version 2/19/13
 */
public class HangmanGame {
    public static final String DICTIONARY_FILE = "dictionary.txt";

    public static void main(String[] args) throws java.io.FileNotFoundException {
        Hangman hangman = new DishonestHangman(DICTIONARY_FILE);
        
        System.out.println("I'm thinking of a " + 
                           hangman.getRedactedWord().length() + 
                           " letter word.");
        System.out.println();
        
        Scanner input = new Scanner(System.in);
        char guess = ' ';
        while (guess != '?' && hangman.getRedactedWord().contains("-")) {
            Collection<Character> guesses = hangman.getPastGuesses();
            System.out.println("Guessed so far: " + guesses);
            System.out.println("Current pattern: " + hangman.getRedactedWord());
            System.out.print("Your guess (#" + (guesses.size()+1) + "): ");
            
            guess = input.next().toLowerCase().charAt(0);
            if (guesses.contains(guess)) {
                System.out.println("You already guessed " + guess + ".");
            } 
            else {
                hangman.recordGuess(guess);
            }
            System.out.println();
        }
        
        if (hangman.getRedactedWord().indexOf('-') >= 0) {
            String alphabet = "abcdefghijklmnopqrstuvwxyz";
            for (int i = 0; i < alphabet.length(); i++) {
                hangman.recordGuess(alphabet.charAt(i));
            }
        }
        System.out.println("The word is: " + hangman.getRedactedWord());
    }
    
    
}
