import java.util.Scanner;

public class FlipRunner
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        GameState state = new GameState(6);
        System.out.println("Enter moves in the format\n" +
                "taken dice, followed by f (flip) or p (play) and the value of the die to flip or play\n" +
                "Examples: f2 or p4 or 12f2\n");
        int player = 1;
        boolean won = false;
        while (!won)
        {   
            System.out.println("Game state: " + state);
            boolean good = false;
            while (!good)
            {
                System.out.print("Enter move for player " + player + ": ");
                String line = in.nextLine();
                good = line.matches("[1-6]*[fp][1-6]");
                if (good)
                {
                    int[] taken = new int[line.length() - 2];
                    for (int i = 0; i < taken.length; i++)
                        taken[i] = line.charAt(i) - '0';
                    int value = line.charAt(line.length() - 1) - '0';
                    if (line.charAt(line.length() - 2) == 'f')
                    {
                        if (state.checkFlip(taken, value))
                        {
                            state.take(taken);
                            state.flip(value);
                        }
                        else
                        {
                            System.out.println("Illegal move.");
                            good = false;
                        }
                    }
                    else
                    {
                        if (state.checkPlay(taken, value))
                        {
                            state.take(taken);
                            state.play(value);
                        }
                        else
                        {
                            System.out.println("Illegal move.");
                            good = false;
                        }
                    }
                }
                else
                    System.out.println("Syntax error.");
            }
            if (state.isWinning())
            {
                System.out.println("Congratulations! You won.");
                won = true;
            }
            else
            {
                player = 3 - player;
                state.switchPlayers();
            }                
        }
    }    
}
