Three of a kind Get three dice with the same number Points a
Three of a kind: Get three dice with the same number. Points are the sum all dice (not just the three of a kind).
Four of a kind: Get four dice with the same number. Points are the sum all dice (not just the four of a kind).
Full house: Get three of a kind and a pair, e.g. 1,1,3,3,3 or 3,3,3,6,6. Scores 25 points.
Small straight: Get four sequential dice, 1,2,3,4 or 2,3,4,5 or 3,4,5,6. Scores 30 points.
Large straight: Get five sequential dice, 1,2,3,4,5 or 2,3,4,5,6. Scores 40 points.
Chance: You can put anything into chance, it\'s basically like a garbage can when you don\'t have anything else you can use the dice for. The score is simply the sum of the dice.
YAHTZEE: Five of a kind. Scores 50 points. You can optionally get multiple Yahtzees, see below for details.
Make a java program that plays YAHTZEE.
Solution
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Yahtzee {
int dice[] = new int[5];
int getScore(){ //used to calculate and return score
int count[] = {0,0,0,0,0,0};
for (int i=0; i<5; i++)
count[dice[i]]++;
for (int i = 0; i<6; i++) //YAHTZEE
if(count[i]==5)
return 50;
int maxCount=0, tempCount=0;
for (int i = 0; i<6; i++)
if(count[i]>0)
tempCount++;
else {
if (tempCount>maxCount)
maxCount=tempCount;
tempCount = 0;
}
if (maxCount==5 || tempCount==5) //Large straight
return 40;
if (maxCount==4 || tempCount==4) //Small straight
return 0;
boolean count2 = false;
boolean count3 = false;
boolean count4 = false;
for (int i = 0; i<6; i++)
if(count[i]==2)
count2 = true;
else if(count[i]==3)
count3 = true;
else if (count[i]==4)
count4 = true;
if (count2 && count3) //House full
return 25;
if (count4) // Four of a kind
return sum();
if (count3) //three of a kind
return sum();
return sum(); //chance
}
void rollDice(){ //Roll dice to get new set of numbers
dice[0] = (int) (Math.round(Math.random()*5)+1);
dice[1] = (int) (Math.round(Math.random()*5)+1);
dice[2] = (int) (Math.round(Math.random()*5)+1);
dice[3] = (int) (Math.round(Math.random()*5)+1);
dice[4] = (int) (Math.round(Math.random()*5)+1);
dice[5] = (int) (Math.round(Math.random()*5)+1);
}
private int sum() { //get sum of all dice
int sum = 0;
for (int i = 0; i<5; i++)
sum += dice[i];
return sum;
}
public static void main(String args[])throws IOException {
Yahtzee y = new Yahtzee();
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
int score;
do{
System.out.println(\"Rolling dice...\");
y.rollDice();
score = y.getScore();
System.out.println(\"Score= \"+score);
System.out.println(\"Do you want to roll dice and get score again?\");
} while (!br.readLine().equalsIgnoreCase(\"no\"));
}
}

