#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2012
    Posts
    7
    Rep Power
    0

    Help with classes and calling instance


    I am kinda stuck and just not sure where to start fixing this. My program works without errors, but does not loop or return the score. I believe I need to add my methods to my "DRPlayer" class and call them into main. I know this must be hard to pickup where I have left off but I would appreciate any advice to help me learn. below are my codes and instructions:

    In the Dice Roll game, the player begins with a score of 1000. The player is prompted for the number
    of points to risk and a second prompt asks the player to choose either high or low. The player rolls
    two dice and the outcome is compared to the player’s choice of high or low. If the dice total is between
    2 and 6 inclusive, then it is considered “low”. A total between 8 and 12 inclusive is “high”. A total of
    7 is neither high nor low, and the player loses the points at risk. If the player had called correctly, the
    points at risk are doubled and added to the total points. For a wrong call, the player loses the points at
    risk. Create a DiceRollGame application that uses a DRPlayer object based on this specification. The
    DRPlayer object should have two Die member variables that represent the dice. The Die class should
    use a random number generator to determine the outcome in a roll() method

    Code:
    package week9dicegame;
    import java.util.Scanner;
    
    /**
     *
     * @author Bob
     */
    public class Week9Dicegame {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            DRPlayer player=new DRPlayer();
            int totalPoints = 1000;
    
            int riskAmt;
    
            int dieAmt;
    
            int guess;
            
            int compHL=0;//converts dieAmt to 0 for low or 1 for high
            
    
           
    
            Scanner my_input = new Scanner(System.in);
    
            System.out.println("Your total points are: "+ totalPoints);
    
            System.out.println("How many points do you want to risk? (-1 to quit) ");
    
            riskAmt = my_input.nextInt();
    
            if (riskAmt == -1){
    
               System.exit(0);
    
            }
    
            else if (riskAmt != -1){
    
              dieAmt = player.die1.roll() + player.die2.roll();
                      if (dieAmt >= 2 && dieAmt <= 6){       
                compHL = 0;//low
           }
            else if (dieAmt >= 8 && dieAmt <= 12){
                compHL = 1;//high
            }
                
              
              System.out.println("Make a call (0 for low, 1 for high)"); 
              guess = my_input.nextInt();
              if (dieAmt == 7){
                    totalPoints = totalPoints - riskAmt;
                    System.out.println("You rolled: "+dieAmt);
                    System.out.println("Bust! Your score is: "+totalPoints);
                    
              }
              else if (guess == compHL){
                    totalPoints = totalPoints + (riskAmt * 2);
                    System.out.println("You rolled: "+dieAmt);
                    System.out.println("Correct! Your score is: "+totalPoints);
                    
                }
                else if (guess != compHL){
                    totalPoints = totalPoints - riskAmt;
                    System.out.println("You rolled: "+dieAmt);
                    System.out.println("Incorrect! Your score is: "+totalPoints);
                    }
            
                           
                   }
        
        }
    }
    Code:
    package week9dicegame;
    
    /**
     *
     * @author Bob
     */
    public class DRPlayer {
        Die die1 = new Die();
        Die die2 = new Die();
    }
    Code:
    package week9dicegame;
    
    /**
     *
     * @author Bob
     */
    public class Die {
         int die_roll = 0;
    
    
        public int roll(){
    
            die_roll = (int)(Math.random()*6) + 1;
    
            return (die_roll);
        }
        
    }
  2. #2
  3. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2012
    Posts
    7
    Rep Power
    0
    Can someone pease offer me some advice? I am still stuck. The program works but I am confused on how to make it loop and return the score. I'd appreciate it greatly. Thanks
  4. #3
  5. Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Nov 2010
    Posts
    73
    Rep Power
    15
    You need to loop within your main method.

    Code:
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            DRPlayer player = new DRPlayer();
            int totalPoints = 1000;
    
            int riskAmt;
    
            int dieAmt;
    
            int guess;
    
            int compHL = 0;//converts dieAmt to 0 for low or 1 for high
    
    
            Scanner my_input = new Scanner(System.in);
    
            while (true) {
    
                System.out.println("Your total points are: " + totalPoints);
    
                System.out.println("How many points do you want to risk? (-1 to quit) ");
    
                riskAmt = my_input.nextInt();
    
                if (riskAmt == -1) {
    
                    System.exit(0);
    
                } else if (riskAmt != -1) {
    
                    dieAmt = player.die1.roll() + player.die2.roll();
                    if (dieAmt >= 2 && dieAmt <= 6) {
                        compHL = 0;//low
                    } else if (dieAmt >= 8 && dieAmt <= 12) {
                        compHL = 1;//high
                    }
    
    
                    System.out.println("Make a call (0 for low, 1 for high)");
                    guess = my_input.nextInt();
                    if (dieAmt == 7) {
                        totalPoints = totalPoints - riskAmt;
                        System.out.println("You rolled: " + dieAmt);
                        System.out.println("Bust! Your score is: " + totalPoints);
    
                    } else if (guess == compHL) {
                        totalPoints = totalPoints + (riskAmt * 2);
                        System.out.println("You rolled: " + dieAmt);
                        System.out.println("Correct! Your score is: " + totalPoints);
    
                    } else if (guess != compHL) {
                        totalPoints = totalPoints - riskAmt;
                        System.out.println("You rolled: " + dieAmt);
                        System.out.println("Incorrect! Your score is: " + totalPoints);
                    }
                }
            }
        }
    Hope this helps.
    slink
  6. #4
  7. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Oct 2012
    Posts
    7
    Rep Power
    0
    Aha! Got it! Thank you very much. I was not aware that main would return the value as long as the while loop was still true. I was definitly making it more complicated than needed. Thank you very much!

IMN logo majestic logo threadwatch logo seochat tools logo