Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I fix this six-sided dice class?

I’m trying to create a Craps game that rolls two six-sided dice using the Dice class below. The issue is, however, that some of the rolls are greater than 6 which ruins the entire functionality of the game. Here is an output example of what I’m talking about:
Come out roll is (3)(12) sum is 15
Enter point Round with Point Value = 15
Roll is (10)(8) with sum 18
Roll is (9)(3) with sum 12
Roll is (4)(5) with sum 9
Roll is (8)(7) with sum 15
Pass Line bet wins 5

import java.util.Random;

public class Dice {
    private int numDice;
    private int numSides;
    private Random random;

    public Dice(int numDice, int numSides) {
        this.numDice = numDice;
        this.numSides = numSides;
        this.random = new Random();
    }

    public int roll() {
        int total = 0;
        for (int i = 0; i < numDice; i++) {
            total += random.nextInt(numSides) + 1;
        }
        return total;
    }
}

Code I’m using in game class from Dice class:

public Game() {
        ## filler
        dice = new Dice(2, 6);
    }

int roll1 = dice.roll();
        int roll2 = dice.roll();
        int sum = roll1 + roll2;
        System.out.println("Come out roll is (" + roll1 + ")(" + roll2 + ") sum is " + sum);

I have to roll two dice for the game. It seems like the two rolls are being added together in the Dice class? I’m not sure.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Your Dice class already includes the functionality to roll the same dice multiple times and return the sum.

dice = new Dice(2, 6);

Here you define that dice should consist of two dice rolls.
When you run

int roll1 = dice.roll();

it will generate two random numbers and return the sum of them.

If you want to manually roll the same single dice multiple times you need to change the constructor call:

dice = Dice(1,6)
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading