import java.util.*;
public class DiceGame {

	public static void displayDice(Grid game, int[] die) {
		for (int i = 0; i < die.length; i++) {
			if (die[i] >= 1 && die[i] <= 6) {
				game.setImage(new Location(0,i), "die" + die[i] + ".png");
			}
			System.out.print(die[i] + " ");
		}
		System.out.println();
	}

	public static void main(String[] args) {
		
		int[] die = new int[5];
		boolean[] reroll = new boolean[5];
		Grid game = new Grid(1,5);
		game.setTitle("ANITROC!");
		
		final int MAX_ROLLS_PER_ROUND = 4;
		final int MAX_STRIKES_PER_GAME = 3;
		
		Scanner scan = new Scanner(System.in);

		int numStrikes = 0;
		int total = 0;

		System.out.println("Welcome to ANITROC!");

		
		while (numStrikes < MAX_STRIKES_PER_GAME) {
	
			int numRolls = 0;
			for (int i = 0; i < reroll.length; i++)
				reroll[i] = true;
			
			while (numRolls < MAX_ROLLS_PER_ROUND && (reroll[0] || reroll[1] || reroll[2] || reroll[3] || reroll[4])) {

				numRolls++;
				
				for (int i = 0; i < die.length; i++) {
					if (reroll[i]) {
						die[i] = (int)(Math.random()*6) + 1;
						reroll[i] = false;
					}
				}
				
				displayDice(game, die);
				
				if (numRolls < MAX_ROLLS_PER_ROUND) {
					for (int i = 0; i < reroll.length; i++) {
						System.out.print("Do you want to roll die " + i + " again (y for yes)? ");
						String answer = scan.nextLine();
						if (answer.equals("y")) {
							reroll[i] = true;
						}
					}
				}
				
			}

			int score = getScore(die);
			System.out.println("You scored " + score);
			total += score;		
			
			if (score == 0) {
				numStrikes++;	
			}
			
			System.out.println("Strikes = " + numStrikes + "\tYour total = " + total);		
			System.out.println("Hit ENTER to continue");
			scan.nextLine();
			
		}
		
		System.out.println("GAME OVER");
				
	}
	
	public static int getScore(int[] die) {
		
		Arrays.sort(die);
		
		if (die[0] == die[1] && die[1] == die[2] && die[2] == die[3] && die[3] == die[4]) {
			System.out.print("ANITROC! ");
			return 200;
		}
		
		if ((die[0] == die[1] && die[1] == die[2] && die[2] == die[3]) ||
				(die[1] == die[2] && die[2] == die[3] && die[3] == die[4])) {
			System.out.print("FOUR OF A KIND ");
			return 100;			
		}
		
		if (die[0]+1 == die[1] && die[1]+1==die[2] && die[2]+1==die[3] && die[3]+1==die[4]) {
			System.out.print("LARGE STRAIGHT ");
			return 50;
		}
		
		if ((die[0] == die[1] && die[1] == die[2] && die[3] == die[4]) ||
				(die[0] == die[1] && die[2] == die[3] && die[3] == die[4])) {
			System.out.print("FULL HOUSE ");
			return 40;
		}
			
		if ((die[0] == die[1] && die[1] == die[2]) ||
				(die[1] == die[2] && die[2] == die[3]) ||
				(die[2] == die[3] && die[3] == die[4])) {
			System.out.print("THREE OF A KIND ");
			return 30;
		}
		
		if ((die[0]+1 == die[1] && die[1]+1==die[2] && die[2]+1==die[3]) ||
				(die[1]+1==die[2] && die[2]+1==die[3] && die[3]+1==die[4]) ||
				(die[0]+1 == die[2] && die[2]+1==die[3] && die[3]+1==die[4]) ||
				(die[0]+1 == die[1] && die[1]+1==die[3] && die[3]+1==die[4]) ||
				(die[0]+1 == die[1] && die[1]+1==die[2] && die[2]+1==die[4])
				) {
			System.out.print("SMALL STRAIGHT ");
			return 20;
		}
		
		if ((die[0] == die[1] && die[2] == die[3]) ||
				(die[0] == die[1] && die[3] == die[4]) ||
				(die[1] == die[2] && die[3] == die[4])) {
			System.out.print("TWO PAIRS ");
			return 10;
		}
			
		System.out.print("STRIKE! ");
		return 0;
					
	}
}
