?
Solved

Dice code modification Question

Posted on 2007-12-03
2
Medium Priority
?
676 Views
Last Modified: 2008-02-01
The code below works for finding 5, 4, 3 and a pair for dice and compare hands. Now I would like to add a small and large straight and full house..(like a yahtzee hand). I plan on writing methods for the straights and full house...but my questions are:

1. Where would I need to add this in existing code.
2. I assume I would have to once determining either straight or flush I would have to assign a value for it...What would be good?

Some comments appreciated...
public class FiveDice3
{
  public static void main(String[] args)
  {
     final int NUM = 5;
     Die[] comp = new Die[NUM];
     Die[] player =  new Die[NUM];
     int x;
     for(x = 0; x < NUM; ++x)
     {
        comp[x] = new Die();
        player[x] = new Die();
     }
     int compMatch, playerMatch;
     int compHigh, playerHigh;
     String computerName = "Computer";
     String playerName = "You";
     display(computerName, comp, NUM);
     display(playerName, player, NUM);
     compMatch = howManySame(comp, NUM);
     playerMatch = howManySame(player, NUM);
     compHigh = compMatch / 10;
     playerHigh = playerMatch / 10;
     compMatch = compMatch % 10;
     playerMatch = playerMatch % 10;
     if(compMatch == 1)
       System.out.println("Computer has nothing");
     else
       System.out.println("Computer has " + compMatch + " of a kind");
     if(playerMatch == 1)
       System.out.println("You have nothing");
     else
       System.out.println("You have " + playerMatch + " of a kind");
     if(compMatch > playerMatch)
        System.out.println("Computer wins");
     else
        if(compMatch < playerMatch)
           System.out.println("You win");
        else
        {
          if(compHigh > playerHigh)
            System.out.println("Computer's values are higher - computer wins");
          else
            if(compHigh < playerHigh)
               System.out.println("Your values are higher - you win");
            else
              System.out.println("It's a tie");
        }
  }
  public static void display(String who, Die[] die, int num)
  {
     int x;
     String dice = "";
     for(x = 0; x < num; ++x)
        dice = dice + die[x].getValue() + " ";
     System.out.println(who + " rolled: " + dice);
  }
  public static int howManySame(Die[] die, int num)
  {
     int[] same = new int[num];
     int x, y;
     int highest;
     int highValue = 0;
     for(x = 0; x < num; ++x)
       same[x] = 1; // every die matches itself
     for(x = 0; x < num - 1; ++x)
     {
       for(y = x + 1; y < num; ++y)
         if(die[x].getValue() == die[y].getValue())
         {
             same[x]++;
             if(die[x].getValue() > highValue)
                highValue = die[x].getValue();
         }
     }
     highest = same[0];
     for(x = 1; x < num; ++x)
        if(same[x] > highest)
          highest = same[x];
     highest = highest + 10 * highValue;
     return highest;
  } 
}
public class Die
{
  private int value;
  private static final int HIGHEST_DIE_VALUE = 6;
  private static final int LOWEST_DIE_VALUE = 1;
  public Die()
  {
    value = ((int)(Math.random() * 100) % HIGHEST_DIE_VALUE +
       LOWEST_DIE_VALUE);
  }
  public int getValue()
  {
    return value;
  }
}

Open in new window

0
Comment
Question by:CPlusJavaCSharp
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 20402018
Excuse my ignorance, but how do you get a flush in dice - there are no suits..?
0
 
LVL 92

Accepted Solution

by:
objects earned 1400 total points
ID: 20402043
1. add a method (or define an interface and a class) for each check thats required.
2. value them based on their rank
0

Featured Post

Optimize your web performance

What's in the eBook?
- Full list of reasons for poor performance
- Ultimate measures to speed things up
- Primary web monitoring types
- KPIs you should be monitoring in order to increase your ROI

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Java can be integrated with native programs using an interface called JNI(Java Native Interface). Native programs are programs which can directly run on the processor. JNI is simply a naming and calling convention so that the JVM (Java…
In this post we will learn different types of Android Layout and some basics of an Android App.
Viewers learn how to read error messages and identify possible mistakes that could cause hours of frustration. Coding is as much about debugging your code as it is about writing it. Define Error Message: Line Numbers: Type of Error: Break Down…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Suggested Courses
Course of the Month11 days, 20 hours left to enroll

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question