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(); } } } }